Logistic回归本质上是在对现有数据的分类边界建立回归公式,以此进行分类。这一点与支持向量机(SVM)类似,SVM也是在最优化分类边界。但SVM选择边界的原则是使边界离支持向量(数据集中离边界最近的点)尽可能远,而Logistic回归是选择最佳拟合曲线,即使拟合结果与标记结果的残差平方和最小。Logistic回归使用Sigmoid函数作为分布函数,将在正无穷到负无穷范围内的输入集X映射到[0,1]集合。Sigmoid函数表达式如下,当z<0,f(x)接近于0,z>0,f(x)接近于1。函数值即为P(Y=1|X)的条件概率。所以只要找到一组回归系数w,与向量x相乘,再按列将它们加起来作为z带入sigmoid函数,函数值>0,5则为1类,反之为0类。Sigmoid函数图像类似于阶跃函数,只是曲线在跳跃点附近更为圆滑,它是一个任意阶可导的凸函数,所以可以用梯度上升法求它的最优参数。
- 最大熵模型
在介绍求解Logistic回归的最佳回归系数之前有必要了解一下什么是最大熵模型。在学习概率模型时,在所有可能的概率分布中,熵最大模型被证明是最好的。在满足约束条件的前提下,熵越大,则表明模型中其他的不确定部分都是等可能的。熵最大模型的学习过程可以简单表示成下面的流程图:
对偶函数极大化问题已被证明等价于最大熵模型的极大似然估计,所以可以像SVM中一样选择算法直接求解对偶函数极大化问题,也可以求解对数似然函数的极大值问题。Logistic回归问题中,常使用梯度上升算法求解对数似然函数极大值问题。
- 梯度上升法确定Logistic回归最佳回归系数
梯度上升法的思想是:要找到函数的最大值,最好的方法是沿着函数的梯度方向向上探寻。迭代公式可以表示为:w: w = w + a * delta L ,其中a为步长,delta L为梯度。对数似然函数L(w)以及梯度的推导如下:
Logistic回归的python实现代码如下:
def gradAscent(dataSet, labels, cycles = 150, alpha = 0.01):
dataSet = mat(dataSet)
y = mat(labels).T
k = dataSet.shape[1]
w = ones([k,1])
for i in range(cycles):
delta = dataSet.T * (y - sigmoid(dataSet * w))
w = w + alpha * delta
return w