網(wǎng)站首頁百科全書 >正文
多元線性回歸模型(機(jī)器學(xué)習(xí)線性回歸原理介紹和功能實現(xiàn))
線性回歸(Linear Regression)模型是最簡單的線性模型之一,很具代表性。本文將詳細(xì)介紹一下機(jī)器學(xué)習(xí)中 線性回歸模型的求解過程和編碼實現(xiàn)。
內(nèi)容概要:
什么是線性回歸在幾何意義上,回歸就是找到一條具有代表性的直線或曲線(高維空間的超平面)來擬合輸入數(shù)據(jù)點和輸出數(shù)據(jù)點。線性回歸 可以理解為找到 用來擬合輸入數(shù)據(jù)點和輸出數(shù)據(jù)點的 那條具有代表性直線或曲線的過程。
為了理解線性回歸的概念,我們可以先從一個實例來引入本文的主題。
1 問題描述----波士頓房價預(yù)測波士頓房價預(yù)測 是一個很經(jīng)典的線性回歸案例,這個案例使用的數(shù)據(jù)集(Boston House Price Dataset)源自 20 世紀(jì) 70 年代中期美國人口普查局收集的美國馬薩諸塞州波士頓住房價格有關(guān)信息。該數(shù)據(jù)集統(tǒng)計了當(dāng)?shù)爻擎?zhèn)人均犯罪率、城鎮(zhèn)非零售業(yè)務(wù)比例等。共計 13 個指標(biāo)(特征),第 14 個特征(相當(dāng)于標(biāo)簽信息)給出了住房的中位數(shù)報價。先來看看這組數(shù)據(jù),
特征信息翻譯參考下圖,
2 特征,標(biāo)簽和樣本通過上面這個波士頓房價預(yù)測的數(shù)據(jù)集,先引入機(jī)器學(xué)習(xí)中關(guān)于數(shù)據(jù)集的幾個概念,
特征:輸入變量,即簡單線性回歸中的 x變量(如顏色,天氣,水果等),在這個數(shù)據(jù)集中,每一列表示一項特征(最后一列是標(biāo)簽 除外),一共13項特征
標(biāo)簽:我們要預(yù)測的事物,即簡單線性回歸中的 y 變量。標(biāo)簽可以是連續(xù)值(如房價,股市等),可以是離散值(今天周幾,水果好不好吃等),在這個數(shù)據(jù)集中,最后一列PRICE就是標(biāo)簽
樣本:是指數(shù)據(jù)的特定實例(樣本包括訓(xùn)練集和測試集)。在這個數(shù)據(jù)集中,每一行表示一個樣本
備注:該數(shù)據(jù)集在卡耐基梅隆大學(xué)統(tǒng)計與數(shù)據(jù)科學(xué)實驗室或 Kaggle 等網(wǎng)站均可下載。下載后,需要刪除部分額外的數(shù)據(jù)描述信息,并將文件另存為 CSV 格式,然后利用之前介紹的 Pandas 來讀取數(shù)據(jù)。
另外,在前面介紹的機(jī)器學(xué)習(xí)框架sklearn(scikit-learn)內(nèi)置了這個數(shù)據(jù)集,無需另外下載,只要調(diào)用專用的 API 函數(shù)即可導(dǎo)入數(shù)據(jù),詳細(xì)信息可參考這篇文章的介紹。
現(xiàn)在我們的任務(wù)是,找到這些指標(biāo)(特征)與房價(目標(biāo))之間的關(guān)系。由于房價是連續(xù)變化的實數(shù),很明顯,這個任務(wù)屬于回歸分析。為了找到這些指標(biāo)(特征)與房價(目標(biāo))之間的關(guān)系,我們需要構(gòu)建模型。
構(gòu)建模型上面這個表中提供了4個樣本,每一個樣本都包含了13個特征值和一個標(biāo)簽?,F(xiàn)在我們需要將這個房價預(yù)測問題進(jìn)行一般化描述,為構(gòu)建模型做準(zhǔn)備,
X 表示樣本;
Y 表示 標(biāo)簽;
{x1,x2,x..xn}表示數(shù)據(jù)集中的特征值;
{X(1),X(2),X(3)...X(n)} 表示第幾個樣本
將波士頓房價數(shù)據(jù)集一般化的描述結(jié)果展示如下,
從數(shù)據(jù)集提供的信息,影響波士頓房價(標(biāo)簽)的因素有13項(特征值),現(xiàn)在我們希望建立一個模型,當(dāng)我們輸入這13個影響房價因素的量化值后,模型能夠幫助我們預(yù)測出房價。這個模型用數(shù)學(xué)公式可以表示為(n=13),
簡化一下,
xi是我們數(shù)據(jù)集中樣本的特征值, y^ 就是我們的模型預(yù)測結(jié)果,w和b 就是我們模型的參數(shù),現(xiàn)在構(gòu)建模型的問題就轉(zhuǎn)化為如何求解參數(shù)w和b了。
損失函數(shù)(Loss Function)
為了求解模型參數(shù)w和b,需要引入損失函數(shù)的概念。根據(jù)第2章節(jié)構(gòu)建的線性模型,數(shù)據(jù)集中的每一組x(n)樣本 理論上都有對應(yīng)一個預(yù)測值yn^ ,{x1,x2,...,xn }是特征值,表示方式如下,
數(shù)據(jù)集中的每一組樣本 理論上都有一個標(biāo)簽y和一個預(yù)測值y^,參考下圖,
一組樣本對應(yīng)一個標(biāo)簽值和一個預(yù)測值
我們期望構(gòu)建的模型的預(yù)測值y^跟真實值y 差距越小越好,越小說明我們構(gòu)建的模型越準(zhǔn)確,
第一個樣本真實值與預(yù)測值的差值
m個樣本的整體誤差表示如下,
m個樣本的整體求和表達(dá)式
直接相加有個問題,可能會因為正負(fù)值得屬性,誤差可能相消,導(dǎo)致誤差不準(zhǔn)確。需要用平方和,參考表達(dá)式如下,
這樣整體的預(yù)測值和真實值得差距就可以用真實值與預(yù)期值差值的平方求和表示出來了。這個差距我們稱為損失。用來表示預(yù)測值和真實值得差距的函數(shù)就稱為損失函數(shù)。
將損失函數(shù)簡化一下表達(dá)方式,
損失函數(shù)表達(dá)式
代入y^m (第m個樣本的預(yù)測值)計算公式,
損失函數(shù)得表達(dá)式:
損失函數(shù)表達(dá)式
損失函數(shù)關(guān)聯(lián)的參數(shù) 就是w1,w2,...,wn 和b了。我們的目標(biāo)是使得損失函數(shù)值最小,使用得方法就是梯度下降算法。
梯度下降算法(Gradient Descent)到了這一步,現(xiàn)在的問題轉(zhuǎn)化為求取min(L(w1,w2,...,wn,b))。求函數(shù)得最小值,我們在高數(shù)中一般用的是求導(dǎo),找到極值點然后代入函數(shù)找到最小值。這種通用的方法在特征值比較少的情況一般也沒有什么影響,但如果特征量很多時,這種方法就不適用了。這種情況下就需要用到這里即將介紹的 另外一種求取函數(shù)最小值得方法------梯度下降算法。
如下坐標(biāo)軸,
橫軸w:
縱軸L(w):
我們的目標(biāo)是找到函數(shù)最小值L(W*),要找到L(W*),首先需要找到W*,那么梯度下降算法是如何找到W*的呢?
方法如下,
1)首先隨機(jī)初始化一個w0的點,求出這個點的導(dǎo)數(shù)值,從圖中可以看到w0 這個點的導(dǎo)致值大于0,并且w0>w*,期望下一次要找的w1能往左移,離w*近一點。這里還需要引入一個參數(shù)----學(xué)習(xí)率。下一個點w1可以用如下公式來表示,
學(xué)習(xí)率?是正數(shù),w0處的倒數(shù)也是正數(shù),找到的下一個點w1比w0要小,在往期望值w* 靠攏。
2)同樣的方法,求取w1的下一個點w2,
3)重復(fù)操作,直到直到最小的w*。
示例中隨機(jī)初始化的w0在最小值w*的右邊,事實上w0在w*的左邊,效果是一樣的,w0在左邊時,w0處的導(dǎo)數(shù)值為負(fù),帶入上面的公式,學(xué)習(xí)率為正,下一個值w1將增大,最終的結(jié)果都是往 w* 靠攏。
學(xué)習(xí)率(Learning rate)正數(shù),決定我們呢每次改變W值 改變多少的值,
學(xué)習(xí)率的選擇
如上圖所示,需要設(shè)置合適的學(xué)習(xí)率,如果學(xué)習(xí)率設(shè)置過大,w值會在最優(yōu)解w* 左右兩邊震蕩,無法到達(dá)最優(yōu)解w*;如果w* 設(shè)置過來小,將增大到達(dá)最優(yōu)解w*的計算次數(shù),造成執(zhí)行效率低下,需要更長的時間才能收斂。
所以我們需要找到一個合適的學(xué)習(xí)率,梯度下降算法才能達(dá)到比較好的效果。
這里順便補(bǔ)充說明一下超參數(shù)的概念,模型的參數(shù) 稱為參數(shù)(如這里的w和b),決定模型的參數(shù),稱為超參數(shù),比如這里的學(xué)習(xí)率。
求取損失函數(shù)的最小值回到第3節(jié)損失函數(shù)的表達(dá)式,
w和x 用向量表示,
簡化后的公式表示如下,
對w,和b參數(shù)求偏導(dǎo),
然后再用梯度下降算法求取函數(shù)的最優(yōu)解,
上圖展示了一次更新過程,循環(huán)更新,直到得到最終的最優(yōu)解w1*,w2*,... wn*,b*。通過梯度下降算法我們找到了模型中的這一組參數(shù),帶入模型就可以對新樣本的預(yù)測了。到了這一步,求解線性回歸的模型參數(shù)已完成,可以得到根據(jù)當(dāng)前數(shù)據(jù)集擬合的整體誤差最小的模型了。
線性回歸代碼實現(xiàn)這里為了演示上述過程,我們不用框架和庫文件,通過編碼的方式實現(xiàn) y = w1 * x + w2 * (x**2) + b 這個線性回歸模型的參數(shù)求解。展示用梯度下降算法求解模型參數(shù)的實現(xiàn)過程。
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("測試集損失值:"+str(total_loss_train))
求解的損失參考下圖,
總結(jié):
本文通過經(jīng)典的線性回歸案例---波士頓房價預(yù)測,介紹了機(jī)器學(xué)習(xí)中線性回歸的實現(xiàn)原理,
1)構(gòu)建表示數(shù)據(jù)集中 特征值和標(biāo)簽值之間的關(guān)系的模型,將線性回歸問題轉(zhuǎn)換為求參數(shù)wi和b 的問題
2)定義損失函數(shù)-----預(yù)測值與真實值之間的差距
3)介紹了機(jī)器學(xué)習(xí)中的 求取函數(shù)最小值的算法-----梯度下降算法
4)用梯度下降算法求取損失函數(shù)的最小值,確定參數(shù)wi和b,從而確定模型
5)最后通過編碼的方式展示了用梯度下降算法求解模型參數(shù)的實現(xiàn)過程
版權(quán)說明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!
- 上一篇:硬盤序列號識別廠家(硬盤序列號識別)
- 下一篇:最后一頁
猜你喜歡:
- 2022-06-13硬盤序列號識別廠家(硬盤序列號識別)
- 2022-06-13倉央嘉措最美的情詩(倉央嘉措最美的十首情詩)
- 2022-06-13胡歌劉亦菲(胡歌劉亦菲要官宣)
- 2022-06-13薪酬管理制度(3分鐘讓你弄明白其他公司都在用的薪酬制度)
- 2022-06-13不良資產(chǎn)處置(10大不良資產(chǎn)清收處置手段與流程)
- 2022-06-13嘖嘖是什么意思(嘖嘖)
- 2022-06-13天貓假貨(天貓)
最新文章:
- 2022-06-13硬盤序列號識別廠家(硬盤序列號識別)
- 2022-06-13中國航天紀(jì)念鈔評級版(中國航天紀(jì)念鈔)
- 2022-06-13倉央嘉措最美的情詩(倉央嘉措最美的十首情詩)
- 2022-06-13貴人鳥是國際品牌嗎(貴人鳥 中國民族運(yùn)動品牌)
- 2022-06-13滯銷商品清倉(滯銷商品)
- 2022-06-13胡歌劉亦菲(胡歌劉亦菲要官宣)
- 2022-06-13圖標(biāo)設(shè)計軟件有哪些(圖標(biāo)設(shè)計)
- 2022-06-13吃蟲草能增強(qiá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黃黑相間的蜂(黃黑無墊蜂)
- 2022-06-13嘖嘖是什么意思(嘖嘖)
- 2022-06-13天貓假貨(天貓)
- 熱點推薦
- 熱評文章
- 隨機(jī)文章