您的位置:首页 > 其它

机器学习(1)------ 线性回归、加权线性回归及岭回归的原理和公式推导

2018-03-24 21:47 543 查看

线性回归、加权线性回归及岭回归的原理和公式推导

目录:

- 前言

- 线性回归

- 加权线性回归

- 岭回归

- 总结

前言

机器学习相关的博文相信已经很多了,作为机器学习的一枚菜鸟,写这篇博文不在于标新立异,而在于分享学习,同时也是对自己研究生生涯的总结和归纳,好好地把研究生的尾巴收好。想着比起出去毕业旅行,在实验室总结一下自己的所学,所想,所感应该更有意义吧。(其实也想出去玩,但是老板要求再出一篇文章,那只好和毕业旅行拜拜了,所以趁机写个系列吧,反正后面的时间应该就是文章+博客的双重循环了,其实也是挺美的哈)

那么对于机器学习的相关内容,大家也似乎都是从线性回归开始讲起。同样的,我也从这个主题开始讲起,主要写自己平时的一些总结,可能里面会有一些错误或者理解有误的地方,也希望大家批评指出。其实,对于这个专题可能是机器学习里面最为基础的知识点了,也有很多相关的博文,但很多写得都不够的详细,而且缺乏推导过程,往往使人看起来有些晕晕的,可能也是自己的功力不够吧(ಥ_ಥ)。同时,这里个人推荐Andrew Ng的课件作为这部分内容的参考,为保持统一,相关公式的符号来自该课件。但我写这篇博客的目的是,你只看我的博客也能很清楚的弄懂线性回归、加权线性回归以及岭回归的概念。

学习机器学习的小心得:脑袋中一定要有矩阵、向量的概念,这一点非常重要,因为我们现在处理的数据是多维的数据,所以可能无法非常直观的来表述我们的数据,所以大脑中一定要有这样的概念。然后就是Coding再Coding,这一点自己也没做好啦,惭愧。

线性回归

回归的目的就是对给定的数据预测出正确的目标值,分类的目的是对给定的数据预测出正确的类标,要注意区分这两个概念,其实我在刚接触机器学习的时候经常把这两个概念弄混。那么,对于线性回归,就是实现对给定数据目标值的预测过程。

那么对于给定的训练数据X=[x⃗ 1,x⃗ 2,…,x⃗ m]TX=[x→1,x→2,…,x→m]T,其中x⃗ i={xi1,xi2,xi3,…,xin}Tx→i={xi1,xi2,xi3,…,xin}T。对应的,这些训练数据的目标值是y⃗ ={y1,y2,y3,…,ym}y→={y1,y2,y3,…,ym}。一般的,我们通过所给定的训练数据及对应的目标值来求解线性回归的参数θ⃗ ={θ1,θ2,θ3,…,θn}Tθ→={θ1,θ2,θ3,…,θn}T。具体的,我们通过定义损失函数Jx⃗ i(θ⃗ )Jx→i(θ→)来实现对线性回归参数的求解,损失函数定义如下:

Jx⃗ i(θ⃗ )=12(x⃗ Tiθ−yi)2(1)(1)Jx→i(θ→)=12(x→iTθ−yi)2

记住,在机器学习里面,向量的默认是列向量形式,所以上述的TT表示转置,因为我们写的时候写成了横向量的形式。同样在做向量乘积运算时,也应该对左边的向量加上转置,这样向量乘积才会得到一个值。

那么要最小化这个损失函数,我们可以采用随机梯度下降(Stochastic Gradient Descent)或者批梯度下降(Batch Gradient Descent),那么对参数向量θ⃗ θ→中的每一维参数求偏导,再根据学习率来进行参数地更新,具体如下:

∂Jx⃗ i(θ⃗ )∂θj=2×12×(x⃗ Tiθ−yi)×xij=(x⃗ Tiθ−yi)×xij(2)(2)∂Jx→i(θ→)∂θj=2×12×(x→iTθ−yi)×xij=(x→iTθ−yi)×xij

那么,对于参数θjθj的更新,批梯度下降算法如下所示:

Repeat until convergence{

θj=θj−η1m∑mi=1((x⃗ Tiθ−yi)×xij) θj=θj−η1m∑i=1m((x→iTθ−yi)×xij) (for every θjθj)

}

其中,ηη表示学习率。而对于随机梯度下降,算法如下所示:

