0x00 前言
逻辑回归(Logistic Regression,LR)。在Kaggle竞赛的统计中,LR算法以63.5%的出产率,荣获各领域中“出场率最高的算法”这一殊荣。在实际场景中,逻辑回归同样应用广泛,大到国家各项经济政策的制定,小到计算广告CTR,都能看到LR算的身影。
除了应用广泛外,LR的建模过程还体现了数据建模中很重要的思想:对问题划分层次,并利用非线性变换和线性模型的组合,将未知的复杂问题分解为已知的简单问题。因此,我们可以说:理解好逻辑回归的细节,就掌握了数据建模的精髓。
0x01 什么是逻辑回归
1.1 线性回归能解决分类问题么?
其实,线性回归是不能解决分类问题的。因为我们在使用线性回归模型时,我们实际上做了3个假设(实际上有更多的假设,这里只讨论最基本的三个):
- 因变量和自变量之间呈线性相关。
- 自变量与干扰项相互独立。
- 没被线性模型捕捉到的随机因素服从正态分布。
从理论上来说,任何数据放在任何模型里都会得到相应的参数估计,进而通过模型对数据进行预测。但是这并不一定能保证模型效果,有时会得到“错且无用”的模型,因此建模的过程中需要不断提出假设和检验假设。
1.2 用逻辑回归解决分类问题
有些算法,表面上叫“XX回归”,背地里却是解决分类问题的。
其原理是将样本的特征和样本发生的概率联系起来,即,预测的是样本发生的概率是多少。由于概率是一个数,因此被叫做“逻辑回归”。
在线性回归算法的例子中,我们进行房价预测得到的结果值,就是我们预测的房价,是一个数值。
但是我们在逻辑回归算法中,得到的预测值是一个概率,然后在概率的基础上多做一步操作,得到分类的结果。比如某银行使用逻辑回归做风控模型,先设置一个阈值0.5,如果得到它逾期的概率大于0.5,就不放款;否则就放款。对于“放款” or “不放款”来说,实际上是一个标准的分类问题。
通过这个小例子我们可以看到,在回归问题上再多做一步,就可以作为分类算法来使用了。逻辑回归只能解决二分类问题,如果是多分类问题,LR本身是不支持的。
对于线性回归来说,通过传递的自变量x来计算预测值:。其中实际上就是参数与样本的矩阵相乘,。那我们可不可以找到一组参数,与特征矩阵相乘,直接得到表示概率的结果呢?
单单从应用的角度来说,是可以的,但是并不好。这是因为线性回归得到值是没有限制的,值域从负无穷到正无穷的值。而对于概率来说,其值域为[0,1],是有限制的。如果直接使用线性回归得到的结果,使得最终拟合的结果可信程度较差。
那么下面我们就看一看,逻辑回归背后的数学原理。
0x02 LR算法数学推导
2.1 决策背后的博弈
逻辑回归使用什么样的方式来得到一个事件发生的概率值的呢?分类的背后又是什么呢?
以银行理财产品营销场景为例,对于银行来说,客户只有“买”和“不买”两种行为,但是这个行为实际上是客户在接到营销行为,如电话营销、短信营销之后,经过内心博弈产生的最终结果。
客户为什么会做出“买”或“不买”这样的被分类的行为?如果客户手里有一笔暂时不会动用的闲钱,且他希望能够通过投资行为获利,并且对盈利效果表示认可,则客户会考虑购买理财产品。但是反过来,如果客户没有钱,或者他有其他更好的投资渠道,或者厌恶投资风险,那么客户就不会购买。从经济学的角度来说,购买理财产品这一行为,既能给客户带来正效用,也能给客户带来负效用。当客户主观认为正效用大于负效用时,可就是购买行为带来的整体效用大于0时,客户就会购买,反之则不然。
2.2 博弈中的隐含变量
那么我们从数学角度出发,分析上述场景:假设有自变量集合,这些参数表示这种特征,决定购买行为对客户的效用,包括正效用和负效用~。我们将客户的购买行为记为y,其中y=1表示客户购买理财产品;y=0表示客户没有购买。于是可以得到下面的公式:
如果,我们假设正负效用函数与自变量特征参数成线性相关,则根据可以得出:,~。其中是相互独立的随机变量,且都服从正态分布。
在得到正负效用线性函数之后,就可以用正效用减去负效用的解是否大于0作为分类依据。令,则可以得到:。如果我们将其转换为分类问题,则可以得到阶梯函数如下:
更进一步,我们将上面的函数转变为求概率,即客户购买理财产品的概率如下:
其中,是随机变量的累积分布函数,表示客户购买的比例。
这个模型在学术上被称作是probit回归(虽然是名字中有“回归”两个字,但是实际上解决的还是分类问题)。
在模型搭建的过程中,我们假设了客户内心博弈的正负效用变量:,因此这类隐藏变量模型(latent variable model);而正负效用变量:被称为隐藏变量(latent variable)。
由此可见,对于一个分类问题,由于“窗口效用”,我们只能看见客户的购买行为,但是在分类的背后,是隐藏变量之间的博弈,我们通过搭建隐藏变量的模型,来求出客户购买的概率。
2.3 sigmoid函数与逻辑回归
在上一节我们得到了probit回归在数学上是比较完美的,但是正态分布的累积分布函数,其表达形式很复杂(复杂到懒得把公式写出来),且没有解析表达式。因此直接在probit回归上做参数估计是比较困难的。但是好在我们可以对其做近似,让其在数学上更加简洁。
此时,神奇的数学家们发现:正态分布在线性变换下保持稳定,而逻辑分布可以很好地近似正态分布。因此可以使用标准逻辑分布的累积分布函数来替换正态分布的累积分布函数。
标准逻辑分布的概率密度函数为,对应的积累分布函数为:
在学术界被称为sigmoid函数,是在数据科学领域,特别是神经网络和深度学习领域中非常重要的函数!。其图像如下图所示,呈S状,因此也被称为“S函数”。当t趋近于正无穷时,趋近于0,则趋近于1;当t趋近于负无穷时,趋近于正无穷,则趋近于0。因此该函数的值域为(0,1)。
两种不同的效用函数(假定他们都满足线性回归模型的假设)相互竞争时,其中某一方最终胜出的概率分布在数学上可近似为sigmoid函数。通俗讲:sigmoid函数表述了某一方竞争胜出的概率。
将效用函数之差(同样是线性回归模型)带入sigmoid函数中,当t>0时,得到的结果是概率值p>0.5;当t<0时,得到的结果是p<0.5。因此,实际上我们得到是这样的公式:
至此,大名鼎鼎的逻辑回归模型(logit regression)如下,其中表示客户特征,表示模型参数:
0xFF 总结
在本篇文章中,我们学习了逻辑回归的算法模型。
首先,逻辑回归是解决分类问题的,本质是求概率再分类。在分类结果的背后是隐藏变量的博弈,我们认为隐藏变量与特征是线性相关的,因此就可以对隐藏变量之差求概率(得到随机变量的累积分布函数),得到probit回归模型。为了使数学公式更为简单,使用sigmoid函数去近似,最终得到逻辑回归模型:
根据建模过程,我们已经得到了逻辑回归模型,下一步就是找到损失函数,去尽可能地拟合数据。
那么对于给定的样本数据集X,y,我们如何找到一组参数,使得用这样的方式,可以最大程度获得样本数据集X对应的分类输出y?
以上文章来源于数据科学家联盟,作者饼干Japson