来源 | AI小白入门
作者 | 文杰
编辑 | yuquanle
完整代码见:原文链接

1. 线性回归

1.1 线性回归

​ 假设有数据有T={(x(1),y(1)),...,(x(i),y(i)),...,(x(m),y(m))}T=\left \{ \left ( x^{(1)},y^{(1)} \right ) ,...,\left ( x^{(i)},y^{(i)} \right ) ,..., \left ( x^{(m)},y^{(m)} \right ) \right \}T={(x(1),y(1)),...,(x(i),y(i)),...,(x(m),y(m))}其中x(i)={x1(i),..,xj(i),...,xn(i)}x^{(i)}=\left \{ x_{1}^{(i)},..,x_{j}^{(i)},...,x_{n}^{(i)} \right \}x(i)={x1(i)​,..,xj(i)​,...,xn(i)​}, yi∈Ry^{i}\in \mathbf{R}yi∈R。其中m为训练集样本数,n为样本维度,y是样本的真实值。线性回归采用一个多维的线性函数来尽可能的拟合所有的数据点,最简单的想法就是最小化函数值与真实值误差的平方(概率解释-高斯分布加最大似然估计)。即有如下目标函数:

J(θ)=12∑i=1m(hθ(x(i))−y(i))2min⁡θJ(θ)J\left ( \theta \right )=\frac{1}{2}\sum_{i=1}^{m}\left ( h_{\theta } ( x^{(i)})-y^{(i)} \right )^{2}\\ \min_{\theta }J\left ( \theta \right ) J(θ)=21​i=1∑m​(hθ​(x(i))−y(i))2θmin​J(θ)

其中线性函数如下:

hθ(x(i))=θ0+θ1x1(i)+θ2x2(i)+..+θnxn(i)=∑j=1nθjxj(i)=θTx(i)h_{\theta }\left ( x^{(i)}\right )=\theta _{0} + \theta _{1}x_{1}^{\left (i \right )}+ \theta _{2}x_{2}^{\left (i \right )}+..+ \theta _{n}x_{n}^{\left (i \right )}\\ =\sum_{j=1}^{n}\theta _{j}x_{j}^{\left (i \right )}\\ =\mathbf{\theta}^{T} \mathbf{x}^{(i)} hθ​(x(i))=θ0​+θ1​x1(i)​+θ2​x2(i)​+..+θn​xn(i)​=j=1∑n​θj​xj(i)​=θTx(i)

​ 构建好线性回归模型的目标函数之后,接下来就是求解目标函数的最优解,即一个优化问题。常用的梯度优化方法都可以拿来用,这里以梯度下降法来求解目标函数。

θj:=θj−α∂∂θjJ(θ)=θj−α∂∂θj12∑i=1m(hθ(x(i))−y(i))2=θj−α∑i=1m(hθ(x(i))−y(i))∂∂θj=θj−α∑i=1m(hθ(x(i))−y(i))xj(i)\theta _{j}:=\theta _{j}-\alpha \frac{\partial }{\partial\theta _{j}}J(\theta )\\ =\theta _{j}-\alpha \frac{\partial }{\partial\theta _{j}}\frac{1}{2}\sum_{i=1}^{m}\left (h_{\theta }\left ( x^{(i)}\right )-y^{(i)} \right )^2\\ =\theta _{j}-\alpha \sum_{i=1}^{m}\left (h_{\theta }\left ( x^{(i)}\right )-y^{(i)} \right )\frac{\partial }{\partial\theta _{j}}\\ =\theta _{j}-\alpha \sum_{i=1}^{m}\left (h_{\theta }\left ( x^{(i)}\right )-y^{(i)} \right )x_{j}^{(i)} θj​:=θj​−α∂θj​∂​J(θ)=θj​−α∂θj​∂​21​i=1∑m​(hθ​(x(i))−y(i))2=θj​−αi=1∑m​(hθ​(x(i))−y(i))∂θj​∂​=θj​−αi=1∑m​(hθ​(x(i))−y(i))xj(i)​

另外,线性回归也可以从最小二乘法的角度来看,下面先将样本表示向量化,X∈Rn×mX\in R^{n \times m}X∈Rn×m,Y∈RmY \in R^{m}Y∈Rm,构成如下数据矩阵。

