登陆

极彩娱乐登录-【机器学习】一文读懂线性回归、岭回归和Lasso回归

admin 2019-11-12 239人围观 ,发现0个评论

本文介绍线性回归模型,从梯度下降和最小二乘的视点来求解线性回归问题,以概率的办法解说了线性回归为什么选用平方丢失,然后介绍了线性回归中常用的两种范数来处理过拟合和矩阵不可逆的状况,别离对应岭回归和Lasso回归,最终考虑到线性回归的局限性,介绍了一种部分加权线性回归,添加其非线性表明才能

线性回归

A、线性回归

假定稀有据有:

其间

,

。其间m为练习集样本数,n为样本维度,y是样本的实在值。线性回归选用一个高维的线性函数来尽或许的拟合一切的数据点,最简略的主意便是最小化函数值与实在值差错的平方(概率解说-高斯散布加最大似然估量)。即有如下方针函数:

其间线性函数如下:

构建好线性回归模型的方针函数之后,接下来便是求解方针函数的最优解,即一个优化问题。常用的梯度优化办法都能够拿来用,这儿以梯度下降法来求解方针函数。

别的,线性回归也能够从最小二乘法的视点来看,下面先将样本表明向量化,

,构成如下数据矩阵。

那么方针函数向量化办法如下:

能够看出方针函数是一个凸二次规划问题,其最优解在导数为0处取到。

值得留意的上式中存在核算矩阵的逆,一般来讲当样本数大于数据维度时回合制手游,矩阵可逆,能够选用最小二乘法求得方针函数的闭式解。当数据维度大于样本数时,矩阵线性相关,不可逆。此刻最小化方针函数解不只有,且十分多,出于这样一种状况,咱们能够考虑奥卡姆剃刀原则来简化模型复杂度,使其不必要的特征极彩娱乐登录-【机器学习】一文读懂线性回归、岭回归和Lasso回归对应的w为0。所以引进正则项使得模型中w非0个数最少。当然,岭回归,lasso回归的最底子的意图不是处理不可逆问题,而是避免过拟合。

B、概率解说

丢失函数与最小二乘法选用最小化平方和的概率解说。假定模型猜测值与实在值的差错为

,那么猜测值

与实在值

之间有如下联系:

依据中心极限定理,当一个事情与许多独立随机变量有关,该事情遵守正态散布 。一般来说,接连值咱们都倾向于假定遵守正态散布。假定每个样本的差错

独立同散布均值为0,方差为的高斯散布

,所以有:

即表明

满足以均值为

,方差为的高斯散布。

由最大似然估量有:

岭回归和 Lasso 回归

岭回归的方针函数在一般的线性回归的基础上加入了正则项,在确保最佳拟合差错的一起,使得参数尽或许的“简略”,使得模型的泛化才能强(即不过分相信从练习数据中学到的常识)。正则项一般选用一,二范数,使得模型更具有泛化性,一起能够处理线性回归中不可逆状况。

其迭代优化函数如下:

别的从最小二乘的视点来看,经过引进二范正则项,使其主对角线元从来强制矩阵可逆。

Lasso回归选用一范数来束缚,使参数非零个数最少。而Lasso和岭回归的差异很好了解,在优化进程中,最优解为函数等值线与束缚空间的交集,正则项能够看作是束缚空间。能够看出二范的束缚空间是一个球形,而一范的束缚空间是一个方形,这也便是二范会得到许多参数挨近0的值,而一范则尽或许非零参数最少。

值得留意的是线性模型的表明才能有限,可是并不必定表明线性模型只能处理线性散布的数据。这儿有两种常用的线性模型非线性化。关于上面的线性函数的结构,咱们能够看出模型在以

的坐标上是线性的,可是并不表明线性的模型就必定只能用于线性散布问题上。

假设咱们只要一个特征,而实际上回归值是

等,咱们相同能够选用线性模型,由于咱们极彩娱乐登录-【机器学习】一文读懂线性回归、岭回归和Lasso回归完全能够把输入空间映射到高维空间

,其实这也是核办法以及PCA空间改换的一种思维,但凡对输入空间进行线性,非线性的改换,都是把输入空间映射到特征空间的思维,所以只需求把非线性问题转化为线性问题即可。别的一种是部分线性思维,即对每一个样本构建一个加权的线性模型。

部分加权线性回归

