逻辑回归是一个形式是Y=1/(1+E(-X))的函数,它的特色是:算法
1, 当X>0,随着X增大,Y很快的接近1;机器学习
2,当x<0,随着X的减少,Y很快的接近0;函数
3,当X=0时,Y=1/2。学习
因为逻辑回归的这种特性(在0-1之间连续),它被用来判断一个学习算法是否正确。spa
除了正确和不正确的结果以外,使用逻辑回归的好处在于,它还能告诉你,你离正确的结果还差多少,从而引导你向正确的方向前进。所以它经常和梯度上升的算法结合起来。下面的代码体现了这样的例子:ci
输入参数1是100行,2列的矩阵; table 输入参数2是100行,1列的矩阵,取值都是0或1; class def gradAscent(dataMatIn, classLabels): |
因为每次迭代都会致使weights朝labelMat的方向靠近,所以通过500次的循环,最终能获得较好的结果,能很好的肯定weights的两个参数。数据类型
固然上述代码存在一个问题,它每次循环都要扫描dataMatrix中全部的行,这对大型的数据是不可容忍的,所以,有了另一种随机梯度上升的算法。它每次只看一行数据,看它的估算与结果的距离,根据距离调整weights。
这个算法仍然存在问题,由于它受每一个训练数据影响是同样的,因此能够经过设置,让后面的实例对数据的影响逐渐变小,从而确保学习的快速收连。
如何处理缺失数据是机器学习中的重要课题,它也严重影响逻辑回归的准确性。
----
总之,若是只是要判断一个学习算法是否准确,有无数种方法,为何必定要选择逻辑回归这个奇怪的函数。个人理解是,逻辑回归函数它能反映出一种方向,可以把“是否正确”转变成“有多么正确或者多么错误”,正由于这个转变,可让机器不断的向正确的方向前进,最终实现准确的预测。