[−(x1,y1)T−−(x2,y2)T−−.−−(xm,ym)T−](n+1)×m\begin{bmatrix}- & (x^{1},y^{1})^{T} & -\\ -& (x^{2},y^{2})^{T} & -\\ -& . & -\\ -& (x^{m},y^{m})^{T} &- \end{bmatrix}_{(n+1)\times m} ⎣⎢⎢⎡​−−−−​(x1,y1)T(x2,y2)T.(xm,ym)T​−−−−​⎦⎥⎥⎤​(n+1)×m​

那么目标函数向量化形式如下:

J(θ)=12(θTX−yT)(θTX−yT)TJ(\theta )=\frac{1}{2}\left ( \theta ^{T}X-y^{T} \right )\left ( \theta ^{T}X-y^{T} \right )^{T} J(θ)=21​(θTX−yT)(θTX−yT)T

可以看出目标函数是一个凸二次规划问题,其最优解在导数为0处取到。

▽θJ(θ)=XXT−XY=0⇒θ=(XXT)−1XY\triangledown_{\theta } J(\theta )=XX^{T}-XY =0\\ \Rightarrow \theta =\left (XX^{T} \right )^{-1}XY ▽θ​J(θ)=XXT−XY=0⇒θ=(XXT)−1XY
值得注意的上式中存在计算矩阵的逆,一般来讲当样本数大于数据维度时,矩阵可逆,可以采用最小二乘法求得目标函数的闭式解。当数据维度大于样本数时,矩阵线性相关,不可逆。此时最小化目标函数解不唯一,且非常多,出于这样一种情况,我们可以考虑奥卡姆剃刀准则来简化模型复杂度,使其不必要的特征对应的www为0,可以考虑000范数使得模型中www非0个数最少(实际上采用的是000范数的一个凸近似)。当然,岭回归、lasso回归的最根本的目的不是解决不可逆问题,而是防止过拟合。

1.2 概率解释

​ 损失函数与最小二乘法采用最小化平方和的概率解释。假设模型预测值与真实值的误差为 $\epsilon^{(i)} $,那么预测值 hθ(x(i))h_{\theta}(x^{(i)})hθ​(x(i))与真实值y(i)y^{(i)}y(i)之间有如下关系:
y(i)=hθ(x(i))+ϵ(i)y^{(i)}=h_{\theta}(x^{(i)})+\epsilon^{(i)} y(i)=hθ​(x(i))+ϵ(i)
根据中心极限定理,当一个事件与很多独立随机变量有关,该事件服从正态分布 。一般来说,连续值我们都倾向于假设服从正态分布。假设每个样本的误差ϵ(i)\epsilon^{(i)}ϵ(i)独立同分布均值为000,方差为σ\sigmaσ的高斯分布ϵ(i)−N(0,σ2)\epsilon ^{(i)}-N(0,\sigma ^{2})ϵ(i)−N(0,σ2),所以有:
p(ϵ(i))=12πexp(−(ϵ(i))22σ2)p\left ( \epsilon ^{(i)} \right )=\frac{1}{\sqrt{2\pi} }exp\left ( -\frac{\left ( \epsilon ^{(i)} \right )^{2}}{2\sigma ^{2}} \right ) p(ϵ(i))=2π​1​exp(−2σ2(ϵ(i))2​)

