上篇文章主要介绍了回归分析中的线性回归,一般情况下用于数值相关的预测。线性回归假设输自变量和因变量之间呈现的是线性关系,输出的一般是连续的值。例如房间面积和房子价格之间的关系、人类身高和体重之间的关系等等。

但是当我们的输出不再是连续的值,而是一种分类相关的任务时该怎么办?例如分辨某封邮件是否为垃圾邮件,某些人的身体是否健康等等。这种类型的预测输出一般都是离散的,非线性的,而这种非线性的关系类似于上一篇末尾提到的广义线性模型。

1. 逻辑回归的定义

解决这样的问题有个非常简单易行的思路,就是按照线性回归来预测,只不过在最后的输出中做一些分段处理,例如可以将输出大于等于 0 的划分为一类,小于 0 的划分为另一类,用函数表达其实就是传说中的阶跃函数(unit-step function):
$$
y = \begin{cases}0, & \boldsymbol{w}^T\boldsymbol{x} + b < 0 \\ 1, & \boldsymbol{w}^T\boldsymbol{x} + b \ge 0\end{cases}
$$
在二维平面几何中,样式如下:

阶跃函数

阶跃函数理论上是可行的,因为它可以明确的将输出进行分类,但是因为其非凸、非光滑的特点,使得该函数很难被算法优化。为了具有更好的数学特性,我们希望找到一个可以替代阶跃函数的代替品,并希望它具有单调可微的特性,而其中 Logistic 函数刚好满足这些特性。

Logistic 函数在平面几何中和 “S” 形类似,故也被称为 Sigmoid 函数,该函数平滑且易求导,其取值范围正好是 (0,1) 之间。

Logistic 函数

其数学表达式如下:
$$
y = \frac{1}{1 + e^{-(\boldsymbol{w}^T\boldsymbol{x} + b)}}
$$
该函数可以变形为:
$$
ln \frac{y}{1 - y} = \boldsymbol{w}^T\boldsymbol{x} + b
$$
如果对 $y$ 值做相应变换,则该形式正好符合 “广义上的线性模型”。

2. 回归系数的估值

在线性回归中我们使用了最小二乘法来进行回归系数的计算,但是在逻辑回归中,因为最终的输出结果是非线性的,如果使用最小二乘法进行估算,其结果会是一个非凸函数,最后求解的过程中很容陷入局部最优解的深坑之中。

最小二乘法求解

为了避免上述问题,对于逻辑回归这里使用 “极大似然法” 进行估值。根据前面推导的公式,可以知道:
$$
ln \frac{P(y=1|x)}{P(y=0|x)} = \boldsymbol{w}^T\boldsymbol{x} + b
$$

已知 $y = e^x$ 则 $x = log_e^y = ln(y)$。

计算可得:
$$
\frac{P(y=1|x)}{P(y=0|x)} = e^{\boldsymbol{w}^T\boldsymbol{x} + b}
$$

已知 $P(y=1|x) = 1 - P(y=0|x)$。

则:
$$
P(y=1|x) = e^{\boldsymbol{w}^T\boldsymbol{x} + b}(1 - P(y=1|x))
$$
合并同类项:
$$
P(y=1|x)(1+e^{\boldsymbol{w}^T\boldsymbol{x} + b}) = e^{\boldsymbol{w}^T\boldsymbol{x} + b}
$$
最后可得:
$$
P(y=1|x) = \frac{e^{\boldsymbol{w}^T\boldsymbol{x} + b}}{1 + e^{\boldsymbol{w}^T\boldsymbol{x} + b}} \\ P(y=0|x) = \frac{1}{1 + e^{\boldsymbol{w}^T\boldsymbol{x} + b}}
$$
写成一般式(TODO:虽然反推成立,但是没研究明白怎么来的):
$$
P(y|x) = (\frac{e^{w^Tx+b}}{1 + e^{w^Tx+b}})^y (\frac{1}{1 + e^{w^Tx+b}})^{1-y}
$$
//TODO: 剩下的还是看不明白......