机器学习算法-Logistic Regression

作者:一个独行的程序员

逻辑回归(Logistic Regression)是一种简单的分类模型,由于其高效而又简单的特性,在实际中取得了非常广泛的应用。本文主要关注逻辑回归的应用场景和数学原理,并对其在多分类问题上的扩展做了简要介绍。

逻辑回归

问题

在实际生活中,我们常常会遇到很多“二选一”的问题。如:

  • 预测用户是否喜欢某推荐商品
  • 判断用户性别
  • 预测球赛的获胜队

在处理以上这些二分类问题时,逻辑回归成了我们的一把利器。通常这类问题的处理步骤为:

  1. 获取原始数据
  • 标记训练数据
  • 训练逻辑回归的参数
  • 测试模型效果

在获得数据和标签后,我们就得到了n组训练数据,定义为:
$$
D = (x^1, y^1), (x^2, y^2),…,(x^n, y^n)
$$
其中,每组数据有m维特征,即:$x^i=[x_1^i,x_2^i,…,x_m^i]$

y的取值为[0,1](1为正例,0为负例)。

模型

Logistic Function

$$
\sigma(t)=\frac{e^t}{1+e^t}=\frac{1}{1+e^{-t}}
$$

令$t=\theta^T X=\sum\theta_i x_i$,其中,$x_0 = 1$。
$\theta$是一个n+1维的向量,也是我们模型训练的参数。

为什么用逻辑回归

对于二分类问题,我们可以用t来描述数据本身的特征,即每个维度的值$x_i$和其对应的权重(即参数)$\theta_i$,同时考虑到向量的形式,我们将$x_0$设为1。

在《机器学习实战》中LR的对应章节也有提到,我们其实是想通过数据和标签,构造出一个分类模型。那么如何尽可能利用所有维度特征和所有数据呢?

我们将由事件特征到类别划属这个问题,映射到一个概率分布模型。即:
$$
y =
\begin{cases}
1,\, \sigma(\theta,X) > 0.5 \\
0,\, \sigma(\theta,X) < 0.5 \\
\end{cases}
$$

现在我们需要做的就是得到一个最优的$\theta$,使得模型预测准确率最高。

梯度下降法

最常用的求解最优化问题的方法就是梯度下降法了,简单好懂,易于操作。其本质就是每次都朝着梯度的方向进行迭代,即:
$$
\vartriangle\theta_i = \partial\frac{\sigma(\theta,X)}{\partial\theta_i}
$$

因此,我们也就得到了参数$\theta$的迭代方程:
$$
\theta:=\theta+\alpha\vartriangle\theta
$$
其中,$\alpha$是每一步迭代的步长,即 learning rate.

扩展

多分类问题

逻辑回归之所以好用,就在于它利用了函数图像的特性,刚好在y=0.5上下形成了两个概率相等的区间。如果将其用作多分类,则会有许多麻烦产生。

  • 概率不再均等
  • 可解释性太差
  • 若每一个分类单独训练,无法解决多分类互斥的情况

基于以上几点原因,前辈们想出了一个两全其美的办法。既能利用逻辑回归的简单形式,又能解决多分类的问题。

Softmax

Softmax可以看作是逻辑回归的多分类版本。

让我们再来回顾一下逻辑回归模型,其本质是利用了概率密度函数来解决分类问题,即:
$$
y^*=
\begin{cases}
1,\, p(y=1|\theta, X) > 0.5 \\
0,\, p(y=1|\theta, X) < 0.5 \\
\end{cases}
$$

那么,遵循这个思路,只要我们能够定义多分类场景下的条件概率就可以解决问题了。即multinomial logistic function,假设我们有K类:
$$
p(y=i|\theta,X) = \frac{e^{\theta_i^Tx}}{\sum_1^K e^{\theta_i^T x}}
$$
$$
y^*=argmax_i \, p(y=i|\theta,X)
$$

需要注意的是,这里一共有K个$\theta$向量,对应了K个不同的类别,而每个$\theta$又有n+1个维度。