本文先容線性回歸模子,從梯度下降和最小二乘的角度來(lái)求解線性回歸成績(jī),以概率的辦法表明了線性回歸為什么接納平方喪失,然后先容了線性回歸中常用的兩種范數(shù)來(lái)處理過(guò)擬合和矩陣不成逆的情況,分散對(duì)應(yīng)嶺回歸和Lasso回歸,最初思索到線性回歸的范圍性,先容了一種局部加權(quán)線性回歸,增長(zhǎng)其非線性表現(xiàn)才能。
作者 | 文杰
線性回歸
A、線性回歸
假定多數(shù)據(jù)有:
此中
,
。此中m為練習(xí)集樣本數(shù),n為樣本維度,y是樣本的真實(shí)值。線性回歸接納一個(gè)高維的線性函數(shù)來(lái)盡約莫的擬合一切的數(shù)據(jù)點(diǎn),最簡(jiǎn)便的想法就是最小化函數(shù)值與真實(shí)值偏差的平方(概率表明-高斯分布加最大似然估測(cè))。即有如下目標(biāo)函數(shù):
此中線性函數(shù)如下:
構(gòu)建好線性回歸模子的目標(biāo)函數(shù)之后,接下去就是求解目標(biāo)函數(shù)的最優(yōu)解,即一個(gè)優(yōu)化成績(jī)。常用的梯度優(yōu)化辦法都可以拿來(lái)用,這里以梯度下降法來(lái)求解目標(biāo)函數(shù)。
別的,線性回歸也可以從最小二乘法的角度來(lái)看,底下先將樣本表現(xiàn)向量化,,,構(gòu)成如下數(shù)據(jù)矩陣。
那么目標(biāo)函數(shù)向量化情勢(shì)如下:
可以看出目標(biāo)函數(shù)是一個(gè)凸二次方案成績(jī),其最優(yōu)解在導(dǎo)數(shù)為0處取到。
值得注意的上式中存在盤算矩陣的逆,尋常來(lái)講當(dāng)樣本數(shù)大于數(shù)據(jù)維度時(shí),矩陣可逆,可以接納最小二乘法求得目標(biāo)函數(shù)的閉式解。當(dāng)數(shù)據(jù)維度大于樣本數(shù)時(shí),矩戰(zhàn)線性干系,不成逆。此時(shí)最小化目標(biāo)函數(shù)解不唯一,且十分多,出于如此一種情況,我們可以思索奧卡姆剃刀準(zhǔn)則來(lái)簡(jiǎn)化模子繁復(fù)度,使其不必要的特性對(duì)應(yīng)的w為0。以是引入正則項(xiàng)使得模子中w非0個(gè)數(shù)最少。固然,嶺回歸,lasso回歸的最基本的目標(biāo)不是處理不成逆成績(jī),而是避免過(guò)擬合。
B、概率表明
喪失函數(shù)與最小二乘法接納最小化平方和的概率表明。假定模子猜測(cè)值與真實(shí)值的偏差為,那么猜測(cè)值
與真實(shí)值
之間有如下干系:
依據(jù)中央極限定理,當(dāng)一個(gè)事變與很多獨(dú)立隨機(jī)變量有關(guān),該事變聽從正態(tài)分布 。尋常來(lái)說(shuō),一連值我們都傾向于假定聽從正態(tài)分布。假定每個(gè)樣本的偏差獨(dú)立同分布均值為0,方差為σ的高斯分布
,以是有:
即表現(xiàn)滿意以均值為,方差為的高斯分布。
由最大似然估測(cè)有:
嶺回歸和Lasso回歸
嶺回歸的目標(biāo)函數(shù)在尋常的線性回歸的基本上到場(chǎng)了正則項(xiàng),在確保最佳擬合偏差的同時(shí),使得參數(shù)盡約莫的“簡(jiǎn)便”,使得模子的泛化才能強(qiáng)(即不外分信賴從練習(xí)數(shù)據(jù)中學(xué)到的知識(shí))。正則項(xiàng)尋常接納一,二范數(shù),使得模子更具有泛化性,同時(shí)可以處理線性回歸中不成逆情況。
其迭代優(yōu)化函數(shù)如下:
別的從最小二乘的角度來(lái)看,經(jīng)過(guò)引入二范正則項(xiàng),使其主對(duì)角線元從來(lái)欺壓矩陣可逆。
Lasso回歸接納一范數(shù)來(lái)束縛,使參數(shù)非零個(gè)數(shù)最少。而Lasso和嶺回歸的區(qū)別很好了解,在優(yōu)化歷程中,最優(yōu)解為函數(shù)等值線與束縛空間的交集,正則項(xiàng)可以看作是束縛空間。可以看出二范的束縛空間是一個(gè)球形,而一范的束縛空間是一個(gè)方形,這也就是二范會(huì)取得很多參數(shù)接近0的值,而一范則盡約豈非零參數(shù)最少。
值得注意的是線性模子的表現(xiàn)才能僅限,但是并不一定表現(xiàn)線性模子只能處理線性分布的數(shù)據(jù)。這里有兩種常用的線性模子非線性化。關(guān)于外表的線性函數(shù)的布局,我們可以看出模子在以
的坐標(biāo)上是線性的,但是并不表現(xiàn)線性的模子就一定只能用于線性分布成績(jī)上。假定我們僅有一個(gè)特性
,而實(shí)踐上回歸值是
等,我們相反可以接納線性模子,由于我們完全可以把輸入空間映射到高維空間
,但是這也是查究法以及PCA空間變動(dòng)的一種頭腦,但凡對(duì)輸入空間舉行線性,非線性的變動(dòng),都是把輸入空間映射到特性空間的頭腦,以是只必要把非線性成績(jī)轉(zhuǎn)化為線性成績(jī)即可。別的一種是局部線性頭腦,即對(duì)每一個(gè)樣本構(gòu)建一個(gè)加權(quán)的線性模子。
局部加權(quán)線性回歸
思索到線性回歸的表現(xiàn)才能僅限,約莫顯現(xiàn)欠擬合征象。局部加權(quán)線性回歸為每一個(gè)待猜測(cè)的點(diǎn)構(gòu)建一個(gè)加權(quán)的線性模子。其加權(quán)的辦法是依據(jù)猜測(cè)點(diǎn)與數(shù)據(jù)會(huì)合點(diǎn)的距離來(lái)為數(shù)據(jù)會(huì)合的點(diǎn)賦權(quán)重,當(dāng)某點(diǎn)距離猜測(cè)點(diǎn)較遠(yuǎn)時(shí),其權(quán)重較小,反之較大。由于這種權(quán)重的機(jī)制引入使得局部加權(quán)線性回歸產(chǎn)生了一種局部分段擬合的后果。由于該辦法關(guān)于每一個(gè)猜測(cè)點(diǎn)構(gòu)建一個(gè)加權(quán)線性模子,都要重新盤算與數(shù)據(jù)會(huì)合一切點(diǎn)的距離來(lái)確定權(quán)重值,進(jìn)而確定針對(duì)該猜測(cè)點(diǎn)的線性模子,盤算本錢高,同時(shí)為了完成無(wú)參估測(cè)來(lái)盤算權(quán)重,必要存儲(chǔ)整個(gè)數(shù)據(jù)集。
局部加權(quán)線性回歸,在線性回歸基本上引入權(quán)重,其目標(biāo)函數(shù)(底下的目標(biāo)函數(shù)是針對(duì)一個(gè)猜測(cè)樣本的)如下:
尋常選擇底下的權(quán)重函數(shù),權(quán)重函數(shù)選擇并非由于其相似于高斯函數(shù),而是依據(jù)數(shù)據(jù)分布的特性,但權(quán)重函數(shù)的拔取并不一定依托于數(shù)據(jù)特性。
此中是待猜測(cè)的一個(gè)數(shù)據(jù)點(diǎn)。
關(guān)于外表的目標(biāo)函數(shù),我們的目標(biāo)相反是求解使得喪失函數(shù)最小化,相反局部加權(quán)線性回歸可以接納梯度的辦法,也可以從最小二乘法的角度給出閉式解。
此中是對(duì)角矩陣,
。
線性回歸中心頭腦最小化平方偏差,可以從最小化喪失函數(shù)和最小二乘角度來(lái)看,優(yōu)化歷程可以接納梯度辦法和閉式解。在閉式解成績(jī)中必要注意矩陣可逆成績(jī)。思索到過(guò)擬合和欠擬合成績(jī),有嶺回歸和lasso回歸來(lái)回頭避免過(guò)擬合,局部加權(quán)線性回歸經(jīng)過(guò)加權(quán)完成非線性表現(xiàn)。
代碼實(shí)戰(zhàn)
A、線性回歸
/**
線性回歸函數(shù)的完成,思索尋常的線性回歸,最小平方和作為喪失函數(shù),則目標(biāo)函數(shù)是一個(gè)無(wú)束縛的凸二次方案成績(jī),
由凸二次方案成績(jī)的極小值在導(dǎo)數(shù)為0處取到,且極小值為全局最小值,且有閉式解。依據(jù)數(shù)學(xué)表達(dá)式完成矩陣之間的運(yùn)算求得參數(shù)w。
**/
intregression(Matrix x,Matrix y)
{
Matrix xT=x.transposeMatrix;
Matrix xTx=xTx.multsMatrix(xT,x);
Matrix xTx_1=xTx.niMatrix;
Matrix xTx_1xT=xTx_1xT.multsMatrix(xTx_1,xT);
Matrix ws;
ws=ws.multsMatrix(xTx_1xT,y);
cout<<"ws"<<endl;
ws.print;
return 0;
}
B、嶺回歸和Lasso回歸
/**
底下的嶺回歸函數(shù)只是在尋常的線性回歸函數(shù)的基本上在對(duì)角線上引入了嶺的看法,不僅有處理矩陣不成逆的線性,相反也有正則項(xiàng)的目標(biāo),
接納常用的二范數(shù)就取得了直接引入lam的情勢(shì)。
**/
intridgeRegres(Matrix x,Matrix y,double lam)
{
Matrix xT=x.transposeMatrix;
Matrix xTx=xTx.multsMatrix(xT,x);
Matrix denom(xTx.row,xTx.col,lam,"diag");
xTx=xTx.addMatrix(xTx,denom);
Matrix xTx_1=xTx.niMatrix;
Matrix xTx_1xT=xTx_1xT.multsMatrix(xTx_1,xT);
Matrix ws=ws.multsMatrix(xTx_1xT,y);
cout<<"ws"<<endl;
ws.print;
return 0;
}
C、局部加權(quán)線性回歸
/**
局部加權(quán)線性回歸是在線性回歸的基本上對(duì)每一個(gè)測(cè)試樣本(練習(xí)的時(shí)分就是每一個(gè)練習(xí)樣本)在其已有的樣本舉行一個(gè)加權(quán)擬合,
權(quán)重的確定可以經(jīng)過(guò)一個(gè)核來(lái)盤算,常用的有高斯核(離測(cè)試樣本越近,權(quán)重越大,反之越小),如此對(duì)每一個(gè)測(cè)試樣本就取得了不一樣的
權(quán)重向量,以是最初得出的擬合曲線不再是線性的了,如此就增長(zhǎng)的模子的繁復(fù)度來(lái)更好的擬合非線性數(shù)據(jù)。
**/
//必要注意的是局部加權(quán)線性回歸是對(duì)每一個(gè)樣本舉行權(quán)重盤算,以是關(guān)于每一個(gè)樣本都有一個(gè)權(quán)重w,以是底下的函數(shù)只是局部線性回歸的一個(gè)主要幫助函數(shù)
Matrix locWeightLineReg(Matrix test,Matrix x,Matrix y,const double &k)
{
Matrix w(x.row,x.row,0,"T");
double temp=0;
int i,j;
/**
依據(jù)測(cè)試樣本點(diǎn)與整個(gè)樣本的距離以前選擇的核確定局部加權(quán)矩陣,接納對(duì)角線上為局部加權(quán)值
**/
for(i=0;i<x.row;i++)
{
temp=0;
for(j=0;j<x.col;j++)
{
temp+=(test.data[0][j]-x.data[i][j])*(test.data[0][j]-x.data[i][j]);
}
w.data[i][i]=exp(temp/-2.0*k*k);
}
Matrix xT=x.transposeMatrix;
Matrix wx=wx.multsMatrix(w,x);
Matrix xTwx;
xTwx=xTwx.multsMatrix(xT,wx);
Matrix xTwx_1;
xTwx_1=xTwx.niMatrix;
Matrix xTwx_1xT;
xTwx_1xT=xTwx_1xT.multsMatrix(xTwx_1,xT);
Matrix xTwx_1xTw;
xTwx_1xTw=xTwx_1xTw.multsMatrix(xTwx_1xT,w);
Matrix ws = xTwx_1xTw * y;
return ws;
}
具體代碼:https://github.com
/myazi/myLearn/blob/master/LineReg.cpp
聲明:本文為群眾號(hào)「 AI小白入門」投稿,版權(quán)歸作者一切。
【END】
版權(quán)聲明:本文來(lái)自互聯(lián)網(wǎng)整理發(fā)布,如有侵權(quán),聯(lián)系刪除
原文鏈接:http://www.freetextsend.comhttp://www.freetextsend.com/wangluozixun/49921.html