即表示 y(i)y^{(i)}y(i)满足以均值为 hθ(x(i))h_{\theta}(x^{(i)})hθ​(x(i)),方差为$\epsilon^{(i)} $的高斯分布。
p(y(i)∣x(i);θ)=12πexp(−(y(i)−θTx(i))22σ2)p\left ( y ^{(i)} | x^{(i)};\theta\right )=\frac{1}{\sqrt{2\pi} }exp\left ( -\frac{\left ( y ^{(i)} -\theta^{T}x^{(i)} \right )^{2}}{2\sigma ^{2}} \right ) p(y(i)∣x(i);θ)=2π​1​exp(−2σ2(y(i)−θTx(i))2​)
由最大似然估计有:
max⁡L(θ)=L(θ;x(i),y)=p(y(i)∣x(i);θ)L(θ;X,y)=∏i=1mp(y(i)∣x(i);θ)=∏i=1m12πexp(−(y(i)−θTx(i))22σ2)max⁡logL(θ)=∑i=1mlog⁡12πexp(−(y(i)−θTx(i))22σ2)=mlog12π−12σ2.∑i=1m(y(i)−θTx(i))2⇔min⁡12σ2.∑i=1m(y(i)−θTx(i))2=J(θ)\max L(\theta )=L(\theta ;x^{(i)},y)=p(y^{(i)}|x^{(i)};\theta)\\ L(\theta ;X,y)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)\\ =\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi} }exp\left ( -\frac{\left ( y ^{(i)} -\theta^{T}x^{(i)} \right )^{2}}{2\sigma ^{2}} \right )\\ \max logL(\theta )=\sum_{i=1}^{m}\log\frac{1}{\sqrt{2\pi} }exp\left ( -\frac{\left ( y ^{(i)} -\theta^{T}x^{(i)} \right )^{2}}{2\sigma ^{2}} \right )\\ =mlog\frac{1}{\sqrt{2\pi} }-\frac{1}{2\sigma^{2}}.\sum_{i=1}^{m}\left ( y ^{(i)} -\theta^{T}x^{(i)} \right )^{2}\\ \Leftrightarrow \min \frac{1}{2\sigma^{2}}.\sum_{i=1}^{m}\left ( y ^{(i)} -\theta^{T}x^{(i)} \right )^{2}=J(\theta) maxL(θ)=L(θ;x(i),y)=p(y(i)∣x(i);θ)L(θ;X,y)=i=1∏m​p(y(i)∣x(i);θ)=i=1∏m​2π​1​exp(−2σ2(y(i)−θTx(i))2​)maxlogL(θ)=i=1∑m​log2π​1​exp(−2σ2(y(i)−θTx(i))2​)=mlog2π​1​−2σ21​.i=1∑m​(y(i)−θTx(i))2⇔min2σ21​.i=1∑m​(y(i)−θTx(i))2=J(θ)

2. 岭回归和Lasso回归

​ 岭回归的目标函数在一般的线性回归的基础上加入了正则项,在保证最佳拟合误差的同时,使得参数尽可能的“简单”,使得模型的泛化能力强。正则项一般采用一,二范数,使得模型更具有泛化性,同时可以解决线性回归中不可逆情况,比如二范数对应的岭回归:
min⁡θ12∑i=1m(hθ(x(i))−y(i))2+λ∥θ∥2\min_{\theta}\frac{1}{2}\sum_{i=1}^{m}\left ( h_{\theta }\left ( x^{(i)} \right )-y^{(i)} \right )^{2} + \lambda \left \| \theta \right \|^{2} θmin​21​i=1∑m​(hθ​(x(i))−y(i))2+λ∥θ∥2
其迭代优化函数如下:
θj:=θj−α∑i=1m(hθ(x(i))−y(i))xj(i)−2λθj\theta _{j}:=\theta _{j}-\alpha \sum_{i=1}^{m}\left (h_{\theta }\left ( x^{(i)}\right )-y^{(i)} \right )x_{j}^{(i)}-2\lambda \theta_{j} θj​:=θj​−αi=1∑m​(hθ​(x(i))−y(i))xj(i)​−2λθj​
另外从最小二乘的角度来看,通过引入二范正则项,使其主对角线元素来强制矩阵可逆。
▽θJ(θ)=XXTθ−XY+λθ=0⇒θ=(XXT+λI)−1XY\triangledown_{\theta } J(\theta )=XX^{T}\theta-XY +\lambda \theta=0\\ \Rightarrow \theta =\left (XX^{T} + \lambda I \right )^{-1}XY ▽θ​J(θ)=XXTθ−XY+λθ=0⇒θ=(XXT+λI)−1XY

Lasso回归采用一范数来约束,使参数非零个数最少。而Lasso和岭回归的区别很好理解,在优化过程中,最优解为函数等值线与约束空间的交集,正则项可以看作是约束空间。可以看出二范的约束空间是一个球形,一范的约束空间是一个方形,这也就是二范会得到很多参数接近000的值,而一范会尽可能非零参数最少。

​ 值得注意的是线性模型的表示能力有限,但是并不一定表示线性模型只能处理线性分布的数据。这里有两种常用的线性模型非线性化。对于上面的线性函数的构造,我们可以看出模型在以x0,x1,..,xn{x_{0},x_{1},..,x_{n}}x0​,x1​,..,xn​的坐标上是线性的,但是并不表示线性的模型就一定只能用于线性分布问题上。假如我们只有一个特征x0{x_{0}}x0​,而实际上回归值是y=x02y=x_{0}^{2}y=x02​等问题,我们同样可以采用线性模型,因为我们完全可以把输入空间映射到高维空间(x13,x12,x11)(x_{1}^{3},x_{1}^{2},x_{1}^{1})(x13​,x12​,x11​),其实这也是核方法以及PCA空间变换的一种思想,凡是对输入空间进行线性,非线性的变换,都是把输入空间映射到特征空间的思想,所以只需要把非线性问题转化为线性问题即可。另外一种实现线性回归非线性表示能力的是局部线性思想,即对每一个样本构建一个加权的线性模型。

