首页 > 代码库 > 随机梯度下降的逻辑回归算法(SGDLR)

随机梯度下降的逻辑回归算法(SGDLR)

由于第一次实验的实验报告不在这台机器,先写这一算法吧。

SGDLR(the Stochastic Gradient Descent for Logistic Regression),要讲解这一算法,首先要把名字拆为几块。

1 随机   2 梯度下降   3逻辑回归

先贴一篇文章:http://blog.csdn.net/zouxy09/article/details/20319673

这篇文章中解释的还不错。

其实这一算法,通俗来讲是这样子的:

1、手中肯定有很多带有label标记的数据,这是训练集。

2、我们期望能够建立一个带参数的式子,来计算某种情况出现的概率,以便于后面预测测试集的类别的时候,计算它在每一类的概率,取概率大的为自己的类。

3、由于sigmoid函数的优势:连续,光滑,严格单调,关于(0,0.5)中心对称,形如下图,

sigmoid函数详解 - lili - 做好自己,莫管他人

  公式①

利用下面这个式子变换得到:

所以我们只需要计算出参数的值,就可以用公式①计算概率。

4、所有在训练集中出现的样本,已经真实存在了,所以它们带入计算出的概率应该是最大的,理想情况为1。根据这一特征来计算参数值。

5、式子并不是一个线性可解的,需要使用极大似然,这一算法不再赘述请自行谷歌。但是后来发现求参数的偏导数的时候,导数为0线性不可解,这时候就要用到梯度下降的算法。

6、所谓梯度下降的算法,事实上是从一个起点,一步步的试探,来回震荡,直到找到一个最低点。迭代公式如下:(这里的lamda是步长,自己设定,参数的初值也是自己设定)

普通的梯度下降需要每次都用所有样本加和,然后迭代到收敛。

7、那么随机梯度下降就是在普通的情况下,每次只迭代一个样本(注意:这个样本必须是随机抽的,如果有偏向,最后的结果会很难看),直到收敛。

8、利用以上的迭代公式可以得到参数的值。

9、如果存在多个分类,那么可以训练多个分类器,一类一个,每一个训练样本都只属于下面两类:“是这类”和“不是这类”。训练的时候也是训练N套参数。

对于一个测试样本,带入每一个分类器计算一遍概率,以概率最大的分类有效。

 

该算法依旧可以使用十次交叉验证检验效果。

 

随机梯度下降的逻辑回归算法(SGDLR)