考虑到线性回归的表明才能有限,或许呈现欠拟合现象。部分加权线性回归为每一个待猜测的点构建一个加权的线性模型。其加权的办法是依据猜测点与数据会集点的间隔来为数据会集的点赋权重,当某点间隔猜测点较远时,其权重较小,反之较大。由于这种权重的机制引进使得部分加权线性回归产生了一种部分分段拟合的作用。

由于该办法关于每一个猜测点构建一个加权线性模型,都要从头核算与数据会集一切点的间隔来确认权重值,从而确认针对该猜测点的线性模型,核算成本高,一起为了完成无参估量来核算权重,需求存储整个数据集。

部分加权线性回归,在线性回归基础上引进权重,其方针函数(下面的方针函数是针对一个猜测样本的)如下:

一般挑选下面的权重函数,权重函数挑选并非由于其类似于高斯函数,而是依据数极彩娱乐登录-【机器学习】一文读懂线性回归、岭回归和Lasso回归据散布的特性,但权重函数的选取并不必定依赖于数据特性。

其间是待猜测的一个数据点。

关于上面的方针函数,咱们的方针相同是求解使得丢失函数最小化,相同部分加权线性回归能够选用梯度的办法,也能够从最小二乘法的视点给出闭式解。

其间是对角矩阵,

线性回归中心思维最小化平方差错,能够从最小化丢失函数和最小二乘视点来看,优化进程能够选用梯度办法和闭式解。在闭式解问题中需求留意矩阵可逆问题。考虑到过拟合和欠拟合问题,有岭回归和lasso回归来避免过拟合,部分加权线性回归经过加权完成非线性表明。

代码实战

A、线性回归

/**

线性回归函数的完成,考虑一般的线性回归,最小平方和作为丢失函数,则方针函数是一个无束缚的凸二次规划问题,

由凸二次规划问题的极小值在导数为0处取到,且极小值为大局最小值,且有闭式解。依据数学表达式完成矩阵之间的运算求得参数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;

return0;

}

B、岭回归和 Lasso 回归

/**

下面的岭回归函数仅仅在一般的线性回归函数的基础上在对角线上引进了岭的概念,不只有处理矩阵不可逆的线性,相同也有正则项的意图,

选用常用的二范数就得到了直接引进lam的办法。

**/

intridgeRegres(Matrix x,Matrix y,doublelam)

{

Matrix xT=x.transposeMatr极彩娱乐登录-【机器学习】一文读懂线性回归、岭回归和Lasso回归ix;

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;

return0;

}

C、部分加权线性回归

/**

部分加权线性回归是在线性回归的基础上对每一个测验样本(练习的时分便是每一个练习样本)在其已有的样本进行一个加权拟合,

权重的确认能够经过一个核来核算,常用的有高斯核(离测验样本越近,权重越大,反之越小),这样对每一个测验样本就得到了不一样的

权重向量,所以最终得出的拟合曲线不再是线性的了,这样就添加的模型的复杂度来更好的拟合非线性数据。

**/

//需求留意的是部分加权线性回归是对每一个样本进行权重核算,所以关于每一个样本都有一个权重w,所以下面的函数仅仅部分线性回归的一个首要辅佐函数

Matrix locWeightLineReg(Matrix test,Matrix x,Matrix y,constdouble&k)

{

Matrix w(x.r极彩娱乐登录-【机器学习】一文读懂线性回归、岭回归和Lasso回归ow,x.row,0,"T");

doubletemp= 0;

inti,j;

/**

依据测验样本点与整个样本的间隔现已挑选的核确认部分加权矩阵,选用对角线上为部分加权值

**/

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.ni极彩娱乐登录-【机器学习】一文读懂线性回归、岭回归和Lasso回归Matrix;

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;

returnws;

}

具体代码:

https://github.com/myazi/myLearn/blob/master/LineReg.cpp

极彩娱乐登录-营商环境“优”无止境

2019-12-06
  •   尼泊尔上崔树里3A水电站位于拉苏瓦县和努瓦果德县之间的德里苏利河上,装设2尼泊尔总理举行仪式庆祝中企承建水电站顺畅发电台机组,总装机容量60兆瓦,

  • 尼泊尔总理举行仪式庆祝中企承建水电站顺畅发电

    2019-12-06
  • 极彩娱乐登录-《2019中国地产年代百强榜》获奖名单重磅发布

    极彩娱乐登录-《2019中国地产年代百强榜》获奖名单重磅发布

    2019-12-06
  •   此外,朝阳区深入推行

    向阳企业开办进入“1年代”

    2019-12-06
  • 请关注微信公众号
    微信二维码
    不容错过
    Powered By Z-BlogPHP