1 原理
1.1 概述
逻辑回归(LR,Logistic Regression)是一个很常用也很好用的分类算法,是的,虽然名字叫回归,但它其实是一个分类算法,所谓分类问题就是类似给定一个人的一些特征,来判断他是个好人还是坏人的问题,当然这只是最简单的二分类。说回逻辑回归,为什么作为一个分类算法,名字要叫回归呢?那必然是因为它和回归有某种神秘的关系,我们先来看看逻辑回归的思路,相信理解了其原理后会大概懂得逻辑回归这个名字是怎么起的~
假如现在有一批线性可分的数据需要分类,如下左图所示(以二维图像做演示):
如上面右图所示,我们可以画出一条界面来将两个类别的数据一分为二,这条界面(超平面)是样本空间内的分类边界(决策边界),因为我们假设了数据是线性可分的,所以决策边界的数学形式为:
要知道决策边界使我们根据假设画出来的,是作出的假设自身及假设的参数的属性,而不是训练集的属性。试想,如果我们确定了参数向量θ,那么决策边界就确定了,四舍五入相当于已经实现分类了啊。既然说到这,我们就看下样本点怎么根据决策边界实现分类,根据已经确定的决策边界,令,我们有分类函数:
现在有样本点,把它代入到函数中,如果,样本点在决策边界下方,属于图中的红点那一类,令其为类别0;如果,属于图中的蓝点类,令其为类别1;如果,样本点刚好在决策平面上,难以判断是哪一类。我们还知道,逻辑回归是可以输出样本属于某个类别的可能性大小的,这个又怎么理解呢?跟决策边界有什么关系?按我的理解的话,我们知道点到超平面的距离计算方法:
所以,在参数已经确定的情况下,代表了样本点到决策边界距离的一种度量,决策边界代表了两个类别的分界线,显然距离决策边界越远越能确定样本点属于某一类别,即可能性应该较大,而距离边界近,则说明是在两个类别的边缘试探,也就不太好判断样本点属于哪个类别。
到这里,我们可以说逻辑回归之所以叫回归,正是因为其分类的核心是一个线性回归模型,这个回归的自变量是样本特征,响应变量反映了样本点所属类别及其到决策边界距离大小,如果得到了这个线性回归模型的参数,分类问题就迎刃而解了。
现在还有一点问题就是的值域是,对于一个距离度量数值我们很难判断它在这样一个范围内是大还是小,也就不好说其可能性的大小,如果能缩放到范围内以概率来解释就好了,因此引入图像如下所示的sigmod函数将的值域映射到上,并且将映射为,这样最终的结果就是样本点属于类别1的概率了。
Sigmoid函数曲线综上所述,逻辑回归可以视为包含一个线性回归和一个值域映射两个过程,逻辑回归模型为:
1.2 从GLM的角度看逻辑回归
逻辑回归也是广义线性模型的一种实现,再来回顾一下GLM的三个假设:
- 定义 y 的估值概率分布属于某种指数分布族,,表示为:
定义 的估计值 ,即的估计值就是 的期望值;
定义线性预测算子,即广义线性模型中的线性因素,对相关的指数分布族的自然参数:。
逻辑回归的假设比GLM的更加具体,其假设为:
1. 定义 y 的估值概率分布属于指数分布族中的伯努利分布,,表示为:
2. 定义 的估计值 ,即的估计值就是 的期望值;
3. 定义线性预测算子,即广义线性模型中的线性因素,对相关的指数分布族的自然参数:。
除了第一条,其他两条假设跟线性回归是一样的,根据广义线性模型(1)广义线性模型中的推导:
我们可以直接套用公式 构建回归模型:
与上面从分类的角度推导出来的模型是完全一样的,根据GLM角度的推导,我们来从概率的角度理解一下逻辑回归,假设样本点的类别分布是属于伯努利分布的,即属于类别1的概率为,属于类别0的概率为,如果我们能得出一个值代表和的大小,不就知道样本应该属于哪个类别了吗?所以我们使用两个类别发生的概率之比来判断大小,引入赔率(odds)和对数赔率(log-odds)的概念:
- 在概率理论中,P/(1-P)的意义叫做赔率(odds),赔率也叫发生比,是事件发生和不发生的概率比,其值域为;
- log(P/(1-P))是对数赔率或者对数发生比(log-odds),其值域为。
因此,我们用log-odds来将的值映射到线性回归上,即作为GLM的联结函数,得到:
逻辑回归最终要输出样本点属于类别1的概率,即:
从这个角度也是可以解释的通逻辑回归的。我们接下来要做的就是根据样本,求出最合适的参数。
2 逻辑回归模型参数的求解
根据上面的讨论,我们已经熟悉了逻辑回归模型的形式,接下来讨论怎么求出模型中的参数。
2.1 极大似然估计
跟线性回归一样,又有分布又有样本,我们先用极大似然估计来试试,写出似然函数,然后取对数得到对数似然函数:
然后就要求导计算参数,这是一个复杂的关于的复合函数,令一阶导数为0计算解析解是一件很困难的事,我没有去试,不过很多资料上说逻辑回归没有解析解,以后有空了可以探索一下。我们发现,通过极大似然估计,参数的求解转化为了:
这就是逻辑回归常用的交叉熵形式的损失函数了。
2.2 交叉熵损失函数
1)理解
如上所述,我们已经知道了交叉熵损失函数的形式,要求出参数只需要优化损失函数即可,这个不急,我们先来理解一下交叉熵损失函数是怎么回事,首先,为什么不像线性回归那样直接使用普通最小二乘法了呢?
- 原因1:普通最小二乘法的形式损失函数为,可以证明在逻辑回归的背景下,这个函数并不是凸函数(对于区间上定义的满足 ,则称为凸函数),的取值为0或1,是一个分段函数,f(x_i)的值域为,画下图就知道这不是一个凸函数,并不一定收敛到全局最优,所以一般不会使用普通最小二乘法,不过可以使用加权最小二乘(WLS),其效果跟交叉熵损失函数一样。
- 原因2:平方损失函数,求导没法把sigmod函数的导数项约掉,梯度更新的速度和sigmod函数本身的梯度是很相关的,sigmod函数在它在定义域内的梯度都不大于0.25,训练会非常的慢。
还是回过头来理解交叉熵损失函数,根据交叉熵的含义,这个损失函数代表了我们求出来的模型的分布与真实分布之间的相似程度,因此越小越好。
交叉熵 Cross Entropy
设 p(x),q(x) 分别是 离散随机变量X的两个概率分布,其中p(x)是目标分布,p和q的交叉熵可以看做是,使用分布q(x) 表示目标分布p(x)的困难程度:
2)梯度下降优化
损失函数:
求梯度(复合函数使用链式法则):
梯度下降:
至此,逻辑回归的原理及模型参数求解就已经分析的差不多了,我们来尝试用一句话总结一下逻辑回归:逻辑回归是假设待预测数据服从伯努利分布的广义线性模型,通过极大化似然函数的方法得到其损失函数,运用梯度下降来优化损失函数求解参数,得到决策边界来达到将数据二分类的目的,总结的好像有些啰嗦,总之就是希望把上面讲到的一系列东西穿起来哈。
3 常见问题
3.1 逻辑回归能否做非线性分类
逻辑回归是一种线性模型,得到的分类决策边界也是一个超平面,理论上说是无法对非线性可分的问题做分类的,那么对于非线性的分类问题应该怎么做呢?
一般会优先使用支持向量机,如果非要使用逻辑回归的话,也是有办法的,那就要对特征做处理,将特征进行非线性变换比如组合乘积、平方等,做出很多新的特征出来,简单来说就是需要我们想办法显式的将数据映射到合适的高维空间中去,类似于下图中本来是非线性可分的数据,使用作为决策边界效果肯定不好,我们改成使用就可以处理了:
不过这就出现了一个新问题,特征怎么处理呢,在工程上怎么实现?
- 如果特征不多,那么我们根据对业务的理解可以手动去指定一些非线性映射规则进行处理;
- 如果特征很多,人工肯定不现实了,我们可以在前面多加几层有非线性激活函数的神经网络,将其输出作为逻辑回归的输入。
其实这么特征处理后再使用逻辑回归好像也不能叫用逻辑回归处理非线性分类问题,好吧,只使用逻辑回归就是处理不了非线性问题,看人家的假设,人家生来就不是干这个事的。
3.2 逻辑回归怎么做多分类
1)多分类转化为二分类
One vs Rest(一对多)
对多分类问题的处理,最简单的思路是我们把多个类别转换为二分类,比如类别A、B、C,我们可以认为A是一类,B和C加一起是另一类,然后B是一类,A和C加一起是另一类这样,这就是OvR(One vs Rest)的思想。
- 将类型class1看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的概率p1;
- 然后再将另外类型class2看作正样本,其他类型全部看作负样本,同理得到p2;
- 依次循环,得到样本标记为每个类别的概率pi,取pi中最大的那个概率对应的样本标记类型作为我们的待预测样本类型。
One vs One(一对一)
除此之外还有OvO(One vs One),将n个类别两两配对,产生n(n-1)/2个二分类任务,获得n(n-1)/2个分类器,新样本交给这些分类器,得到n(n-1)/2个结果,最终结果投票产生。
Many vs Many(多对多)
MvM则是每次将若干个类作为正类,若干个其它类作为反类。显然OvO和OvR是她的特例。显然MvM的正、反类构造必须有特殊的设计,不能随意选取。这里介绍一种最常用的MvM技术:纠错输出码(ECOC)。
ECOC是将编码的思想引入类别拆分,并尽可能在解码的过程中具有容错性。ECOC工作过程主要分为两步:
- 编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集,这样一共产生M个训练集,可训练出M个训练器。
- 解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个与此编码与每个类别各自的编码进行比较,返回其中距离最小的类别最为最终预测结果。
2)Softmax回归多分类器
除了使用上述的组合分类器之外,我们还可以使用Softmax多分类器直接在多个类别中选中我们想要的类别,Softmax分类的内容也不少,我们在下一篇再展开说一下。
4 总结
优点:
- 形式简单,可解释性非常好:从特征的权重可以看到不同的特征对最后结果的影响大小,最终输出结果为概率,理解和使用都很方便;
- 训练和预测速度较快,资源占用小,尤其是内存。
缺点:
- 因为假设依赖,对数据分布要求高,所以现实中准确率不是很高,很难符合数据的真实分布;
- 很难处理数据不平衡的问题。例子:如果如正负样本比 10000:1,我们把所有样本都预测为正也能使损失函数的值比较小;
- 单纯使用逻辑回归无法处理非线性数据,逻辑回归在不进行特殊处理、不引入其他方法的情况下,只能处理线性可分的数据 。
网友评论