逻辑回归的目的:寻找一个非线性函数sigmoid的最佳拟合参数。求解时使用的是最优化算法,最常用的是梯度上升法。
利用逻辑回归进行分类的中心思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。
对于现有的一些数据点,我们用一条直线对这些点进行拟合(这条直线称为最佳拟合直线),这个拟合的过程就叫做回归。我们根据拟合的直线方程,进行分类。在《机器学习实战》中,使用sigmoid函数进行处理:
当 x 为 0 时,Sigmoid 函数值为 0.5 。随着 x 的增大,对应的 Sigmoid 值将逼近于 1 ; 而随着 x 的减小, Sigmoid 值将逼近于 0 。为了实现 Logistic 回归分类器,我们在每个特征上都乘以一个回归系数,然后把所有结果值相加,将这个总和代入 Sigmoid 函数中,进而得到一个范围在 0~1 之间的数值。任何大于 0.5 的数据被分入 1 类,而小于 0.5的数据 即被归入 0 类。
也可写成,其中,x是输入的数据向量,w是所求的最佳参数。
为寻找最佳参数,文中使用梯度上升法进行求解。(要找到某函数的最大值,最好的方法是沿着该函数的梯度方向探寻。)
梯度上升算法用来求函数的最大值,而梯度下降算法用来求函数的最小值。公式分别如下:
梯度上升法伪代码:
每个回归系数初始化为 1
重复 R 次:
计算整个数据集的梯度
使用 步长 x 梯度 更新回归系数的向量
返回回归系数
逻辑回归流程:
(1)根据现有数据,使用最优化方法训练得到最优的拟合参数
(2)将测试集上每个特征向量乘以最优化得到的回归系数,再将该结果求和,输入到sigmoid函数中。
(3)对应的sigmoid值大于0.5则预测类别标签为1,否则为0。
梯度上升算法在每次更新回归系数时都需要遍历整个数据集,因此在处理数据量大的数据集时其复杂度非常高。一种改进方法是一次仅用一个样本点来更新回归系数,该方法称为随机梯度上升算法。该算法属于“在线学习”算法,可以在新样本到来时对分类器进行增量式更新,而不需要重新读取整个数据集进行批处理运算。其伪代码如下:
所有回归系数初始化为 1
对数据集中每个样本
计算该样本的梯度
使用 alpha x gradient 更新回归系数值
返回回归系数值