for i = 1 to m{

for j = 1 to n{

θj=θj−η((x⃗ Tiθ−yi)×xij) θj=θj−η((x→iTθ−yi)×xij)

}

}

关于上述两种梯度下降法的区别这里就不详细说明了,这不是本小节讨论的重点,大家可以查阅相关的博客或者书籍。(机器学习可是系统工程啊,要懂得方方面面,菜鸟到专家可得一步一个脚印呢)

上述是基于梯度来求解回归系数的,下面给出基于矩阵求解回归系数的办法,这里不需要多次迭代求解,对于训练数据量少时较为实用。首先,给出矩阵形式的损失函数:

J(θ⃗ )=12(Xθ⃗ −y⃗ )T(Xθ⃗ −y⃗ )=12(θ⃗ TXTXθ⃗ −θ⃗ TXTy⃗ −y⃗ TXθ⃗ +y⃗ Ty⃗ )=12tr(θ⃗ TXTXθ⃗ −θ⃗ TXTy⃗ −y⃗ TXθ⃗ +y⃗ Ty⃗ )=12(tr(θ⃗ TXTXθ⃗ )−2tr(y⃗ TXθ⃗ )+y⃗ Ty⃗ )J(θ→)=12(Xθ→−y→)T(Xθ→−y→)=12(θ→TXTXθ→−θ→TXTy→−y→TXθ→+y→Ty→)=12tr(θ→TXTXθ→−θ→TXTy→−y→TXθ→+y→Ty→)=12(tr(θ→TXTXθ→)−2tr(y→TXθ→)+y→Ty→)

其中,trtr表示矩阵的Trace operator,暂时不知道如何翻译。但应该读过Andrew Ng的课件的同学对这个应该有影响,可以去看看原稿的解释哦。这里可以使用trtr的原因是tr(E)=Etr(E)=E,其中EE表示常数。(自行理解哦)

下一步,我们需要使用参数向量θ⃗ θ→进行矩阵求导,暂且这里把向量看成矩阵吧,其实向量就是矩阵,特殊一点就是啦。可能公式上写得有点不符合规范,但是为保持前后统一,这里还是暂且将θθ写成向量的形式。那么矩阵求导的公式有:

∇θ⃗ J(θ⃗ )=12∇θ⃗ (tr(θ⃗ TXTXθ⃗ )−2tr(y⃗ TXθ⃗ )+y⃗ Ty⃗ )=12(XTXθ⃗ +XTXθ⃗ −2XTy⃗ )=XTXθ⃗ −XTy⃗ =0∇θ→J(θ→)=12∇θ→(tr(θ→TXTXθ→)−2tr(y→TXθ→)+y→Ty→)=12(XTXθ→+XTXθ→−2XTy→)=XTXθ→−XTy→=0

其中,有两个重点的公式:∇Atr(AB)=BT∇Atr(AB)=BT和∇ATtr(ABATC)=BTATCT+BATC∇ATtr(ABATC)=BTATCT+BATC。那么,根据上述的公式,最后求解得到:

θ⃗ =(XTX)−1XTy⃗ θ→=(XTX)−1XTy→

这样就完成了对回归参数的求解。线性回归部分地介绍到此介绍,我们这里给出了两种求解线性回归参数的方法。

加权线性回归

加权线性回归的思想在于我们希望使用离待拟合数据较近的那些样本来描述待拟合数据。这与我们平时的认知是一致的,即我们向其他人描述他们未知的事物时,我们往往喜欢使用与该事物相近的事物来进行描述,其实加权线性回归也是基于这么一个思想。

所以对于待拟合数据x⃗ k={xk1,xk2,xk3,…,xk4}x→k={xk1,xk2,xk3,…,xk4},我们需要通过给定的训练数据X=[x⃗ 1,x⃗ 2,…,x⃗ m]TX=[x→1,x→2,…,x→m]T来进行拟合,其中x⃗ i={xi1,xi2,xi3,…,xin}Tx→i={xi1,xi2,xi3,…,xin}T。对应的,这些训练数据的目标值是y⃗ ={y1,y2,y3,…,ym}y→={y1,y2,y3,…,ym}。首先,我们需要计算待拟合数据和每个训练数据之间的距离权重,定义如下:

w(x⃗ k,x⃗ i)=exp⟮|x⃗ k−x⃗ i|−2k2⟯w(x→k,x→i)=exp⟮|x→k−x→i|−2k2⟯

