前言
本来对数学没什么感觉的,但是停摆了一年复习考研,于是开始对数学有些感觉了,之前看到《机器学习实战》中第五章中梯度上升法,使用了一个它所谓的十分简单的推导,一直好奇怎么个简单法,于是重新学习机器学习的相关算法,这次将主推数学推导。
有监督回归算法
在机器学习中,多元线性回归模型是经常使用的模型,比如在吴恩达《斯坦福机器学习》中的例子,我们需要根据已有的房价信息预测当前房子的房价,于是我们收集到一些房价数据。
再将它们画在二维坐标上,它们就以离散的点分布在平面上,如下所示
我们希望能根据这些已知的点来预测我们想知道的房子的房价,因此我们需要找到一条规律,也就是一条大致经过这些点的线性模型,在数学上我们通常称之为拟合,而这个拟合的过程,我们称之为回归。
假设我们建立的模型是一元一次的,将得到这样的拟合结果,于是我们可以x轴上的房屋面积,找到对应的房屋价格。
有监督的学习算法,可以理解成我们训练模型的时候每一个输入都是有标准答案的,我们通过预测值跟标准答案的比对,不断修改模型的参数才能最终实现较好地的拟合结果。
最小二乘法
最小二乘法是我们经常使用的拟合算法,它通过最小化误差的平方和寻找数据的最佳函数匹配。
以我们《机器学习实战》第五章作例子,我们假设的模型为z,于是函数即可设为
z=w0+w1x1+w2x2+w3x3+....+wnxn=w0x0+w1x1+w2x2+w3x3+....+wnxn(x0=1)(1)
这种写法也可以表示为向量的写法:
z=wTx=[w0w1...wn]⎡⎣⎢⎢⎢x0x1...xn⎤⎦⎥⎥⎥(2)
同样的道理,我们也可以这样子表示
z=xTw=[x0x1...xn]⎡⎣⎢⎢⎢w0w1...wn⎤⎦⎥⎥⎥(3)
刚才我们也提到了,最小二乘法拟合的原理是最小化误差的平方和,我们将这个平方和称为损失函数,跟我们平时常用的方差类似,当这个损失函数越小,我们的模型就越能跟离散的点匹配起来:
f(w)=12∑i=1m(zw(xi)−yj)2(4)
其中的y表示我们给出的标准的特征
⎡⎣⎢⎢⎢⎢y0y1...ym⎤⎦⎥⎥⎥⎥
因为梯度上升算法是用来计算函数的最大值的,而梯度下降算法则是计算函数最小值的。而我们的损失函数自然是越小越好,我们需要求得一个系数来使得f(w)最小,可是使用梯度上升法是用于求最大值的,因此为了用上梯度上升算法,我们最终应该在f(w)前加上负号。假设:
J(w)=−f(w)(5)
接下来我们开始利用矩阵来推算我们的数学公式,因为原始的公式用来做迭代计算会很不方便,因此我们需要一个等价的公式来让我们的算法更加高效,就例如《机器学习实战》chapter5中的那样。假设我们的输入为X,我们有m组训练数据,每个数据有n个特征。则:
X=⎡⎣⎢⎢⎢x11x21...xm1x12x22...xm2............x1nx2n...xmn⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢xT1xT2...xm⎤⎦⎥⎥⎥⎥(6)
于是通过(3)可以推出
Xw=⎡⎣⎢⎢⎢⎢xT1xT2...xTm⎤⎦⎥⎥⎥⎥w=⎡⎣⎢⎢⎢⎢xT1wxT2w...xTmw⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢zw(x1)zw(x2)...zw(xm)⎤⎦⎥⎥⎥⎥(7)
Xw−y→=⎡⎣⎢⎢⎢⎢xT1wxT2w...xTmw⎤⎦⎥⎥⎥⎥−⎡⎣⎢⎢⎢⎢y1y2...ym⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢zw(x1)−y1zw(x2)−y2...zw(xm)−ym⎤⎦⎥⎥⎥⎥(8)
由矩阵内积可得
∵zTz=∑inz2i
∴12(Xw−y→)T(Xw−y→)=12∑i=1n(zw(xi)−yi)2=f(w)
则梯度为
∇wf(w)=∇w12(Xw−y→)T(Xw−y→)=12∇w(wTXTXw−wTXTy→−y→TXw+y→Ty→)=12∇wtr(wTXTXw−wTXTy→−y→TXw+y→Ty→)=12∇w(trwTXTXw−2try→TXw)=12(XTXw+XTXw−2XTy→)=XTXw−XTy→=XT(Xw−y→)=>J(w)=−f(w)=XT(y→−Xw)
说明:
第二步:类似于括号展开
第三步:实数的迹等于它本身
第四步:因为
y→Ty→ 不含w,因此它对w求导为0.并且利用了公式
trA=trAT 进行简化。
第五步:利用公式
∇ATtrABATC=BTATCT+BATC ,令
AT=w,B=BT=XTX,C=I ,利用公式转化即可得到。
最后再回到《机器学习实战》中,P78,代码清单5-1②的部分。
dataMatrix=X;
weights=w;
labelMat=y;
把等号右边的用左边的变量代入,不过很遗憾,还是有些区别的,在《机器学习实战》一书中,还有sigmoid这一函数,查阅了一些资料,发现其实还是有些区别的,将于下一篇博文中阐明。
参考
吴恩达《机器学习》notes1
周志华《机器学习》chapter3 线性模型
来源
http://csuncle.com/2017/06/13/《机器学习实战》-chapter5梯度上升算法-数学推导/