3. 局部加权线性回归

​ 考虑到线性回归的表示能力有限,可能出现欠拟合现象。局部加权线性回归为每一个待预测的点构建一个加权的线性模型。其加权的方式是根据预测点与数据集中点的距离来为数据集中的点赋权重,当某点距离预测点较远时,其权重较小,反之较大。由于这种权重的机制引入使得局部加权线性回归产生了一种局部分段拟合的效果。由于该方法对于每一个预测点构建一个加权线性模型,都要重新计算与数据集中所有点的距离来确定权重值,进而确定针对该预测点的线性模型,计算成本高,同时为了实现无参估计来计算权重,需要存储整个数据集。
局部加权线性回归,在线性回归基础上引入权重,其目标函数(下面的目标函数是针对一个预测样本的)如下:
J(θ)=12∑i=1mw(i)(hθ(x(i))−y(i))2min⁡θJ(θ)J\left ( \theta \right )=\frac{1}{2}\sum_{i=1}^{m}w^{(i)}\left ( h_{\theta }\left ( x^{(i)} \right )-y^{(i)} \right )^{2}\\ \min_{\theta }J\left ( \theta \right ) J(θ)=21​i=1∑m​w(i)(hθ​(x(i))−y(i))2θmin​J(θ)
一般选择下面的权重函数,权重函数选择一般考虑数据的分布特性。
w(i)=exp(−x(i)−x2σ2)w^{(i)}=exp\left ( -\frac{x^{(i)}-x}{2\sigma ^{2}} \right ) w(i)=exp(−2σ2x(i)−x​)
其中xxx是待预测的一个数据点。

​ 对于上面的目标函数,我们的目标同样是使得损失函数最小化,同样局部加权线性回归可以采用梯度的方法,也可以从最小二乘法的角度给出闭式解。

▽θJ(θ)=XWXTθ−XWY=0⇒θ=(XWXTI)−1XWY\triangledown_{\theta } J(\theta )=XWX^{T}\theta-XWY =0\\ \Rightarrow \theta =\left (XWX^{T} I \right )^{-1}XWY ▽θ​J(θ)=XWXTθ−XWY=0⇒θ=(XWXTI)−1XWY
其中WWW是对角矩阵,Wii=w(i)W_{ii}=w^{(i)}Wii​=w(i)。

​ 线性回归核心思想最小化平方误差,可以从最小化损失函数和最小二乘角度来看,也有概率解释。优化过程可以采用梯度方法和闭式解。在闭式解问题中需要注意矩阵可逆问题。考虑到过拟合和欠拟合问题,有岭回归和lasso回归来防止过拟合,局部加权线性回归通过加权实现非线性表示。

代码

线性回归

/**
线性回归函数的实现,考虑一般的线性回归,最小平方和作为损失函数,则目标函数是一个无约束的凸二次规划问题,
由凸二次规划问题的极小值在导数为0处取到,且极小值为全局最小值,且有闭式解。根据数学表达式实现矩阵之间的运算求得参数w。
**/
int regression(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;
}

岭回归和Lasso回归

/**
下面的岭回归函数只是在一般的线性回归函数的基础上在对角线上引入了岭的概念,不仅有解决矩阵不可逆的线性,同样也有正则项的目的,
采用常用的二范数就得到了直接引入lam的形式。
**/int ridgeRegres(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;
}

局部加权线性回归

/**
局部加权线性回归是在线性回归的基础上对每一个测试样本(训练的时候就是每一个训练样本)在其已有的样本进行一个加权拟合,
权重的确定可以通过一个核来计算,常用的有高斯核(离测试样本越近,权重越大,反之越小),这样对每一个测试样本就得到了不一样的
权重向量,所以最后得出的拟合曲线不再是线性的了,这样就增加的模型的复杂度来更好的拟合非线性数据。
**/
//需要注意的是局部加权线性回归是对每一个样本进行权重计算,所以对于每一个样本都有一个权重w,所以下面的函数只是局部线性回归的一个主要辅助函数
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;/**根据测试样本点与整个样本的距离已经选择的核确定局部加权矩阵,采用对角线上为局部加权值**/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;
}