其中,kk作为关键性的参数用于调整拟合待拟合数据的样本量。kk越大,表明我们将使用更多的数据样本来拟合待拟合数据。同时,为简便距离权重的表示,我们将w(x⃗ k,x⃗ i)w(x→k,x→i)写成wkiwki的形式。那么,此时的损失函数J(θ⃗ )J(θ→)写作:

Jx⃗ i(θ⃗ )=12wik(x⃗ Tiθ⃗ −yi)2Jx→i(θ→)=12wik(x→iTθ→−yi)2

可以看到,相较于线性回归的损失函数,加权线性回归增加了权重参数。同样的,我们通过对参数向量θ⃗ θ→中每一维的数据求偏导,来进行参数的迭代更新,定义如下:

∂Jx⃗ i(θ⃗ )∂θj=12×2×wik×(x⃗ Tiθ⃗ −yi)×xij=wik(x⃗ Tiθ⃗ −yi)×xij∂Jx→i(θ→)∂θj=12×2×wik×(x→iTθ→−yi)×xij=wik(x→iTθ→−yi)×xij

那么,对于参数θjθj的更新,批梯度下降算法如下所示:

Repeat until convergence{

θj=θj−η1m∑mi=1(wik(x⃗ Tiθ−yi)×xij) θj=θj−η1m∑i=1m(wik(x→iTθ−yi)×xij) (for every θjθj)

}

其中,ηη表示学习率。而对于随机梯度下降,算法如下所示:

for i = 1 to m{

for j = 1 to n{

θj=θj−η(wik(x⃗ Tiθ−yi)×xij) θj=θj−η(wik(x→iTθ−yi)×xij)

}

}

可以看到,距离待拟合点越远的数据点,对回归参数的作用将越小。所以,对于加权线性回归需要对每一个待拟合的数据计算回归参数,所以相较于加权线性回归其拟合的效果会有所提升。但也容易出现过拟合的现象。

那么对于矩阵形式的加权线性回归的公式求解,具体如下:

J(θ⃗ )=12(Xθ⃗ −y⃗ )TW(Xθ⃗ −y⃗ )=12(θ⃗ TXTWXθ⃗ −θ⃗ TXTy⃗ −y⃗ TWXθ⃗ +y⃗ Ty⃗ )=12tr(θ⃗ TXTWXθ⃗ −θ⃗ TXTWy⃗ −y⃗ TWXθ⃗ +y⃗ Ty⃗ )=12(tr(θ⃗ TXTWXθ⃗ )−2tr(y⃗ TWXθ⃗ )+y⃗ Ty⃗ ))J(θ→)=12(Xθ→−y→)TW(Xθ→−y→)=12(θ→TXTWXθ→−θ→TXTy→−y→TWXθ→+y→Ty→)=12tr(θ→TXTWXθ→−θ→TXTWy→−y→TWXθ→+y→Ty→)=12(tr(θ→TXTWXθ→)−2tr(y→TWXθ→)+y→Ty→))

其中W∈Rm×mW∈Rm×m是距离权重对角矩阵,有:

W=⎡⎣⎢⎢⎢wk10.00wk200…………00.wkm⎤⎦⎥⎥⎥W=[wk10…00wk2…0.0….00…wkm]

那么,下一步就是对矩阵求θ⃗ θ→的偏导,公式如下:

∇θ⃗ J(θ⃗ )=12∇θ⃗ (tr(θ⃗ TXTWXθ⃗ )−2tr(y⃗ TWXθ⃗ )+y⃗ Ty⃗ ))=12(XTWXθ⃗ +XTWXθ⃗ −2(XTWy⃗ ))=XTWXθ⃗ −XTWy⃗ =0∇θ→J(θ→)=12∇θ→(tr(θ→TXTWXθ→)−2tr(y→TWXθ→)+y→Ty→))=12(XTWXθ→+XTWXθ→−2(XTWy→))=XTWXθ→−XTWy→=0

那么最终求解得θ⃗ =(XTWX)−1XTWy⃗ θ→=(XTWX)−1XTWy→。这就是使用矩阵求解的形式来计算加权线性回归的回归系数。记住一点,加权线性回归要对每一个待回归的数据求解回归系数。所以,这里我们首先要计算待回归点和训练数据样本点的距离权重对角矩阵WW。

岭回归

