logistic回归与判别分析

一.logistic回归

  1.理论介绍

(1)logistic回归的引入

 是一个二分类的监督学习方法,在二分类中,为什么弃用传统的线性回归模型,改用logistic回归?

原因有两点

(1)二分类取值范围是[0,1],而普通线性回归的范围是实数集;

(2)实际中很多问题,输入与输出之间的关系并不是线性关系,即可能更多的是x取值很小或很大对因变量影响不大,但是当自变量取中间值的时候对因变量影响比较大。

(2)logistic回归模型的实现

        sigmoid函数是一条S形曲线,特点就是当输入很小或很大时,输出变化不明显,但是对于在输入取值在范围是中间的时候,变化很大,这符合 很多实际问题,且取值范围是0到1之间。

        将自变量的线性函数的和带入sigmoid函数,即可使因变量y映射到[0,1]区间范围上,即将自变量的线性函数转化为概率,输入的线性函数越接近于正无穷,概率值越接近于1,输入的线性函数的值越接近于负无穷,概率值越接近于0,这就是logistic模型。

       接下来就需要对logistic模型进行求解,即求出各个特征的回归系数。

 2.参数估计

(1)损失函数的选择

       首先我们选择损失函数为对数损失函数,为什么不用平方损失函数呢?

        一是因为如果采用平方损失函数作为损失函数,损失函数不是凸函数,会存在很多局部最优值,梯度下降法无法迭代得到最终得到参数;

        二是在线性回归中,是假设误差项服从均值为0的正态分布的,此时y也是服从正态分布的,根据y的分布,用极大似然估计得到似然函数并化简,并忽略常数项,似然函数的极大化就相当于平方损失函数的最小化;而在logistic中,y是服从二项分布的,不是正态分布,通过极大似然估计得到的似然函数就对应了对数损失函数的极小化。因此,问题不同,一个是分类一个是回归,对应的假设不同,就决定了二者的损失函数不同,一个是平方误差损失函数,一个是对数损失函数;

       三是逻辑回归的输出值是二值的,对应到二项分布,二项分布用对数损失函数更直观。

(2)参数估计方法

       1.极大似然估计法

      在极大似然估计中使用梯度上升法来优化求解,不用牛顿法的原因是牛顿法不易于并行化,而梯度下降法用map,reduce这样简单算子就可以实现并行化

       2.损失函数最小化

      损失函数的形式等价于将极大似然估计的目标函数乘以一个负号

 3. 决策边界

        logistic的分类规则是当y的值大于0.5时,将对应的实例归到正例,否则将其归到负类。按照sigmoid函数的表达式,当sigmoid函数的参数是自变量的线性函数时,即可得到线性的决策边界,当sigmoid函数的参数是自变量的非线性函数时,即可得到非线性的决策边界。

       因此,logistic回归的决策边界既可以是线性的决策边界,也可以是非线性的决策边界。

4. 正则化

       当特征变量过多时,可能会出现过拟合,得到的损失函数可能会非常接近于0,甚至为0,此时可以用正则化来防止过拟合。

       具体是在损失函数后面加上正则化项,正则化项只需要满足是模型复杂度的单调递增函数即可,模型越复杂,正则化项越大,这样,用梯度下降法可以得到逻辑回归的梯度下降法的正则化版本的参数迭代更新公式。

3.模型特点

(1)优点:

1、实现简单,分类时计算量非常小,速度很快,存储资源低;

2、可以实现非线性分类。

(2)缺点:

1、容易欠拟合,一般准确度不太高

2、只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类)

二.判别分析

1.和逻辑回归相比

       和逻辑回归相比:

(1)判别分析可以用于多分类情况;

(2)线性判别分析比逻辑回归更稳定;

(3)利用贝叶斯定理计算后验概率,当条件概率分布是正态分布,和逻辑回归很相似。

2.线性判别分析

(1)单变量判别分析

  条件概率分布是正态分布,各个类方差相同

       假设给定类别时自变量的条件概率分布是正态分布,那么利用贝叶斯公式,可得到后验概率,只需要比较分子即可分类,由于分子是指数的形式,不方便比较,可以取对数再作比较,当只有两个类别,两个类的先验概率相同,且两个类别的方差也一样时,当新样本的自变量大于两个类的均值的均值时,把新样本归到第一类,否则是第二类

     在这种情况下,我们可以计算贝叶斯分类器是因为我们知道给定类别下的条件概率分布以及各 个分布的均值方差,在真实的世界中,我们是无法计算贝叶斯分类器的。并且我们能确定x是服从正态分布,也还要估计所有的参数如均值方差,先验概率。均值时通过训练样本的每一类的均值来估计,方差也是通过训练样本的方差来估计,这里的方差在假定相同的情况下,是K个类的方差的加权平均估计,先验概率是通过每一类的样本数占比来估计。然后将所有的参数的估计值带入贝叶斯公式。之所以是线性判别分析,是因为贝叶斯公式得到的判别函数是x的线性函数

