逻辑回归优点是:一是逻辑回归的算法已经比较成熟,预测较为准确;二是模型求出的系数易于理解,便于解释,不属于黑盒模型,尤其在银行业,80%的预测是使用逻辑回归;三是结果是概率值,可以做ranking model;四是训练快。当然它也有缺点,分类较多的y都不是很适用;对于自变量的多重共线性比较敏感,所以需要利用因子分析或聚类分析来选择代表性的自变量;另外预测结果呈现S型,两端概率变化小,中间概率变化大比较敏感,导致很多区间的变量的变化对目标概率的影响没有区分度,无法确定阈值。下面我先具体介绍下这个模型。
1、逻辑斯谛分布
介绍逻辑斯谛回归模型之前,首先看一个并不常见的概率分布,即逻辑斯谛分布。设X是连续随机变量,X服从逻辑斯谛分布是指X具有如下的累积分布函数和概率密度函数:
![](http://upload-images.jianshu.io/upload_images/4155986-7a26ca9b8ddcfc17.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/630)
式中,μ为位置参数,γ>0为形状参数。逻辑斯谛的分布的密度函数f(x)和分布函数F(x)的图形如下图所示。其中分布函数属于逻辑斯谛函数,其图形为一条S形曲线。该曲线以点(μ,1/2)
为中心对称,即满足:
![](http://upload-images.jianshu.io/upload_images/4155986-3c826a91d3616230.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/636)
曲线在中心附近增长较快,在两端增长较慢,形状参数γ的值越小,曲线在中心附近增长得越快。
![](http://upload-images.jianshu.io/upload_images/4155986-133988cd8e536cf4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
2、逻辑斯谛回归模型:
线性回归的应用场合大多是回归分析,一般不用在分类问题上,原因可以概括为以下两个:
1)回归模型是连续型模型,即预测出的值都是连续值(实数值),非离散值;
2)预测结果受样本噪声的影响比较大。
2.1 LR模型表达式
LR模型的表达式为参数化的逻辑斯谛函数,即:
![](http://upload-images.jianshu.io/upload_images/4155986-f7814da0a2442bb3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/380)
![](http://upload-images.jianshu.io/upload_images/4155986-cf4333c6478c19d2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
2.2 理解LR模型
2.2.1 对数几率
一个事件发生的几率(odds)是指该事件发生的概率与该事件不发生的概率的比值。如果事件发生的概率是p,那么该事件的几率为p/(1-p) ,该事件的对数几率(log odds)或logit函数是:
![](http://upload-images.jianshu.io/upload_images/4155986-b5004684c88eee29.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/414)
对LR而言,根据模型表达式可以得到:
![](http://upload-images.jianshu.io/upload_images/4155986-41aeb8e1e905b713.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/412)
即在LR模型中,输出y=1的对数几率是输入x的线性函数,或者说y=1的对数几率是由输入x的线性函数表示的模型,即LR模型。
2.2.2 函数映射
除了从对数几率的角度理解LR之外,从函数映射也可以理解LR模型。
考虑对输入实例x进行分类的线性表达式θT,其值域为实数域,通过LR模型的表达式可以将线性函数θTx的结果映射到(0,1)区间,取值表示为结果为1的概率(在二分类场景中).
线性函数的值越接近于正无穷大,概率值就越近1;反之,其值越接近于负无穷,概率值就越接近于0,这样的模型就是LR模型。
LR本质上还是线性回归,只是特征到结果的映射过程中加了一层函数映射,即sigmoid函数,即先把特征线性求和,然后使用sigmoid函数将线性和约束至(0,1)之间,结果值用语二分或回归预测。
2.2.3 概率解释
LR模型多用于解决二分类问题,如广告是否被点击(是/否),商品是否被购买(是/否)等互联网领域中常见的应用场景。但在实际场景中,我们又不把它处理成绝对的分类,而是用其预测值作为事件发生的概率。
这里从事件,变量以及结果的角度给予解释。
我们所能拿到的训练数据统称为观测样本。问题,样本是如何生成的?
一个样本可以理解为发生的一次事件,样本生成的过程即事件发生的过程,对于0/1分类问题来讲,产生的结果有两种可能,符合伯努利试验的概率假设。因此,我们可以说样本的生成过程即为伯努利试验过程,产生的结果(0/1)服从伯努利分布,那么对于第i个样本,概率公式表示如下:
![](http://upload-images.jianshu.io/upload_images/4155986-05acb097d54aee46.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/622)
将上面两个公式合并在一起,可以得到第i个样本正确预测的概率:
![](http://upload-images.jianshu.io/upload_images/4155986-c053e44c74a3e4f7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
上式是对一个样本进行建模的数据表达。为什么可以这么做呢,因为y=1时后面一项为1,y=0时前面一项为1。那么对于所有的样本,假设每条样本生成过程独立,在整个样本空间中(N个样本)的概率分布(即似然函数)为:
![](http://upload-images.jianshu.io/upload_images/4155986-c6f3dcb85b8c89d8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
接下来我们就可以通过极大似然估计方法求概率参数。
3、模型参数估计
3.1 Sigmoid函数
上图所示即为sigmoid函数,它的输入范围为−∞→+∞,而值域刚好为(0,1),正好满足概率分布为(0,1)的要求。用概率去描述分类器,自然要比阈值要来的方便。而且它是一个单调上升的函数,具有良好的连续性,不存在不连续点。
![](http://upload-images.jianshu.io/upload_images/4155986-aee35808f2ff0708.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
此外非常重要的,sigmoid函数求导后为:
![](http://upload-images.jianshu.io/upload_images/4155986-ee503e37db09ae3c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
3.2 参数估计推导
上一节的公式不仅可以理解为在已观测的样本空间中的概率分布表达式。如果从统计学的角度可以理解为参数θ
θ
似然性的函数表达式(即似然函数表达式)。就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大。参数在整个样本空间的似然函数可表示为:
![](http://upload-images.jianshu.io/upload_images/4155986-3be928ab9dc7a774.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
为了方便参数求解,对这个公式取对数,可得对数似然函数:
![](http://upload-images.jianshu.io/upload_images/4155986-f2324e145e45a0ab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
然后,我们使用随机梯度下降的方法,对参数进行更新:
![](http://upload-images.jianshu.io/upload_images/4155986-ca96b8cb282a4630.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
最后,通过扫描样本,迭代下述公式可救的参数:
![](http://upload-images.jianshu.io/upload_images/4155986-4f3d52cd4064d4c8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/652)
式中,a表示学习率。
以上的推导,就是LR模型的核心部分,在机器学习相关的面试中,LR模型公式推导可能是考察频次最高的一个点,要将其熟练掌握。
4、LR的优缺点
优点
一、预测结果是界于0和1之间的概率;
二、可以适用于连续性和类别性自变量;
三、容易使用和解释;
缺点
一、对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;
二、预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。 导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。
5、LR和SVM
1、LR采用log损失,SVM采用合页损失。
2、LR对异常值敏感,SVM对异常值不敏感。
3、在训练集较小时,SVM较适用,而LR需要较多的样本。
4、LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。
5、对非线性问题的处理方式不同,LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,还可以通过kernel。
6、svm 更多的属于非参数模型,而logistic regression 是参数模型,本质不同。其区别就可以参考参数模型和非参模型的区别
那怎么根据特征数量和样本量来选择SVM和LR模型呢?Andrew NG的课程中给出了以下建议:
如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况。(LR和不带核函数的SVM比较类似。)
参考文献:https://plushunter.github.io/2017/01/12/机器学习算法系列(3):逻辑斯谛回归