岭回归主要用于处理特征数多于样本数的情况,现在也用于在估计中加入偏差,从而得到更好的估计。对于线性回归来讲,通过引入惩罚项∑nj=1θ2j∑j=1nθj2来减少不重要的参数,这在统计学里面成为缩减(shrinkage)。

具体的,此时的损失函数定义为:

J(θ⃗ )=12((x⃗ Tiθ⃗ −yi)2+λ∑j=1nθ2j)J(θ→)=12((x→iTθ→−yi)2+λ∑j=1nθj2)

类似的,对该损失函数求参数向量θ⃗ θ→中每个参数的偏导,然后使用批梯度下降和随机梯度下降进行参数更新,公式定义如下:

∂x⃗ iJ(θ⃗ )∂θj=12×2×(x⃗ Tiθ⃗ −yi)xij+12×2×λ×θj=(x⃗ Tiθ⃗ −yi)xij+λ×θj∂x→iJ(θ→)∂θj=12×2×(x→iTθ→−yi)xij+12×2×λ×θj=(x→iTθ→−yi)xij+λ×θj

那么,对于参数θjθj的更新,批梯度下降算法如下所示:

Repeat until convergence{

θj=θj−η1m∑mi=1((x⃗ Tiθ⃗ −yi)xij+λ×θj) θj=θj−η1m∑i=1m((x→iTθ→−yi)xij+λ×θj) (for every θjθj)

}

其中,ηη表示学习率。而对于随机梯度下降,算法如下所示:

for i = 1 to m{

for j = 1 to n{

θj=θj−η((x⃗ Tiθ⃗ −yi)xij+λ×θj) θj=θj−η((x→iTθ→−yi)xij+λ×θj)

}

}

下面对这部分内容写成矩阵的形式进行求解,公式如下:

J(θ⃗ )=12[(Xθ⃗ −y⃗ )T(Xθ⃗ −y⃗ )+λθ⃗ TIθ⃗ ]=12(θ⃗ TXTWXθ⃗ −θ⃗ TXTy⃗ −y⃗ TWXθ⃗ +y⃗ Ty⃗ +λθ⃗ TIθ⃗ )=12tr(θ⃗ TXTWXθ⃗ −θ⃗ TXTy⃗ −y⃗ TWXθ⃗ +y⃗ Ty⃗ +λθ⃗ TIθ⃗ )=12(tr(θ⃗ TXTWXθ⃗ )−2tr(y⃗ TWXθ⃗ )+y⃗ Ty⃗ +λtr(θ⃗ TIθ⃗ ))J(θ→)=12[(Xθ→−y→)T(Xθ→−y→)+λθ→TIθ→]=12(θ→TXTWXθ→−θ→TXTy→−y→TWXθ→+y→Ty→+λθ→TIθ→)=12tr(θ→TXTWXθ→−θ→TXTy→−y→TWXθ→+y→Ty→+λθ→TIθ→)=12(tr(θ→TXTWXθ→)−2tr(y→TWXθ→)+y→Ty→+λtr(θ→TIθ→))

其中,II为对角矩阵。所以求解矩阵对θ⃗ θ→的矩阵导数有:

∇θ⃗ J(θ⃗ )=12∇θ⃗ (tr(θ⃗ TXTWXθ⃗ )−2tr(y⃗ TWXθ⃗ )+y⃗ Ty⃗ +λtr(θ⃗ TIθ⃗ ))=12(XTXθ⃗ +XTXθ⃗ −2XTy⃗ +λ(2Iθ⃗ ))=XTXθ⃗ −XTy⃗ +λ(Iθ⃗ )=0∇θ→J(θ→)=12∇θ→(tr(θ→TXTWXθ→)−2tr(y→TWXθ→)+y→Ty→+λtr(θ→TIθ→))=12(XTXθ→+XTXθ→−2XTy→+λ(2Iθ→))=XTXθ→−XTy→+λ(Iθ→)=0

那么最总求得θ⃗ =(XTX+λI)−1XTy⃗ θ→=(XTX+λI)−1XTy→。那么这就是岭回归矩阵形式的求解过程。

总结

这里稍微再最后总结一下,本篇博文主要是对线性回归、加权线性回归以及岭回归这几类回归进行了梳理和公式地推导。这里主要是公式的推导,即对这三类回归,我们给出了向量形式和矩阵形式的两种推导模式,大家可以参考着看。这篇博文需要大家耐下心来慢慢的看推导的过程,然后自己推导一遍,其实你也就差不多掌握这几类回归了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: