Logistic回归算法讲解

         回归:假设有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称作回归。

Logistic回归进行分类是根据现有数据对分类边界线建立回归公式(找最佳拟合),以此进行分类。这里的回归表示要找到最佳拟合参数集,多元函数的参数集合,非线性回归。

         Logistic回归训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。不同于之前的分类算法为寻找最优只是调整参数大小,这里用到了寻找最优的算法。

(一)基于Logistic回归和Sigmoid函数的分类

(1)Sigmoid函数

        该分类器适合解决二分类问题,类别输出为1和0,有这样的函数,称为海维赛德阶跃函数,或称单位阶跃函数。但是这种瞬间跳跃过程有时候难处理。幸好,有另一个函数Sigmoid函数,值域为(0,1),公式如下:

Logistic回归算法讲解

        函数图像如下:

Logistic回归算法讲解

        当x=0时,S(x)=0.5

        当x>0时,S(x)>0.5

        当x<0时,S(x)<0.5

(2)分类器

        为了实现Logistic回归分类器,我们将分类器的所有输入值(样本特征值)分别乘以一个回归系数,再将相乘结果相加,得到的值代入S(x)函数里,

        如果S(x)>0.5时归类为1,

        如果S(x)>=0.5时归类为0,

        这就是分类器的思路方法。

        下面该讨论回归系数怎么确定了。

二、基于最优化方法的最佳回归系数确定

        Sigmoid函数的输入记为z,

        z=w0x0+w1x1+……wnxn

        x0, x1,…… xn是特征值,w0 , w1……wn是需要确定的权重系数,即我们需要通过最优化算法求出这些系数。

(1)梯度上升法

        算法思想:要找到某函数的最大值,最好的方法是沿着该函数的梯度方向探寻。函数f(x, y)的梯度表示为:

        Logistic回归算法讲解

        梯度沿x方向移动Logistic回归算法讲解,沿y方向移动Logistic回归算法讲解,梯度总是沿着函数值增长最快的方向。梯度上升算法到达每个点后会重新估计移动方向。移动量的大小用步长α表示。用向量表示的话(w代表特征值向量),梯度上升算法的迭代公式如下:

        w : = w + α▽f (x)

        此处省略了数学推导,定性地说,这里是在计算真实类别与预测类别的差值,迭代过程就是按照该差值的方向调整回归系数。

        该公式一直被迭代执行,直到达到某个停止条件为止,比如迭代次数达到某个指定值或算法达到某个可以允许的误差范围。

        梯度上升算每次更新回归系数时都需要遍历整个数据集,数据集小的时候尚可,但是如果有数十亿样本和成千上万的特征时,虽然分类精确度很好,该方法的计算复杂度就太高了。所以引出了随机提到上升算法。

(2)随机梯度上升算法

        基本思想:每次更新回归系数仅用一个样本点来更新,迭代的次数就是样本数量。由于可以在新样本到来时对分类器进行增量式更新,因而随机梯度上升算法是一个在线学习算法。与“在线学习”相对应,一次处理所有数据被称作“批处理”。

        随机梯度上升算法在效果上表现的没有梯度算法那么完美。

        还有一个问题就是,某些回归系数可能需要经过很多次迭代才能达到稳定值,另外,在大的波动停止后,还有一些小的周期性波动。产生这种现象的原因是存在一些不能正确分类的样本点(数据集并非线性可分),在每次迭代时会引发系数的剧烈改变。我们期望算法能够避免来回波动,从而收敛到某个值。另外收敛速度也需要加快。这里又引出改进的随机梯度上升算法。

(3)改进的随机梯度上升算法

        改进处有两点:第一,alpha在每次迭代时都会调整,一方面缓解数据波动或高频波动,另一方面保证在多次迭代之后新数据仍然具有一定的影响。第二,通过随机选取样本来更新回归系数,减少周期性的波动,而不是挨着顺序依次取样本。具体做法是:每次随机从列表中选取一个样本值,然后从列表中删除掉该值再进行下一次迭代。第三,增加了一个迭代次数作为参数,使迭代次数适当增加(非样本数量次数,而是倍数),使回归系数更加精准。

 

资源链接地址:https://download.csdn.net/download/u012494321/10814124