您的位置:首页 > 其它

逻辑回归_梯度跟新公式的理解

2017-12-13 15:26 253 查看
自己学习机器学习,看到逻辑回归中梯度更新时,始终无法理解更新公式。那个看起来很莫名的公式长这样:

weights = weights + alpha * dataMatrix.transpose() * error

为什么要转置,为什么要用乘法将这个矩阵和差异向量相乘,下面就来详细讲讲吧。

首先,设样本集i行j列:

X=⎛⎝⎜⎜⎜⎜x11x21…xi1x12x22…xi2…………x1jx2j…xij⎞⎠⎟⎟⎟⎟对应结果标签Y=⎛⎝⎜⎜⎜⎜y1y2…yi⎞⎠⎟⎟⎟⎟

根据梯度算法: w:=α∗∇wf(w)有:

⎛⎝⎜⎜⎜w1w2…wj⎞⎠⎟⎟⎟=⎛⎝⎜⎜⎜w1_oldw2_old…wj_old⎞⎠⎟⎟⎟+α∗∂f(w)/∂w ;

其中,α为步长;f(z)为损失函数,z为计算得出的标签值;

z=w0+w1x1+w2x2+…+wjxj

设平方损失函数:f(z)=1/2∗∑i1(yi−zi)2

则:∂f(w)/∂w=1/2∗∑i1(yi−z(w)i)∗2∗z′(w)

因为:z(w1)=z(w2)=z(w3)=z(wj)

且:z′(w1)=x1 , z′(w1)=x2 , z′(wj)=xj

∂f(wj)/∂wj=∑i1(yi−z(w)i)∗xji

由于∂f(wj)/∂wj需要与⎛⎝⎜⎜⎜w1w2…wj⎞⎠⎟⎟⎟相加,所以∂f(wj)/∂wj计算的结果应该是一个j行的向量。

由矩阵相乘公式Amn∗Bnl=Cml,将∂f(wj)/∂wj转换为XT∗(y−z(w))→,XT为j行i列,(y−z(w))→为i行1列,两者相乘得到j行1列的向量,满足要求。而(yi−z(w)i)即为样本i的误差errori。

最终得到:

weights→:=weights→+α∗dataMatrix.transpose()∗error→
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  梯度下降算法