对率几率回归(Logistic Regression)
引言
Logistic Regression,称为对率几率回归。听名字是一个回归模型,但是实际上该模型用于解决二分类问题。线性回归的目的在于找到一条直线或超平面,用于拟合所有的数据点,但是对率几率回归的目的是在于找到一条直线或者超平面尽可能的将所有点分为两类,这个过程中都包含了找到一条直线这个过程(即对率几率回归的线性部分是做了一个回归的)。
原理推导
根据引言,我们需要在线性模型 z = w T x + b z=w^Tx+b z=wTx+b上进行二分类,即对输入数据进行判别输出,输出应当非0即1,也就是 y ∈ 0 , 1 y\in {0,1} y∈0,1,那么就可以在线性模型的输出上进行映射处理,套上一个函数 y = g ( z ) y=g(z) y=g(z),将输出映射到{0,1},最简单的应该就是“单位阶跃函数”,表示为:
y = { 0 , z < 0 ; 0.5 , z = 0 ; 1 , z > 0. y= \begin{cases} 0,\quad z<0;\\ 0.5, \quad z=0;\\ 1, \quad z>0. \end{cases} y=⎩
⎨
⎧0,z<0;0.5,z=0;1,z>0.
此时其实就是将 z = w T x + b z=w^Tx+b z=wTx+b看作一个分割线,在这个先上方的判别为0,线下方的判别为1。由于问题是一个优化问题(找到一个最好的模型来尽可能多的区分出两个类别),那么对于这个问题target function(目标函数)就最好要连续可导,阶跃函数是个分段函数,函数性质较差,所以可以找一个形似的连续函数来进行代替,Sigmoid函数中的对率几率函数就是常用的替代函数,之所以叫Sigmoid是因为他形似一个S形。 y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+e−z1
那么此时,模型的数学公示就变为
y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e−(wTx+b)1
对率几率函数有一个有趣的性质:它的导数可以用自身来进行表示,即 y ′ ( z ) = y ( z ) ( 1 − y ( z ) ) y\prime(z) = y(z)(1-y(z)) y′(z)=y(z)(1−y(z))
如果假设 y y y为正例, 1 − y 1-y 1−y为负例,几率就是二者之比 y 1 − y \frac{y}{1-y} 1−yy。几率反应了样本为正例的相对可能性。
对率几率就是对几率取对数 ln y 1 − y \ln\frac{y}{1-y} ln1−yy,对率几率实际上就是前面提到的Sigmoid函数,推导如下:
假设存在一个线性关系: ln y 1 − y = w T x + b \ln\frac{y}{1-y} = w^Tx+b ln1−yy=wTx+b 进行等式变换后就有 y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e−(wTx+b)1
我们将 y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e−(wTx+b)1 带入到对率几率中,得到
ln y 1 − y = w T x + b \ln\frac{y}{1-y} = w^Tx+b ln1−yy=wTx+b
可以看出,sigmoid实际上就是用线性回归模型的预测结果取逼近真实值的对数几率,因此逻辑回归也被称为“对率几率回归”。
Loss函数推导
一般回归问题使用的都是平均误差平方损失函数(MSE): L = 1 n ∑ i = 1 n ( y ^ − y ) 2 L=\frac{1}{n}\sum_{i=1}^n(\hat{y}-y)^2 L=n1i=1∑n(y^