逻辑回归算法之梯度算法

 

在学习Logistic逻辑回归算法(上一节介绍)编程时,被其中一句python语句卡住了,该语句就是:

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

让我们来顺一下。

首先,是二分类算法,类别为1或0,利用sigmoid函数很合适

令:

整合得:

当sigmoid>0.5时,分类为1,sigmoid<0.5时,分类为0。其函数值在(0,1)之间,又恰和概率巧妙联系上,

解释:函数的值为(0, 1),当h>0.5时,y=1,该值也可以为y=1的概率,概率大于0.5当然比较大,基本可以确定成立(即y=1);概率小于0.5时,概率比较小y=1不成立,当然h<0.5本来就是类别y=0,正好概率1-h,为类别为0的概率。

上面两个式子合并即损失函数:

解释:当类别为1时,即y=1,Loss=h,当类别为0时,即y=0,Loss=1-h。

梯度上升(下降)法,就是为了使得损失函数最大或最小,从而找到最优参数。

最大还是最小呢?例如h=0.55和h=0.99,都有y=1。既然是概率,当然越大越好,所有这里要求Loss的最大值。

很多提到了最大对数似然函数。

似然函数定义:给定输出x时,关于参数W的似然函数L(W|x)(在数值上)等于给定参数W后变量X的概率:

似然函数用于在已知某些观测所得到的的结果时,对有关事物的性质的参数进行估计。与概率相反,概率用于在已知一些参数的情况下,预测接下来的观测所得到的结果。

似然函数就是求参数的。

似然函数的重要性不是它的具体取值,而是当参数变化时函数到底变小还是变大。对同一个似然函数,如果存在一个参数值,使得它的函数值达到最大的话,那么这个值就是最合理的参数值。

最大似然函数就是求似然函数的最大值,使得参数最合理。

所以一般将最大似然函数作为梯度上升算法的损失函数。

上面的Loss损失函数也正是最大似然函数(使概率最大)。只不过损失函数的变量是W,W是未知的需要求解的。

现在转为求Loss最大的最优解W。

梯度上升法可以求最大值。初始化一个点,求各W各方向的偏导数,即梯度。沿着梯度上升方向走(步长a),到达另一个点,继续沿梯度上升方向(重新计算)走,一直循环……

由于需要求未知参数的偏导数,而对数函数第单调递增的,而且对数函数在极大化求解时较为方便,所以一般取似然函数的对数作为求最大值的函数,这样求出的最大值和直接求最大值得到的结果是相同的。

所以对Loss函数求对数,得:

现在好了,目标是对Loss求最大,先求梯度:

求解过程:

所以梯度向量为:

所以迭代为:

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

dataMatrix.transpose()即为X,error即为

以上为粗略的解释,如有不对请指出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章