目录

  • 用线性回归做分类
  • sigmoid
  • 模型假设
  • 求解-梯度提升法
  • 优点
  • 与其他模型的比较
  • 与线性回归
  • 一个角度
  • 区别与联系
  • 与最大熵模型
  • 与SVM
  • 1、LR和SVM有什么相同点
  • 2、LR和SVM有什么不同点
  • 与朴素贝叶斯
  • 两者的不同点
  • 两者的相同点
  • 模型细节
  • 适合离散特征
  • 为什么使用sigmoid函数?
  • 指数族分布
  • 广义线性模型定义
  • 为何使用最大似然估计而不用均方误差?



用线性回归做分类

线性回归的输出是一个数值,而不是一个标签,显然不能直接解决二分类问题。那我如何改进我们的回归模型来预测标签呢?

一个最直观的办法就是设定一个阈值,比如0,如果我们预测的数值 y > 0 ,那么属于标签A,反之属于标签B,采用这种方法的模型又叫做感知机(Perceptron)。

另一种方法,我们不去直接预测标签,而是去预测标签为A概率,我们知道概率是一个[0,1]区间的连续数值,那我们的输出的数值就是标签为A的概率。一般的如果标签为A的概率大于0.5,我们就认为它是A类,否则就是B类。这就是逻辑回归模型 (Logistics Regression)。


sigmoid

明确预测目标是标签为A的概率。

我们知道,概率是属于[0,1]区间。但是线性模型值域是java逻辑回归 逻辑回归intercept_java逻辑回归
java逻辑回归 逻辑回归intercept_感知机_02
我们需要找到一个模型的值域刚好在[0,1]区间,同时要足够好用。

于是,选择了我们的sigmoid函数。
java逻辑回归 逻辑回归intercept_java逻辑回归_03
导数性质:
java逻辑回归 逻辑回归intercept_感知机_04


模型假设

java逻辑回归 逻辑回归intercept_java逻辑回归_05
建模
java逻辑回归 逻辑回归intercept_线性回归_06
log似然函数
java逻辑回归 逻辑回归intercept_感知机_07
优化目标
java逻辑回归 逻辑回归intercept_感知机_08


求解-梯度提升法

参数更新公式:
java逻辑回归 逻辑回归intercept_最大似然估计_09
计算梯度:
java逻辑回归 逻辑回归intercept_感知机_10
最终参数更新公式:
java逻辑回归 逻辑回归intercept_线性回归_11
注意:上述更新式与线性回归形式上一致,但模型假设不同


优点

  • 直接对分类概率建模,避免了分布假设偏差的问题
  • 输出预测概率,可解释性强
  • Sigmoid函数是任意阶可导的凸函数,易于优化

与其他模型的比较

与线性回归

一个角度

java逻辑回归 逻辑回归intercept_最大似然估计_12
java逻辑回归 逻辑回归intercept_感知机_13
逻辑回归相当于是用线性回归预测的结果去逼近标签的对数几率(标签的对数几率的线性回归)。

区别与联系

区别

  • 输出变量分布假设不同:线性回归假设输出变量服从正态分布,逻辑回归假设输出变量服从伯努利分布
  • 目标函数不同:线性回归优化的目标函数是均方误差(最小二乘),而逻辑回归优化的是似然函数(交叉熵)
  • 模型假设不同:线性归回要求自变量与因变量呈线性关系,而逻辑回归没有要求
  • 解释性不同:线性回归分析的是因变量自身与自变量的关系,而逻辑回归研究的是因变量取值的概率与自变量的概率
  • 学习任务不同:逻辑回归处理的是分类问题,线性回归处理的是回归问题,这也导致了两个模型的取值范围不同:0-1和实数域

联系

  • 两个都是线性模型,线性回归是普通线性模型,逻辑回归是广义线性模型
  • 表达形式上,逻辑回归是线性回归套上了一个Sigmoid函数
  • 参数估计上,都可以用极大似然估计的方法估计参数(高斯分布导致了线性模型损失函数为均方差,伯努利分布导致逻辑回归损失函数为交叉熵)

与最大熵模型

逻辑回归本质上是最大熵模型的一个特例。

与SVM

1、LR和SVM有什么相同点

  1. 都是监督分类算法,判别模型;
  2. LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
  3. 两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的。

2、LR和SVM有什么不同点

  • 本质上是其loss function不同
    区别在于逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
    逻辑回归损失函数:
  • java逻辑回归 逻辑回归intercept_机器学习_14

  • SVM损失函数:
  • java逻辑回归 逻辑回归intercept_线性回归_15

  • LR方法基于概率理论,假设样本为0或者1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值,或者从信息论的角度来看,其是让模型产生的分布P(Y|X)P(Y|X)尽可能接近训练数据的分布;支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面 。
  • SVM只考虑分类面上的点,而LR考虑所有点(远离的点对边界线的确定也起作用)
    SVM中,在支持向量之外添加减少任何点都对结果没有影响,而LR则是每一个点都会影响决策。
    Linear SVM不直接依赖于数据分布,分类平面不受一类点影响 ;LR则是受所有数据点的影响,所以受数据本身分布影响的,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。
  • 在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
    SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。 而LR则每个点都需要两两计算核函数,计算量太过庞大。
  • SVM依赖于数据的测度,而LR则不受影响
    因为SVM是基于距离的,而LR是基于概率的,所以LR是不受数据不同维度测度不同的影响,而SVM依赖于不同维度测度的不同,如果差别较大需要做normalization 。当然如果LR要加上正则化时,也是需要normalization一下的 。
  • SVM自带结构风险最小化,LR则是经验风险最小化
    SVM的损失函数就自带正则(损失函数中的java逻辑回归 逻辑回归intercept_机器学习_16项),因此SVM是结构风险最小化,而LR必须另外在损失函数上添加正则项。
  • LR和SVM在实际应用的区别
    根据经验,对于小规模数据集,SVM的效果要好于LR,但是大数据中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,所以经常会被大量采用。

