網(wǎng)站首頁(yè)百科全書(shū) >正文
多元線性回歸模型(機(jī)器學(xué)習(xí)線性回歸原理介紹和功能實(shí)現(xiàn))
線性回歸(Linear Regression)模型是最簡(jiǎn)單的線性模型之一,很具代表性。本文將詳細(xì)介紹一下機(jī)器學(xué)習(xí)中 線性回歸模型的求解過(guò)程和編碼實(shí)現(xiàn)。
內(nèi)容概要:
什么是線性回歸在幾何意義上,回歸就是找到一條具有代表性的直線或曲線(高維空間的超平面)來(lái)擬合輸入數(shù)據(jù)點(diǎn)和輸出數(shù)據(jù)點(diǎn)。線性回歸 可以理解為找到 用來(lái)擬合輸入數(shù)據(jù)點(diǎn)和輸出數(shù)據(jù)點(diǎn)的 那條具有代表性直線或曲線的過(guò)程。
為了理解線性回歸的概念,我們可以先從一個(gè)實(shí)例來(lái)引入本文的主題。
1 問(wèn)題描述----波士頓房?jī)r(jià)預(yù)測(cè)波士頓房?jī)r(jià)預(yù)測(cè) 是一個(gè)很經(jīng)典的線性回歸案例,這個(gè)案例使用的數(shù)據(jù)集(Boston House Price Dataset)源自 20 世紀(jì) 70 年代中期美國(guó)人口普查局收集的美國(guó)馬薩諸塞州波士頓住房?jī)r(jià)格有關(guān)信息。該數(shù)據(jù)集統(tǒng)計(jì)了當(dāng)?shù)爻擎?zhèn)人均犯罪率、城鎮(zhèn)非零售業(yè)務(wù)比例等。共計(jì) 13 個(gè)指標(biāo)(特征),第 14 個(gè)特征(相當(dāng)于標(biāo)簽信息)給出了住房的中位數(shù)報(bào)價(jià)。先來(lái)看看這組數(shù)據(jù),
特征信息翻譯參考下圖,
2 特征,標(biāo)簽和樣本通過(guò)上面這個(gè)波士頓房?jī)r(jià)預(yù)測(cè)的數(shù)據(jù)集,先引入機(jī)器學(xué)習(xí)中關(guān)于數(shù)據(jù)集的幾個(gè)概念,
特征:輸入變量,即簡(jiǎn)單線性回歸中的 x變量(如顏色,天氣,水果等),在這個(gè)數(shù)據(jù)集中,每一列表示一項(xiàng)特征(最后一列是標(biāo)簽 除外),一共13項(xiàng)特征
標(biāo)簽:我們要預(yù)測(cè)的事物,即簡(jiǎn)單線性回歸中的 y 變量。標(biāo)簽可以是連續(xù)值(如房?jī)r(jià),股市等),可以是離散值(今天周幾,水果好不好吃等),在這個(gè)數(shù)據(jù)集中,最后一列PRICE就是標(biāo)簽
樣本:是指數(shù)據(jù)的特定實(shí)例(樣本包括訓(xùn)練集和測(cè)試集)。在這個(gè)數(shù)據(jù)集中,每一行表示一個(gè)樣本
備注:該數(shù)據(jù)集在卡耐基梅隆大學(xué)統(tǒng)計(jì)與數(shù)據(jù)科學(xué)實(shí)驗(yàn)室或 Kaggle 等網(wǎng)站均可下載。下載后,需要?jiǎng)h除部分額外的數(shù)據(jù)描述信息,并將文件另存為 CSV 格式,然后利用之前介紹的 Pandas 來(lái)讀取數(shù)據(jù)。
另外,在前面介紹的機(jī)器學(xué)習(xí)框架sklearn(scikit-learn)內(nèi)置了這個(gè)數(shù)據(jù)集,無(wú)需另外下載,只要調(diào)用專用的 API 函數(shù)即可導(dǎo)入數(shù)據(jù),詳細(xì)信息可參考這篇文章的介紹。
現(xiàn)在我們的任務(wù)是,找到這些指標(biāo)(特征)與房?jī)r(jià)(目標(biāo))之間的關(guān)系。由于房?jī)r(jià)是連續(xù)變化的實(shí)數(shù),很明顯,這個(gè)任務(wù)屬于回歸分析。為了找到這些指標(biāo)(特征)與房?jī)r(jià)(目標(biāo))之間的關(guān)系,我們需要構(gòu)建模型。
構(gòu)建模型上面這個(gè)表中提供了4個(gè)樣本,每一個(gè)樣本都包含了13個(gè)特征值和一個(gè)標(biāo)簽?,F(xiàn)在我們需要將這個(gè)房?jī)r(jià)預(yù)測(cè)問(wèn)題進(jìn)行一般化描述,為構(gòu)建模型做準(zhǔn)備,
X 表示樣本;
Y 表示 標(biāo)簽;
{x1,x2,x..xn}表示數(shù)據(jù)集中的特征值;
{X(1),X(2),X(3)...X(n)} 表示第幾個(gè)樣本
將波士頓房?jī)r(jià)數(shù)據(jù)集一般化的描述結(jié)果展示如下,
從數(shù)據(jù)集提供的信息,影響波士頓房?jī)r(jià)(標(biāo)簽)的因素有13項(xiàng)(特征值),現(xiàn)在我們希望建立一個(gè)模型,當(dāng)我們輸入這13個(gè)影響房?jī)r(jià)因素的量化值后,模型能夠幫助我們預(yù)測(cè)出房?jī)r(jià)。這個(gè)模型用數(shù)學(xué)公式可以表示為(n=13),
簡(jiǎn)化一下,
xi是我們數(shù)據(jù)集中樣本的特征值, y^ 就是我們的模型預(yù)測(cè)結(jié)果,w和b 就是我們模型的參數(shù),現(xiàn)在構(gòu)建模型的問(wèn)題就轉(zhuǎn)化為如何求解參數(shù)w和b了。
損失函數(shù)(Loss Function)
為了求解模型參數(shù)w和b,需要引入損失函數(shù)的概念。根據(jù)第2章節(jié)構(gòu)建的線性模型,數(shù)據(jù)集中的每一組x(n)樣本 理論上都有對(duì)應(yīng)一個(gè)預(yù)測(cè)值yn^ ,{x1,x2,...,xn }是特征值,表示方式如下,
數(shù)據(jù)集中的每一組樣本 理論上都有一個(gè)標(biāo)簽y和一個(gè)預(yù)測(cè)值y^,參考下圖,
一組樣本對(duì)應(yīng)一個(gè)標(biāo)簽值和一個(gè)預(yù)測(cè)值
我們期望構(gòu)建的模型的預(yù)測(cè)值y^跟真實(shí)值y 差距越小越好,越小說(shuō)明我們構(gòu)建的模型越準(zhǔn)確,
第一個(gè)樣本真實(shí)值與預(yù)測(cè)值的差值
m個(gè)樣本的整體誤差表示如下,
m個(gè)樣本的整體求和表達(dá)式
直接相加有個(gè)問(wèn)題,可能會(huì)因?yàn)檎?fù)值得屬性,誤差可能相消,導(dǎo)致誤差不準(zhǔn)確。需要用平方和,參考表達(dá)式如下,
這樣整體的預(yù)測(cè)值和真實(shí)值得差距就可以用真實(shí)值與預(yù)期值差值的平方求和表示出來(lái)了。這個(gè)差距我們稱為損失。用來(lái)表示預(yù)測(cè)值和真實(shí)值得差距的函數(shù)就稱為損失函數(shù)。
將損失函數(shù)簡(jiǎn)化一下表達(dá)方式,
損失函數(shù)表達(dá)式
代入y^m (第m個(gè)樣本的預(yù)測(cè)值)計(jì)算公式,
損失函數(shù)得表達(dá)式:
損失函數(shù)表達(dá)式
損失函數(shù)關(guān)聯(lián)的參數(shù) 就是w1,w2,...,wn 和b了。我們的目標(biāo)是使得損失函數(shù)值最小,使用得方法就是梯度下降算法。
梯度下降算法(Gradient Descent)到了這一步,現(xiàn)在的問(wèn)題轉(zhuǎn)化為求取min(L(w1,w2,...,wn,b))。求函數(shù)得最小值,我們?cè)诟邤?shù)中一般用的是求導(dǎo),找到極值點(diǎn)然后代入函數(shù)找到最小值。這種通用的方法在特征值比較少的情況一般也沒(méi)有什么影響,但如果特征量很多時(shí),這種方法就不適用了。這種情況下就需要用到這里即將介紹的 另外一種求取函數(shù)最小值得方法------梯度下降算法。
如下坐標(biāo)軸,
橫軸w:
縱軸L(w):
我們的目標(biāo)是找到函數(shù)最小值L(W*),要找到L(W*),首先需要找到W*,那么梯度下降算法是如何找到W*的呢?
方法如下,
1)首先隨機(jī)初始化一個(gè)w0的點(diǎn),求出這個(gè)點(diǎn)的導(dǎo)數(shù)值,從圖中可以看到w0 這個(gè)點(diǎn)的導(dǎo)致值大于0,并且w0>w*,期望下一次要找的w1能往左移,離w*近一點(diǎn)。這里還需要引入一個(gè)參數(shù)----學(xué)習(xí)率。下一個(gè)點(diǎn)w1可以用如下公式來(lái)表示,
學(xué)習(xí)率?是正數(shù),w0處的倒數(shù)也是正數(shù),找到的下一個(gè)點(diǎn)w1比w0要小,在往期望值w* 靠攏。
2)同樣的方法,求取w1的下一個(gè)點(diǎn)w2,
3)重復(fù)操作,直到直到最小的w*。
示例中隨機(jī)初始化的w0在最小值w*的右邊,事實(shí)上w0在w*的左邊,效果是一樣的,w0在左邊時(shí),w0處的導(dǎo)數(shù)值為負(fù),帶入上面的公式,學(xué)習(xí)率為正,下一個(gè)值w1將增大,最終的結(jié)果都是往 w* 靠攏。
學(xué)習(xí)率(Learning rate)正數(shù),決定我們呢每次改變W值 改變多少的值,
學(xué)習(xí)率的選擇
如上圖所示,需要設(shè)置合適的學(xué)習(xí)率,如果學(xué)習(xí)率設(shè)置過(guò)大,w值會(huì)在最優(yōu)解w* 左右兩邊震蕩,無(wú)法到達(dá)最優(yōu)解w*;如果w* 設(shè)置過(guò)來(lái)小,將增大到達(dá)最優(yōu)解w*的計(jì)算次數(shù),造成執(zhí)行效率低下,需要更長(zhǎng)的時(shí)間才能收斂。
所以我們需要找到一個(gè)合適的學(xué)習(xí)率,梯度下降算法才能達(dá)到比較好的效果。
這里順便補(bǔ)充說(shuō)明一下超參數(shù)的概念,模型的參數(shù) 稱為參數(shù)(如這里的w和b),決定模型的參數(shù),稱為超參數(shù),比如這里的學(xué)習(xí)率。
求取損失函數(shù)的最小值回到第3節(jié)損失函數(shù)的表達(dá)式,
w和x 用向量表示,
簡(jiǎn)化后的公式表示如下,
對(duì)w,和b參數(shù)求偏導(dǎo),
然后再用梯度下降算法求取函數(shù)的最優(yōu)解,
上圖展示了一次更新過(guò)程,循環(huán)更新,直到得到最終的最優(yōu)解w1*,w2*,... wn*,b*。通過(guò)梯度下降算法我們找到了模型中的這一組參數(shù),帶入模型就可以對(duì)新樣本的預(yù)測(cè)了。到了這一步,求解線性回歸的模型參數(shù)已完成,可以得到根據(jù)當(dāng)前數(shù)據(jù)集擬合的整體誤差最小的模型了。
線性回歸代碼實(shí)現(xiàn)這里為了演示上述過(guò)程,我們不用框架和庫(kù)文件,通過(guò)編碼的方式實(shí)現(xiàn) y = w1 * x + w2 * (x**2) + b 這個(gè)線性回歸模型的參數(shù)求解。展示用梯度下降算法求解模型參數(shù)的實(shí)現(xiàn)過(guò)程。
1)設(shè)置數(shù)據(jù)
###設(shè)置數(shù)據(jù)
X=[13,13,15,18,11,18,15,13,10,18,17,20.2,23,13,15,17,12,13,12,13,15,17,22,204,28,26,22,27,29,23]y=[18,17,10,18,13,13,15,18,10,19,17,18,20.1,10,15,19,18,14,10,18,16,14,10,18,20.0,20.3,29,21,24,26]
2)顯示數(shù)據(jù)
plt.scatter(X,y)plt.title('DatasetSamples')plt.xlabel('X')plt.ylabel('y')plt.show()
數(shù)據(jù)顯示參考下圖,
3)拆分?jǐn)?shù)據(jù)集
X_train=X[0:20]y_train=y[0:20]n_train=len(X_train)X_test=X[20:]y_test=y[20:]n_test=len(X_test)
4)擬合模型
####Fitmodel:y=w1*x+w2*(x**2)+bepoches=10000w1=-0.1w2=0.1b=0.3lr_w1=0.0lr_w2=0.0lr=0.001forepochinrange(epoches):sum_w1=0.0sum_w2=0.0sum_b=0.0foriinrange(n_train):y_hat=w1*X_train[i]+w2*(X_train[i]**2)+bsum_w1+=(y_train[i]-y_hat)*(-X_train[i])sum_w2+=(y_train[i]-y_hat)*(-X_train[i]**2)sum_b+=(y_train[i]-y_hat)*(-1)#UsingGradientDescenttoupdateparameters(w,b)det_w1=0*sum_w1det_w2=0*sum_w2det_b=0*sum_blr_w1=lr_w1+det_w1**2lr_w2=lr_w2+det_w1**2w1=w1-(1/math.sqrt(lr_w1)*det_w1)w2=w2-(1/math.sqrt(lr_w2)*det_w2)b=b-lr*det_b
5)展示模型擬合的結(jié)果
fig,ax=plt.subplots()ax.plot([iforiinrange(10,25)],[w1*i+w2*(i**2)+bforiinrange(10,25)])ax.scatter(X_train,y_train)plt.title('y=w1*x+w2*x^2+b')plt.legend(('Model','DataPoints'),loc='upperleft')plt.show()
模型展示的效果圖,
6)求解損失
total_loss_train=0foriinrange(n_train):y_hat=y_hat=w1*X_train[i]+w2*(X_train[i]**2)+btotal_loss_train+=(y_hat-y_train[i])**2print("訓(xùn)練集損失值:"+str(total_loss_train))total_loss_test=0foriinrange(n_test):y_hat=y_hat=w1*X_test[i]+w2*(X_test[i]**2)+btotal_loss_test+=(y_hat-y_test[i])**2print("測(cè)試集損失值:"+str(total_loss_train))
求解的損失參考下圖,
總結(jié):
本文通過(guò)經(jīng)典的線性回歸案例---波士頓房?jī)r(jià)預(yù)測(cè),介紹了機(jī)器學(xué)習(xí)中線性回歸的實(shí)現(xiàn)原理,
1)構(gòu)建表示數(shù)據(jù)集中 特征值和標(biāo)簽值之間的關(guān)系的模型,將線性回歸問(wèn)題轉(zhuǎn)換為求參數(shù)wi和b 的問(wèn)題
2)定義損失函數(shù)-----預(yù)測(cè)值與真實(shí)值之間的差距
3)介紹了機(jī)器學(xué)習(xí)中的 求取函數(shù)最小值的算法-----梯度下降算法
4)用梯度下降算法求取損失函數(shù)的最小值,確定參數(shù)wi和b,從而確定模型
5)最后通過(guò)編碼的方式展示了用梯度下降算法求解模型參數(shù)的實(shí)現(xiàn)過(guò)程
版權(quán)說(shuō)明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!
猜你喜歡:
- 2022-06-13硬盤(pán)序列號(hào)識(shí)別廠家(硬盤(pán)序列號(hào)識(shí)別)
- 2022-06-13倉(cāng)央嘉措最美的情詩(shī)(倉(cāng)央嘉措最美的十首情詩(shī))
- 2022-06-13胡歌劉亦菲(胡歌劉亦菲要官宣)
- 2022-06-13薪酬管理制度(3分鐘讓你弄明白其他公司都在用的薪酬制度)
- 2022-06-13不良資產(chǎn)處置(10大不良資產(chǎn)清收處置手段與流程)
- 2022-06-13嘖嘖是什么意思(嘖嘖)
- 2022-06-13天貓假貨(天貓)
最新文章:
- 2022-06-13硬盤(pán)序列號(hào)識(shí)別廠家(硬盤(pán)序列號(hào)識(shí)別)
- 2022-06-13中國(guó)航天紀(jì)念鈔評(píng)級(jí)版(中國(guó)航天紀(jì)念鈔)
- 2022-06-13倉(cāng)央嘉措最美的情詩(shī)(倉(cāng)央嘉措最美的十首情詩(shī))
- 2022-06-13貴人鳥(niǎo)是國(guó)際品牌嗎(貴人鳥(niǎo) 中國(guó)民族運(yùn)動(dòng)品牌)
- 2022-06-13滯銷商品清倉(cāng)(滯銷商品)
- 2022-06-13胡歌劉亦菲(胡歌劉亦菲要官宣)
- 2022-06-13圖標(biāo)設(shè)計(jì)軟件有哪些(圖標(biāo)設(shè)計(jì))
- 2022-06-13吃蟲(chóng)草能增強(qiáng)免疫力嗎(小孩吃蟲(chóng)草可以提高免疫力嗎詳細(xì)介紹)
- 2022-06-13世界奇聞錄視頻全集(世界奇聞大全集)
- 2022-06-13薪酬管理制度(3分鐘讓你弄明白其他公司都在用的薪酬制度)
- 2022-06-13不良資產(chǎn)處置(10大不良資產(chǎn)清收處置手段與流程)
- 2022-06-13microsoft office2003版本免費(fèi)(Microsoft Office 2003)
- 2022-06-13黃黑相間的蜂(黃黑無(wú)墊蜂)
- 2022-06-13嘖嘖是什么意思(嘖嘖)
- 2022-06-13天貓假貨(天貓)
- 熱點(diǎn)推薦
- 熱評(píng)文章
- 隨機(jī)文章
- 名牌十大品牌(名牌 知名品牌)
- 美麗的錯(cuò)誤電影完整版在線觀看(美麗的錯(cuò)誤 2010年由立平主演電影)
- 寒食帖簡(jiǎn)介(寒食帖 同名年卡)
- 滄州大化tdi有限責(zé)任公司地址(滄州大化TDI有限責(zé)任公司)
- 85搴鏂伴椈璺簵(85度C 文一路店)
- 簡(jiǎn)浩省常德市桃源縣鄭佳怡鎮(zhèn)人民政府黨委副書(shū)記鎮(zhèn)長(zhǎng)
- 瑪卡東革阿里咖啡(瑪塔塔咖啡)
- 數(shù)學(xué)作家故事(數(shù)學(xué)家的故事 2009年四川大學(xué)出版社出版的圖書(shū))
- 聯(lián)眾涂料技術(shù)論壇手機(jī)(聯(lián)眾涂料)
- 數(shù)字高壓兆歐表使用方法(數(shù)字高壓兆歐表)