(2)多变量判别分析

条件概率分布是正态分布,各个类有共同的方差矩阵

      假设自变量X服从多元高斯分布,且有着类方差和公共的协方差矩阵,且有着类方差和公共的协方差矩阵,这个多元高斯分布假设每个预测变量都服从一个一维的高斯分布,和其他变量之间有着相关性

      此时,通过条件概率分布计算后验概率分布,由于分母一样,故将分子作为类的判别函数,每个类别下的条件概率分布不同的地方只是类均值,我们计算后验概率只需要通过训练样本估计各类的均值和各类的先验概率,然后带入判别函数即可把新样本进行分类,这里的判别函数和一维的情形类似,仍然是x的线性函数,因此是线性判别分析

      LDA是尝试接近贝叶斯分类器来分类的,有的时候效果很好,总体误差率很低,但是特定类表现很差,比如敏感度很低,敏感度是指的实际为正类的被识别为正类的比例,又称为召回率,特异度是指的是实际为负类被识别为负类的比例,对于很多实际问题中如信用卡信用预测,我们都会更关注于敏感度,如果我们更关注于敏感度,愿意牺牲总体误差率,那么可以调整阈值0.5到更低,这样就会得到一个改善了的分类器

      阈值移动的原理是:正负样例的概率比是事件发生的几率,通常·我们说的阈值为0.5就是当预测几率大于1时,就预测为正类,但是这个前提是训练样本是总体的无偏采样,即总体中的正负样本的比例在训练样本中得到了保持,那么训练样本的正负样本的比就是真实事件发生的几率,-那么当观测几率大于真实几率时,就预测为正类,即当p/(1-p)>m/n时,而我们通常用的阈值是0.5实际上对应着p/(1-p)>1,即认为真实几率是1

      但是阈值的提高会带来特异度的降低以及总体误差率的提高,那么什么阈值比较合理呢,此时我们可以画出所有阈值的表现,ROC曲线是一个很好展示这一特点的曲线,其横坐标是1-特异度,纵坐标是敏感度,那么只要ROC曲线越贴近左上方,那么表示这个分类器表现越好,可以用来比较各个分类器的表现,还可以观察不同阈值处的分类器的表现

3.二次判别分析

条件概率是正态分布,各个类有不同的方差矩阵

      和LDA一样,也是通过训练样本估计各个类的均值和方差矩阵以及先验概率,带入判别函数,比较各个类的后验概率。但是在QDA里面,我们知道因为每个类有各自的协方差矩阵,对于x的平方项就保留了下来,故判别函数是x的二次函数,因此名字由此而来

4.QDA和LDA的比较

     区别在于LDA有共同的协方差矩阵,QDA没有,那么QDA的二次项系数是各个类的协方差矩阵,即有Kp(1-p)个参数,而LDA的一次项系数是Kp个参数,说明QDA比LDA更灵活,模型更复杂,带来的是高方差低偏差,而LDA是高偏差低方差

      那么二者的实际适用场景是:当训练样本比较少时,降低方差是关键的,那么LDA比QDA效果好,反之QDA效果更好;或者当QDA或者LDA本身的前提假设不满足时,则会选择对方

5.几种分类方法的比较

       前面我们说了当LDA的条件概率分布是正态分布时,二者是很相似的,我们可以来看看一维的情况。

      相似点:逻辑回归中,正负样本的对数几率时x的线性函数,在LDA中,各个类的后验概率的对数几率,分母约去,分子是指数函数,相除还是指数函数,取对数就是x的线性函数,那么二者形式上是一样的,因此logistic和LDA产生一个线性的决策边界。

     两种方法的唯一差异是逻辑回归的线性函数的系数是通过极大似然估计得到的,而LDA的系数是类均值,方差的函数,是通过估计训练样本的类均值和方差得到的,二者的联系也适用于多维的情况。

      但是LDA和逻辑回归并不总是得到相似的结果,当LDA的共方差假设不满足时,逻辑回归的效果很好,相反,LDA的效果更好

     没有一种方法在任何场景下会比其他方法都好,当真实的决策边界是线性的时候,LDA和logistic的效果比较好,当边界是适度的非线性,则QDA拟合效果较好,若边界是更加复杂的非线性,那么KNN的效果好,但是非参数方法例如KNN的顺滑度必须被仔细的选择。


推荐阅读更多精彩内容