与朴素贝叶斯

两者的不同点

  • 逻辑回归属于判别式模型,而朴素贝叶斯属于生成式模型。
    具体来说,两者的目标虽然都是最大化后验概率,但是逻辑回归是直接对后验概率P(Y|X)进行建模,而朴素贝叶斯是对联合概率P(X,Y)进行建模。
  • 朴素贝叶斯分类器要求“属性条件独立假设”,即对于已知类别的样本x,假设x的所有属性是相互独立的。这就导致了两点与逻辑回归的不同之处:
  • 朴素贝叶斯的限制条件比逻辑回归更加严格,意味着逻辑回归的应用范围更广。
  • 朴素贝叶斯可以不通过(而不是不能)梯度下降等优化方法进行参数优化,事实上,在利用极大似然法的进行参数估计的时候,由于其严格的条件限制,朴素贝叶斯分类器的相关参数就已经很明确了,或者说是有固定的形式了,它可以直接通过统计每个特征的逻辑发生比来当做权重。而逻辑回归求得的参数并没有明确的形式(因为他没有朴素贝叶斯那么严格的限制条件),可以通过梯度下降法等优化方法,得到特征之间的耦合信息,从而得到相应的权重(参数)。
  • 逻辑回归是通过学习超平面来实现分类,而朴素贝叶斯通过考虑特征的概率来实现分类。
  • 逻辑回归在有相关性feature上面学习得到的模型在测试数据的performance更好。也就是说,逻辑回归在训练时,不管特征之间有没有相关性,它都能找到最优的参数。而在朴素贝叶斯中,由于特征直接相互独立的严格设定,在有相关性的feature上面学习到的权重同时变大或变小,它们之间的权重不会相互影响。从这方面来说,如果能够在对参数较好地控制,在损失项方面处理的很好的话,逻辑回归相对朴素贝叶斯在应用时更不会限制在特征工程上面。(简言之,逻辑回归对特征工程的要求相对朴素贝叶斯更低)
  • 朴素贝叶斯的好处是没有优化参数,通过训练数据可以直接得到一个概率表,这些有助于并行化
  • 在小数据上面朴素贝叶斯分类器可以取得更好的效果,随着数据的增多、特征维度的增大,逻辑回归的效果更好。这也是因为朴素贝叶斯是生成模型,在有prior的情况下模型能够把数据fit的更好,而逻辑回归属于判别模型,目标驱动化,不去建模联合概率,通过训练数据直接预测输出,因此在数据足够多的情况下能够得到更好一些的效果。

两者的相同点

  • 两者都利用了极大似然法进行参数估计。虽然似然函数的目标不同。
  • 逻辑回归和朴素贝叶斯分类器都是对特征的线性表达,虽然两者拟合的参数不同,前者是W和b后者是先验概率和似然。
  • 逻辑回归和朴素贝叶斯建模的都是条件概率(后者通过贝叶斯公式得到) ,对所最终求得的不同类的结果有很好的解释性。而不像SVM,神经网络这样解释性不高。

模型细节

适合离散特征

  1. 模型稳定性和鲁棒性。离散后的特征能够去除噪声,对异常值不再敏感,可以加强模型的稳定性。
  2. 简化模型:特征离散化后就降低了样本中的个别信息对模型的影响,降低模型的过拟合的风险。
  3. 计算更快速:更少的变量会运算复杂的大大降低,加快计算速度。
  4. 易于解释性:离散特征方便我们对业务的解释。

为什么使用sigmoid函数?

  • sigmoid函数的优势:概率解释,单调连续可导等
  • 广义线性模型,指数族分布解释

指数族分布

java逻辑回归 逻辑回归intercept_java逻辑回归_17

广义线性模型定义

java逻辑回归 逻辑回归intercept_感知机_18
伯努利分布属于指数分布族
java逻辑回归 逻辑回归intercept_线性回归_19
则有
java逻辑回归 逻辑回归intercept_感知机_20

为何使用最大似然估计而不用均方误差?

可以从求最优解的角度来解释:

如果用最小二乘法,目标函数就是
java逻辑回归 逻辑回归intercept_感知机_21
是非凸的,不容易求解,会得到局部最优。

如果用最大似然估计,目标函数就是对数似然函数:
java逻辑回归 逻辑回归intercept_最大似然估计_22
是关于参数的高阶连续可导凸函数,可以方便通过一些凸优化算法求解,比如梯度下降法、牛顿法等。