logistic模型原理与推导过程分析

333 阅读9分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情

从线性分类器谈起

        给定一些数据集合,他们分别属于两个不同的类别。例如对于广告数据来说,是典型的二分类问题,一般将被点击的数据称为正样本,没被点击的数据称为负样本。现在我们要找到一个线性分类器,将这些数据分为两类。用X表示样本数据,Y表示样本类别(例如1与-1,或者1与0)。我们线性分类器的目的,就是找到一个超平面将两类样本分开。对于这个超平面,可以用以下式子描述:

​编辑

对于logistic回归,有:

​编辑

其中x为样本,x=[x1,x2,⋯,xn]为n维向量,函g为我们常说的logistic函数g的更一般公式为:

​编辑

为什么要用Logistic函数

        分类器中最简单的自然是线性分类器,线性分类器中,最简单的应该就属于感知器了。在上个世纪五六十年代,感知器就出现了:

​编辑

         感知器的思想,就是对所有特征与权重做点积(内积),然后根据与阈值做大小比较,将样本分为两类。稍微了解一点神经网络的同学,对一下这幅图一定不陌生,这幅图描述的就是一个感知器。

​编辑

        感知器相当于控制原理中的阶跃函数:

​编辑

        这两者的本质都是一致的,即通过划定一个阈值,然后比较样本与阈值的大小来分类。

        这个模型简单直观,实现起来也比较容易。但是问题在于,这个模型不够光滑。第一,假设t0=10,现在有一个样本进来,最后计算出来的值为10.01,你说这个样本分类应该是为1还是0呢?第二,这个函数在t0这点有个阶跃,有从0到1的突变,导致这点不连续,在数学上处理起来也不方便。

​编辑

        因此使用logistic函数对比前面的感知器或者阶跃函数,通过logistic函数的图像,我们很容易总结出他的以下优点:
1.logistic函数的输入范围是−∞→+∞,而之于刚好为(0,1),正好满足概率分布为(0,1)的要求。我们用概率去描述分类器,自然比单纯的某个阈值要方便很多;
2.logistic函数是一个单调上升的函数,具有良好的连续性,不存在不连续点。

有监督学习

        机器学习分为有监督学习,无监督学习,半监督学习,强化学习。对于逻辑回归来说,就是一种典型的有监督学习。既然是有监督学习,训练集自然可以用如下方式表述:

​编辑

对于这m个训练样本,每个样本本身有n维特征。再加上一个偏置项x0 ,则每个样本包含n+1维特征:

​编辑

                                                                                                                        其中x∈Rn+1,x0=1y∈{0,1}

李航博士在统计学习方法一书中给分类问题做了如下定义:
分类是监督学习的一个核心问题,在监督学习中,当输出变量Y取有限个离散值时,预测问题便成为分类问题。这时,输入变量X可以是离散的,也可以是连续的。监督学习从数据中学习一个分类模型或分类决策函数,称为分类器。分类器对新的输入进行输出的预测,称为分类(classification).

为什么要使用logistic函数:

​编辑

其中一个重要的原因,就是要将Hypothesis(NG课程里的说法)的输出映射到0与1之间,既:

​编辑

统计学习方法都是由模型,策略,和算法构成的,即统计学习方法由三要素构成,可以简单表示为:
方法=模型+策略+算法方法=模型+策略+算法
方法=模型+策略+算法

对于logistic回归来说,模型自然就是logistic回归,策略最常用的方法是用一个损失/代价函数来度量预测错误程度,算法则是求解过程。

logistic回归模型

        逻辑回归(Logistic Regression)是机器学习中最常见的一种用于二分类的算法模型,由于其数学原理简单易懂,作用高效,其实际应用非常广泛。虽然带回归二字,实则是分类模型,下面从logit变换开始。

logit变换

        我们在研究某一结果y与一系列因素(x1,x2,⋯ ,xn)之间的关系的时候,最直白的想法是建立因变量和自变量的多元线性关系

​编辑

        其中(θ0,θ1,θ2,⋯ ,θn)为模型的参数,如果因变量是数值型的话,可以解释成某某因素xi变化了多少导致结果y发生了多少变化,如果因变量y是用来刻画某特定结果发生的概率(0~1)呢?这时候因素xi变化导致结果y的变化恐怕微乎其微,有时候甚至忽略不计。于是,我们需要让不显著的线性关系变得显著,使得模型能够很好解释随因素的变化,结果也会发生较显著的变化,这时候,人们想到了logit变换,下图是对数函数图像

​编辑

        从对数函数的图像来看,其在(0,1)之间的因变量的变化是很迅速的,也就是说自变量的微小变化会导致因变量的巨大变化,这就符合了之前想要的效果。于是,对因变量进行对数变换,右边依然保持线性关系,有下面式子

