机器学习之梯度下降法数学推导--回归

前言

    本来对数学没什么感觉的,但是停摆了一年复习考研,于是开始对数学有些感觉了,之前看到《机器学习实战》中第五章中梯度上升法,使用了一个它所谓的十分简单的推导,一直好奇怎么个简单法,于是重新学习机器学习的相关算法,这次将主推数学推导。

有监督回归算法

    在机器学习中,多元线性回归模型是经常使用的模型,比如在吴恩达《斯坦福机器学习》中的例子,我们需要根据已有的房价信息预测当前房子的房价,于是我们收集到一些房价数据。

房价信息

    再将它们画在二维坐标上,它们就以离散的点分布在平面上,如下所示
房价分布情况

    我们希望能根据这些已知的点来预测我们想知道的房子的房价,因此我们需要找到一条规律,也就是一条大致经过这些点的线性模型,在数学上我们通常称之为拟合,而这个拟合的过程,我们称之为回归。

拟合结果

    假设我们建立的模型是一元一次的,将得到这样的拟合结果,于是我们可以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)=12i=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...xTmw=xT1wxT2w...xTmw=zw(x1)zw(x2)...zw(xm)(7)

Xwy=xT1wxT2w...xTmwy1y2...ym=zw(x1)y1zw(x2)y2...zw(xm)ym(8)

由矩阵内积可得
zTz=inz2i

12(Xwy)T(Xwy)=12i=1n(zw(xi)yi)2=f(w)

则梯度为
wf(w)=w12(Xwy)T(Xwy)=12w(wTXTXwwTXTyyTXw+yTy)=12wtr(wTXTXwwTXTyyTXw+yTy)=12w(trwTXTXw2tryTXw)=12(XTXw+XTXw2XTy)=XTXwXTy=XT(Xwy)=>J(w)=f(w)=XT(yXw)

说明:
第二步:类似于括号展开
第三步:实数的迹等于它本身
第四步:因为 yTy 不含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梯度上升算法-数学推导/

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值