逻辑斯蒂回归模型

一、问题背景

逻辑斯蒂回归模型是一种分类模型,其目的解决分类问题而非回归问题。logistic回归是一个判别模型,直接学习后验概率分布,其学习算法可以理解为极大似然估计法。模型分类算法通过定义一个分离超平面来分割不同类别的数据,用sigmoid函数作为后验概率分布函数来对输入数据进行分类。模型的学习算法通过对样本进行极大似然估计获得似然函数,通过梯度下降法求解似然函数中的参数,也就是分离超平面的参数。接下来对算法进行详细介绍,主要解答以下问题。

  • 为什么使用sigmoid函数
  • 怎样进行极大似然估计
  • 学习算法的收敛性分析
  • 与其他模型进行对比

二、算法详解

1. 分类函数

分离超平面 wx+b 有很多性质,其中很重要的一点是,分离超平面一侧的点带入超平面计算使得函数值大于0,另一侧的点带入计算函数值小于0,这个信息很容易用来进行分类,可以使用一种称为阶跃函数作为直接的分类器进行分类。阶跃函数 f(x)=1 if x0;f(x)=0 if x<0 。这样 f(wx+b) 可以直接用来作为分类器,但是困难在于这个函数不可微,因此在学习这个分类器时就无法使用求偏导数的方法,导致梯度下降法等求极值的方法都无法使用,因此我们需要更换一个函数,但同时也希望这个函数在自变量大于0时和自变量小于0时函数值有很大的不同,因此想到了使用sigmoid函数  σ(x)=11+ex ,这个函数的图像很。 
sigmoid函数 
这个函数具有这些性质使得函数经常被使用到机器学习的分类模型中。

  • 自变量很小的时候函数值几乎为0,自变量很大的时候函数值几乎为1。这个性质和分离超平面配合进行分类。
  • 函数可导并且导数很容易求解 σ(x)=σ(x)(1σ(x)) (求导过程不写了)

使用这个函数可以很容易的进行分类,当分离超平面求解出来之后,使用 σ(wx+b) 这个函数作为分类器,将分离超平面计算后大于0的样本作为正例1,小于0为负例0。对于二分类问题,视标签变量满足伯努利分布(两点分布),分类器如下定义。

P(y=1|x)=σ(wx+b)=ewx+bewx+b+1P(y=0|x)=1σ(wx+b)=1ewx+b+1

2. 学习算法

这里以二分类问题为例,由于变量满足伯努利分布,两点分布的概率公式为 P(y|x)=py*(1p)1y ,因此后验概率分布为 P(y|x)=P(y=1|x)yP(y=0|x)1y ,对于所有的样本点进行后验概率分布的极大似然估计,则关于分离超平面参数的似然函数为

L(w,b)=i=1Mσ(wx(i)+b)y(i)(1σ(wx(i)+b))1y(i)
对似然函数取对数为似然对数可转化为
l(w,b)=i=1My(i)log(σ(wx(i)+b))+(1y(i))log(1σ(wx(i)+b))
对w和b分别求偏导数,并不能直接求解w和b,因此需要通过其他求极值的方法,这里使用基本的 梯度下降法 ,用平面拟合这个似然函数,沿着每点的梯度方向下降,迭代至似然函数的极值点。

这里加入一种梯度下降法的改进方法,由于梯度下降法解决非凸优化问题时可能存在多个极值,梯度下降法中的步长问题十分困扰,较大的步长可以增强全局搜索能力但是可能会越过某一个极值点,较小的步长可以增加局部搜多的能力但是可能会陷入局部极值。我们希望算法刚开始能够有很强的全局搜索能力从而快速的到达极值附近,然后在算法后来能在局部进行细致的搜索到达极值点,这样希望步长随着迭代次数从大到小的变化。因此有一种改进的梯度下降法,开始初始化较大的步长 η ,每次迭代固定代数之后减小 η 直至到达步长的下界。

w^=[wTb]T ,推导过程在《逻辑斯蒂回归参数梯度推导》中给出。对其求出梯度为

Lwj=i=1M(y(i)σ(w^x(i)))x(i)j
这样通过平面拟合曲面,然后在参数空间中进行迭代,每次沿着梯度的方向,搜索一定的步长,最终就能搜索到极值点。

3. 收敛性分析

对于每个方向的梯度公式可以这样理解,每个方向的梯度受到每个样本点在这个方向上的影响,例如第j个方向的 wj 只受到每个样本点中 xj 的影响,而不同的样本点产生的影响程度的权重受到sigmoid函数值和标签值的影响。如果第i个样本点被错误的分类,那么 y(i)σ(w^x(i)) 这个值的绝对值一定很大,例如这个类别实际是1而函数值为0.1,说明这个点被错误的分到了0,那么样本点的权重为0.9,再如类别实际为1,而函数值为0.9,说明这个点被正确分类,权重为0.1。很明显,错误分类点权重会提高,而正确分类点权重降低。和Boosting算法的思想十分相似。Boosting算法中训练误差是有界的,逻辑斯蒂回归中应该训练误差也是有界的,因此逻辑斯蒂回归的学习算法是可以收敛的。这里的收敛性分析并没有详细的证明但可以大概理解。

4. 对比

逻辑斯蒂回归和感知机模型、支持向量机模型对比

同样都用到了分离超平面,但是如何利用这个分离超平面有所区别。感知机模型将分离超平面对数据分割,寻找出所有错误的分类点,计算这些点到超平面的距离,使这一距离和最小化,也就是说感知机模型的最优化问题是使得错误分类点到超平面距离之和最小化。逻辑斯蒂回归是将分离超平面作为sigmoid函数的自变量进行输入,获得了样本点被分为正例和反例的条件概率,然后用极大似然估计极大化这个后验概率分布,也就是说逻辑斯蒂回归模型的最优化问题是极大似然估计样本的后验概率分布。支持向量机的最优化问题是最大化样本点到分离超平面的最小距离。三个算法的一些性能对比如下。

  • 感知机模型计算简单,只需要计算错误样本点和标签的乘积对参数进行更新。其在线性可分的数据集中收敛,但在线性不可分的数据集中不收敛
  • 逻辑斯蒂回归相比感知机多了一层sigmoid函数的计算,计算仍然十分高效。其在线性可分的数据集中不能收敛但可以加入正则化来使算法收敛,在线性不可分的数据集中可以较好的收敛
  • 支持向量机计算相对复杂,但因为其实凸优化问题,因此算法一定可以收敛。
  • 感知机模型无法加入核方法映射到高维,而逻辑斯蒂回归和支持向量机都能通过核方法对低维不可分高维可分的数据集进行分类。
  • 感知机模型和支持向量机模型可以通过二分类方法的扩展处理多分类问题,方法是对每一类都产生一个分离超平面区分该类和其他类的样本。逻辑斯蒂回归进行多分类问题通过选择最后一个类为基准类,构造k-1个分离超平面(分类器),k-1个分类器计算sigmoid函数值求和在加1作为投票法的分母,每个分类器计算的sigmoid函数值作为分子进行投票,选出最大的分配到该类别。

三、实验

实验使用的测试集是UCI中的马的患病问题,使用299个训练样例,每个样例包括21个特征属性,分为0、1两类,有30%左右的缺损数据。使用67个测试样例。使用批处理梯度下降法计算的平均错误率为28.4%,使用随机梯度下降发计算的平均错误率为29.1%。python代码在这里

猜你喜欢

转载自blog.csdn.net/sun_wangdong/article/details/78826254