关于逻辑回归的学习,建议大家看看这篇blog,讲的很清楚:点击打开链接
代码实现是根据机器学习实战,照着代码自己来了一遍
逻辑回归,实际上就是对线性回归多增加了一个函数映射,使其值域由无穷区间映射到[0,1]区间
在线性回归中,估计函数为 其中delta是参数向量,x是输入样本的特征向量
而在逻辑回归中,估计函数实际上就是在线性回归的基础上,嵌套了一个sigmoid函数。
逻辑回归的估计函数为 其中,e的指数部分就是线性回归的输出,而可以看出,逻辑回归函数的值域是(0,1),并且图像过(0,1/2)这个点,图像在x=0处很陡峭。
也就是说,在逻辑回归中,我们能将h=0.5作为一个阀值,当估计值大于0.5时把样本分为1类,估计值小于0.5时把样本分为0类。那么只要我们得到了这个估计函数,就能够实现0-1分类了。
估计函数的求解,实际上就是对delta参数向量进行求解。在这里我使用的时梯度下降法,也就是先求出极大似然估计,然后求出极大似然估计的梯度,然后进行多次迭代,每次迭代将参数向量沿着梯度下降最陡峭的方向增加一个步长alpha。alpha如果过小,迭代的速度会很慢,但是如果alpha过大,容易使步子迈得太大,使得我们总是在结果附件徘徊。这里我使用的是变步长法,也就是一开始让步长尽量大,在迭代的过程中,慢慢缩小步长。
另外,我使用的是随机增量梯度下降法。所谓增量,就是指每一次迭代我只考虑一组样本来进行参数更新,而不是遍历所有样本。这样能够降低算法的时间复杂度,而且精确