​编辑

        虽然上式解决了因变量随自变量变化的敏感性问题,同时也约束了y的取值范围为(0,+∞)。我们知道概率是用来描述某件事发生的可能性,事件发生与不发生有对立性,结果可以走向必然发生(概率为1),也可以走向必然不发生(概率为0),因此概率的取值范围为(0,1),而等式左边y的取值范围是(0,+∞),所以需要进一步压缩,又引进了几率。

几率

        几率(odd)是指事件发生的概率与不发生的概率之比,假设事件A发生的概率为p,不发生的概率为1−p,那么事件A的几率为

​编辑

        几率恰好反应了某一事件两个对立面,具有很好的对称性,下面我们再来看一下概率和几率的关系

​编辑

        首先,我们看到概率从0.01不断增大到0.99,几率也从0.01随之不断变大到99,两者具有很好的正相关系,我们再对p向两端取极限有

​编辑

        于是,几率的取值范围就在(0,+∞),这符合我们之前的因变量取值范围的假设。

logistic模型

        正因为概率和几率有如此密切对等关系,于是想能不能用几率来代替概率刻画结果发生的可能性大小,这样既能满足结果对特定因素的敏感性,又能满足对称性,便有了下面式子

​编辑

现在,我们稍微改一改,让等式左边对数变成自然对数ln=loge,等式右边改成向量乘积形式,便有       

​编辑

   其中θ=(1,θ1,θ2,⋯ ,θn),X=(1,x1,x2,⋯ ,xn)T,解得

​编辑

 其中e是自然常数,保留5位小数是2.71828。这就是我们常见的logistic模型表达式,作出其函数图像如下

​编辑

        我们看到logistic/sigmoid函数图像是一条S型曲线,以(0,0.5)为对称中心,随着自变量x不断增大,其函数值不断增大接近1,随自变量x不断减小,其函数值不断降低接近0,函数的取值范围在(0,1)之间,且函数曲线在中心位置变化速度最快,在两端的变化速率较慢。

        从上面的操作,我们可以看到逻辑回归模型从最初的线性回归模型基础上对因变量进行logit变换,使得因变量对自变量显著,同时约束因变量取值范围为0到正无穷大,然后用概率表示几率,最后求出概率关于自变量的表达式,把线性回归的结果压缩在(0,1)范围内,这样最后计算出的结果是一个0到1之间的概率值,表示某事件发生的可能性大小,可以做概率建模,这也是为什么逻辑回归叫逻辑回归,而不叫逻辑分类。

​​

二项逻辑回归模型

既然logistic回归把结果压缩到连续的区间(0,1),而不是离散的0或者1,然后我们可以取定一个阈值,通常以0.5为阈值,如果计算出来的概率大于0.5,则将结果归为一类(1),如果计算出来的概率小于0.5,则将结果归为另一类(0),用分段函数写出来便是

​编辑

这样逻辑回归就可以用来进行2分类了,假设数据结构如下

​编辑

其中m表示样本个数,n表示影响因数的个数,yi(i=0,1,⋯ ,m)取0或者1。现在我们结合数据,利用条件概率分布模型给出基于概率的二项logistic模型如下:

​编辑

其中,X表示自变量,y表示因变量所属的类别,θ为模型待求的参数,模型解释为在特定的因素下,模型结果取1的概率和取0的概率。模型建好了,接下来就需要进行机器训练,而怎么来给训练一种恰当反馈呢?答案是损失函数,通过损失函数来评估模型学习的好坏和改进机制。

损失函数

机器学习或者统计机器学习常见的损失函数如下:

1.0-1损失函数(0-1 loss function)

​编辑

2.平方损失函数(quadratic loss function)

​编辑

3.绝对值损失函数(absolute oss function)

​编辑

4.对数损失函数(logarithmic loss function)或对数似然损失函数(log - like hood loss function)

​编辑

逻辑回归中,采用的则是对数损失函数。如果损失函数越小,表示模型越好

说说对数损失函数与平方损失函数

        在逻辑回归的推导中,我们假设样本是服从伯努利分布(0-1分布)的,然后求得满足该分布的似然函数,最终求该似然函数的极大值。整体的思想就是求极大似然函数的思想。而取对数,只是为了方便我们的在求MLE(Maximum Likelihood Estimation)过程中采取的一种数学手段而已。

        由前面阈值的取定原则,我们知道相当于我们用一个类别值代替概率值,而类别值是sigmoid函数的两个最值,概率不可能时时刻刻都取到最值,这势必会造成误差,我们把这种误差称为损失,为了给出损失函数表达式,我们假设模型第i个样本所求的概率值为Pi,而真实类别值可能是0或者1。

