逻辑回归_梯度跟新公式的理解
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→
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→
相关文章推荐
- 逻辑回归代价函数及其梯度下降公式
- 对于《机器学习实战》中逻辑斯谛回归算法公式理解
- [机器学习]逻辑回归公式推导及其梯度下降法的Python实现
- 逻辑回归梯度下降公式详细推导
- 逻辑回归LR推导(sigmoid,损失函数,梯度,参数更新公式)
- 梯度下降法解逻辑斯蒂回归
- 理解逻辑斯蒂回归模型
- Logistic Regression(逻辑回归)原理及公式推导
- 机器学习07-逻辑回归-代价函数与梯度下降的优化
- 梯度下降求解逻辑回归2(代码编写以及三种梯度下降对比)
- 梯度下降原理及在线性回归、逻辑回归中的应用
- logistic逻辑回归公式推导及R语言实现
- 回归问题总结(梯度下降、线性回归、逻辑回归、源码、正则化)
- 斯坦福大学机器学习课程笔记: 逻辑回归以及梯度下降
- 线性回归中梯度下降的个人理解
- softmax回归梯度公式推导及实现
- 逻辑回归在梯度下降网络中的注意点(随笔)
- 机器学习-逻辑回归-参数迭代公式推导
- 逻辑斯蒂回归公式推导
- 十七、逻辑回归公式的数学推导