1. 问题引入
相信大家都接触过分类问题,尤其是二元分类。例如现在有一些患者(训练集)的身体情况以及是否患有心脏病的数据,要求我们根据这些数据来预测其他患者(测试集)是否患有心脏病。这是比较简单的一个二元分类问题,使用线性分类器或许会取得不错的效果。但在实际生活中,我们感兴趣的往往不是其他患者是否会犯病,而是他犯心脏病的概率是多少。很直观的想法是收集患者犯病的概率,然后利用回归模型进行概率预测。但是我们并不能直接收集到患者犯病的概率,只能知到患者最后到底犯没犯病。也就是说,我们输入的标签是离散的类别型数据,但是期望得到数值型的概率。在机器学习中,这叫做“软性二元分类”(Soft Binary Classification),这类问题与普通的分类问题所要的数据相同,但是会得到不同的目标函数。接下来,我们就介绍一种可以解决“软性二元分类”问题的算法,那就是Logistic Regression(后文译为“对数几率回归)。
2. Logistic Regression
继续我们上面的预测患者是否会犯心脏病的问题。为了最终的预测,我们可以对患者的身体状况 x = ( x 0 , x 1 , x 2 ⋯ , x d ) \mathbf{x} =(x_0,x_1,x_2\cdots,x_d) x=(x0,x1,x2⋯,xd)按照不同的权重打分:
s = ∑ i = 0 d w i x i s = \sum_{i = 0}^{d} w_i x_i s=i=0∑dwixi
然后用对数几率函数 θ ( s ) \theta(s) θ(s)将分数转化成一个概率估计。对数几率函数的形式为:
θ ( s ) = e s 1 + e s = 1 1 + e − s \theta(s) = \frac {e^s} {1 + e^s} = \frac {1} {1 + e^{-s}} θ(s)=1+eses=1+e−s1
也就是说,对数几率回归通过 h ( x ) = 1 1 + exp ( − w T x ) h(\mathbf{x}) = \frac {1} {1 + \exp(-\mathbf{w}^T\mathbf{x})} h(x)=1+exp(−wTx)1来逼近目标函数 f ( x ) = P ( + 1 ∣ x ) f(\mathbf{x}) = P(+1 | \mathbf{x}) f(x)=P(+1∣x),显然有:
P ( y = 1 ∣ x ) = f ( x ) P ( y = 0 ∣ x ) = 1 − f ( x ) P(y = 1 | \mathbf{x}) = f(\mathbf{x}) \\ P(y = 0 | \mathbf{x}) = 1 - f(\mathbf{x}) P(y=1∣x)=f(x)P(y=0∣x)=1−f(x)
现在我们要面临的问题是如何对 w \mathbf{w} w进行估计。在线性回归模型中,我们可以通过最小化均方误差来估计回归系数。但是在这里,好像并没有什么可以衡量误差的东西,所以我们要另辟蹊径。下面我们使用极大似然估计(Maximum Likelihood Estimation,简称MLE)来估计最优的回归系数,它是根据数据采样来估计概率分布参数的经典方法。
假设现在有一个数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y n ) } D = \{ (\mathbf{x}_1, y_1),(\mathbf{x}_2,y_2),\cdots,(\mathbf{x}_N,y_n) \} D={ (x1,y1),(x2,y2),⋯,(xN