当类别真实值是1的情况下:
所求的概率值pi越小,越接近0,被划为类别0的可能性越大,被划为类别1的可能性越小,导致的损失越大。
所求的概率值pi越大,越接近1,被划为类别1的可能性越大,被划为类别0的可能性越小,导致的损失越小。我们用下面的函数来描述这种变化关系

​编辑

其中pi∈(0,1),其图像大致如下

​编辑

当类别真实值是0的情况下:
所求的概率值pi越大,越接近1,其结果的类别判定更偏向于1,导致的损失越大。
所求的概率值pi越小,越接近0,其结果的类别判断更偏向于0,导致的损失越小。我们用下面的函数来描述这种变化关系

​编辑

其中pi∈(0,1),其图像大致如下

​编辑

------------------------ ---------- ---------- 分割线内容,hθ等于Pi --------------------------------

根据上面的内容,我们可以得到逻辑回归的对数似然损失函数cost function:

​编辑

当y=1时,假定这个样本为正类:
①如果此时预测的概率hθ(x)=1 ,则单对这个样本而言的cost=0,表示这个样本的预测完全准确。那如果所有样本都预测准确,则总损失total_cost=0
②如果此时预测的概率hθ(x)=0,那么单对这个样本而言的cost→∞。也就是说预测y=1的概率为0,那么此时就要对损失函数加一个很大的惩罚项。

当y=0时,推理过程跟上述完全一致,不再累赘。

将以上两个表达式合并为一个,则单个样本的损失函数可以描述为:

​编辑

 ​编辑

梯度下降的原理由上述可知在单个样本中,其损失函数为:​编辑现在问题就转化为一个无约束优化问题,即我们找出最小的θ,使得costfunction达到最小。而在无约束优化问题中,最重要最基本的方法莫过于梯度下降了。梯度下降的过程:​编辑

现在就要把两种情况结合起来并且绘制成全样本的损失函数,就不需要分真实值是1还是0两种情况讨论,求出其期望值,做成一个交叉熵(cross entropy)的全体样本的损失函数如下:

​编辑

        因为yi只有两种取值情况1或0,分别令y=1或y=0,即可得到原来的分段表示式。

        其中yi表示第i个样本的真实值,pi或者hθ(x)是根据模型计算出来的概率值。

        当yi=1时,costi=−log(pi),yi=0时,costi=−log(1−pi),这符合前面两种情况。

假设现在有m个样本,总体的损失函数为

​编辑

 上式即为二项逻辑回归的损失函数,是一个关于参数θ和X的二元函数,也叫对数似然函数,现在问题转化为以对数似然函数为目标函数的最优化问题,其中θ为模型待求的参数,为了求参数θ,可以对目标函数求偏导数,记

​编辑

对L(X∣θ)求关于θ的偏导,主要是里面对数函数关于θ的偏导数求解​编辑

--------------------------------------------------------分割线内容中hθ等于Pi-------------------------------------

logistic回归模型的应用

        既然logistic回归主要用来二分类,用logistic回归模型二分类的场景,用logistic回归模型预测某件事情的发生概率,我们常见的logistic回归模型的应用场景有

(1)根据申请人的提供的资料,预测其违约的可能性大小,进而决定是否给其贷款。

(2)根据购买记录预测用户下一次是否会购买某件商品。

(3)舆论平台做情感分类器。如根据某网友对某些特定主题的历史评论数据,预测其下次对某类型的主题是否会给出正面的评论。

(4)在医疗领域,根据病人症状,预测其肿瘤是良性的还是恶性的。

(5)根据CT,流行病学,旅行史,检测试剂结果等特点预测某位疑似病人是否真感染新型冠状病毒。

(6)在精准营销领域,预测某个产品的收益。

logistic回归模型的评价

        从logistic回归的数学原理,在阈值取定的时候一刀切的做法上面,我们能够根据logistic回归的这些特点给出模型优缺点评价

优点:

1、原理简单,模型清晰,操作高效,背后的概率的推导过程经得住推敲,在研究中,通常以Logistic回归模型作为基准,再尝试使用更复杂的算法,可以在大数据场景中使用。

2、使用online learning的方式更新轻松更新参数,不需要重新训练整个模型

3、基于概率建模,输出值落在0到1之间,并且有概率意义

4、求出来的参数θi代表每个特征对输出的影响,可解释性强

5、解决过拟合的方法很多,如L1、L2正则化,L2正则化就可以解决多重共线性问题

缺点:

1、对数据依赖性强,需要做特征工程,主要用来解决线性可分问题

2、Logistic回归模型本质上是一个线性的分类器,处理不好特征之间相关的情况,对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转,正好变负号。

3、logit变换过程是非线性的,在两端随着变化率微乎其微,而中间的变化很大,很敏感。导致很多区间的变量变化对目标概率的影响没有区分度,很难确定阀值。

4、当特征空间很大时,性能不好

5、容易欠拟合,精度不高