逻辑斯蒂回归多元分类的随机梯度下降
来源:互联网 发布:淘宝网上发论文 编辑:程序博客网 时间:2024/05/07 11:51
逻辑斯蒂的损失函数如下:
注意不能写成平方误差损失函数,因为h(x) = 1.0 / {1.0+ exp (-W*X)}, 因此平方损失误差函数非凸。
批量梯度下降
for k : 1...iSampleNum
for j : 1...iFeatureNum
时间复杂度:O(m^2*n),m为样例数目,n为特征数目
随机梯度下降
for i : 1...iSampleNum
for j : 1...iFeatureNum
时间复杂度:O(m*n),m为样例数目,n为特征数目
对梯度方向的一点思考:正类为1.0,负类为0.0。
h(x)=0.9, 正类1.0,预测正确,梯度为h(x)-y = 0.9 - 1.0 = -0.1,沿梯度相反方向0.1,逼近1.0.
h(x)=0.9, 负类0.0,预测错误,梯度为h(x)-y = 0.9 - 0.0 = 0.9,沿梯度相反方向-0.9,向0.0方向。
h(x)=0.1, 负类0.0,预测正确,梯度为h(x)-y = 0.1 - 0.0 = 0.1,沿梯度相反方向-0.1,向0.0方向。
h(x)=0.1, 正类1.0,预测错误,梯度为h(x)-y = 0.1 - 1.0 = -0.9,沿梯度相反方向0.9, 向1.0方向。
对于K元分类:多元分类的 h(x) = exp (W*X) / {1.0 + sum_exp (W*X)},对于iClassIndex <= K
h(x) = 1.0 / {1.0 + sum_exp (W*X)},对于iClassIndex == K+1
也就是说需要多出一个默认类别K+1。该默认类别没有特征权重。
先介绍二元分类的随机梯度下降,伪代码如下:
for loop : 1...iLoopNum for sample : 1...iSampleNum 计算样例sample的输出概率为dy for feature : 1...iFeatureNum 更新特征权重w[feature] = dLearningRate * (dY - sample.class) * featureValue if sample.class = 1.0 dCost -= log (dY) else dCost -= log (1.0 - dY)
下面介绍多元分类的随机梯度下降,伪代码如下:
for loop : 1...iLoopNum for sample : 1...iSampleNum 计算样例sample的每个类别输出概率为prob[iClassNum] for class : 1...iClassNum if class == sample.class for feature : 1...iFeatureNum 更新特征权重w[class][feature] -= dLearningRate * (prob[class] - 1) * featureValue dCost -= log (prob[class]) else if class != sample.class for feature : 1...iFeatureNum 更新特征权重w[class][feature] -= dLearningRate * prob[class] * featureValue // 注意yi只与class == sample.class有关 dCost -= log (1.0 - prob[class])
- 逻辑斯蒂回归多元分类的随机梯度下降
- 逻辑回归 随机梯度下降 批梯度下降 二分类问题 不带正则项 java
- 逻辑斯蒂回归与梯度下降算法
- 梯度下降法解逻辑斯蒂回归
- 逻辑斯蒂回归梯度下降法推导
- 逻辑斯蒂回归与梯度下降算法
- 用梯度下降实现逻辑回归分类器
- 梯度下降法解多元线性回归
- 多元线性回归及梯度下降
- 梯度下降与逻辑回归
- 逻辑回归及梯度下降
- 梯度下降和逻辑回归
- 逻辑回归与梯度下降
- 逻辑回归与梯度下降
- 逻辑回归-梯度下降训练
- 梯度下降求解逻辑回归
- 梯度下降 && 线性回归 && 逻辑回归 && softmax
- 逻辑回归梯度下降法的推导过程
- 在Linux中安装运行g++
- 网络营销向左,SEO向右
- 选择了就认真往前走吧
- JavaScript_个人笔记9_悟透js闭包
- JavaScript简介
- 逻辑斯蒂回归多元分类的随机梯度下降
- fork()函数详解
- hdu 1372 Knight Moves
- A. Little Pony and Expected Maximum
- Android小技巧4——字体加粗
- android Intent 的简单应用
- ARM启动过程分析
- Arrange an Array to Form a Smallest Digit
- Candy--LeetCode