欢迎关注【AI小白入门】,这里分享Python、机器学习、深度学习、自然语言处理、人工智能等技术,关注前沿技术,求职经验等,陪有梦想的你一起成长。

【机器学习】一文读懂线性回归、岭回归和Lasso回归相关推荐

  1. python 最小二乘回归 高斯核_「机器学习」一文读懂线性回归、岭回归和Lasso回归...

    点击上方蓝色字体,关注AI小白入门哟 作者 | 文杰 编辑 | yuquanle 本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失,然后 ...

  2. 一文读懂线性回归、岭回归和Lasso回归

    (图片由AI科技大本营付费下载自视觉中国) 作者 | 文杰 编辑 | yuquanle 本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失 ...

  3. lasso回归_一文读懂线性回归、岭回归和Lasso回归

    (图片由AI科技大本营付费下载自视觉中国) 作者 | 文杰 编辑 | yuquanle 本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失 ...

  4. 【深度学习】一文读懂机器学习常用损失函数(Loss Function)

    [深度学习]一文读懂机器学习常用损失函数(Loss Function) 最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点 ...

  5. 一文读懂多元线性回归

    一文读懂多元线性回归 一.什么是线性回归模型 1.1模型 1.2线性 1.3回归 二.如何建立线性回归模型 2.1寻找yyy和xxx 2.2确定模型参数 2.2.1 拟合的角度 什么是拟合 最小二乘法 ...

  6. 一文读懂机器学习中的模型偏差

    一文读懂机器学习中的模型偏差 http://blog.sina.com.cn/s/blog_cfa68e330102yz2c.html 在人工智能(AI)和机器学习(ML)领域,将预测模型参与决策过程 ...

  7. 【机器学习】正则化的线性回归 —— 岭回归与Lasso回归

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  8. [机器学习-实践篇]学习之线性回归、岭回归、Lasso回归,tensorflow实现的线性回归

    线性回归.岭回归.Lasso回归 前言 1.线性回归 2. 岭回归 3. Lasso回归 4. tensorflow利用梯度下降实现的线性回归 前言 本章主要介绍线性回归.岭回归.Lasso回归,te ...

  9. [机器学习-原理篇]学习之线性回归、岭回归、Lasso回归

    线性回归.岭回归.Lasso回归 前言 一,线性回归--最小二乘 二,Lasso回归 三,岭回归 四, Lasso回归和岭回归的同和异 五, 为什么 lasso 更容易使部分权重变为 0 而 ridg ...

最新文章

  1. 有没有必要把机器学习算法自己实现一遍?
  2. 用php简单实现加减乘除计算器
  3. QTableView和QTableWidget翻页功能实现
  4. 不使用三方包时,如何在ThinkSNS中建立优雅的用户权限管理
  5. 远程服务器概念,远程服务
  6. python用户输入算式并计算_Python基础学习之计算和算式
  7. php从注册列表卸载,MSSQL_彻底删除SQL Server注册表的方法,一般在卸载完数据库时,大家 - phpStudy...
  8. (90)FPGA十进制计数器设计-面试必问(十四)(第18天)
  9. SAP License:SAP顾问日记二
  10. Codeforces Gym 100338H High Speed Trains 组合数学+dp+高精度
  11. 【报告分享】2021中国中高端人才趋势报告.pdf(附下载链接)
  12. 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
  13. 【MySQL】Could not initialize master info structure
  14. CentOS Postfix 安装构架全解
  15. Visual studio2012密钥 vs2012密钥 本人亲测 真实有效
  16. NFS PRC端口映射器
  17. (研究向)如何使用Windows任务管理器看BadApple
  18. 隧道炉检测,工业烤箱第三方检测
  19. 你知道PDF怎么合并吗?这些技巧快来码住
  20. 手机里拍摄的照片误删了也不怕,2招教你快速找回照片!

热门文章

  1. 百度空间部分表单查询
  2. 怎么检测两张照片的相似度,两张图片相似度测试
  3. 黑盒测试详细功能描述
  4. 浴室间谍照相机,遥控器剃须膏防水隐蔽的间谍相机HD DVR 16GB
  5. 快速设置CodeBlocks
  6. Glide的源码解析(一)(附方法调用图)
  7. wordpress小工具自定义Html,WordPress添加自定义小工具
  8. Primavera Unifier v19版新特征
  9. 【Linux成长之路】CentOS7修改主机名的三种方法
  10. 追妹神器,恋爱神器,哄老婆开心,智能机器人每天给你心爱的TA发送早晚安问候