逻辑回归(Logistic Regression)——机器学习经典分类算法

/ Machine Learning / 没有评论 / 294浏览

文章导语

逻辑回归虽然名字中有回归二字,但是他是一个最经典的二分类问题

当我们的分类类别为 0 或者 1 时,由于线性函数的输出常常大于 1 或者小于 0,使得最小化损失函数的过程中造成误差。因此,引入逻辑回归,逻辑回归的目标函数取值范围为[0,1],正好满足概率的性质。

Sigmod 函数

$$\sigma(x) = \frac{1}{1+e^{-x}} \qquad (-\infty < x < \infty,\quad 0 < y < 1)$$

sigmod函数是一个 “S” 型的函数
$-\infty < x < \infty,\quad 0 < y < 1$ 意味着该函数可以把任意实数映射成概率值

导数公式

$$\sigma^{'}(x) = \frac{e^{-x}}{(1+e^{-x})^2} = \frac{1}{1+e^{-x}} \cdot \frac{e^{-x}}{1+e^{-x}} = \frac{1}{1+e^{-x}} \left( 1- \frac{1}{1+e^{-x}}\right) = \sigma(x)\left [1-\sigma(x) \right ]$$

概率计算

如果把 Sigmoid 的结果当做概率,那么事件 x 被正确分类的概率为

$$p(x) = \sigma(x)^y\left [ 1-\sigma(x) \right ]^{1-y}$$

$\sigma(x) > 0.5$ 时, $y = 1$
$\sigma(x) < 0.5$ 时, $y = 0$

逻辑回归

逻辑回归其实仅为在线性回归的基础上,套用了一个逻辑函数 (Sigmod)

关于线性回归,请查看线性回归 (LR) 模型深入理解——机器学习经典回归算法

由线性回归知: 预测值 $h_θ(x)=θ^Tx$,将 $h_\theta(x)$ 带入 sigmod 函数中得

$$\sigma(h_\theta(x)) = \frac{1}{1+ e^{-\theta^T x}}$$

决策函数

一个机器学习的模型,实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然,我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是

则 x 被正确分类的概率为

$$p(x) = \sigma(\theta^Tx)^y\left [ 1-\sigma(\theta^Tx) \right ]^{1-y}$$

似然函数

$$L(\theta) = \prod_{i=1}^m p(\theta^Tx) = \prod_{i=1}^m \sigma(\theta^Tx)^y\left [ 1-\sigma(\theta^Tx) \right ]^{1-y}$$

对数似然函数

$$\log L(\theta) = \sum_{i=1}^m \left [ y_i \log \sigma(\theta^Tx_i) + (1-y_i) \log (1-\sigma(\theta^Tx_i)) \right ]$$

最大似然估计就是求使上式最大值的 $\theta$,可以使用梯度上升法求解,求得的 $\theta$ 就是最佳参数

我们令

$$J(\theta) = -\frac{1}{m} \log L(\theta) = -\frac{1}{m} \sum_{i=1}^m \left [ y_i \log \sigma(\theta^Tx_i) + (1-y_i) \log (1-\sigma(\theta^Tx_i)) \right ] $$

由于乘了一个负系数,所以变形为求最小值,可用梯度下降算法求解

关于梯度下降,请查看梯度下降算法 (Gradient) 原理——机器学习常用模型训练法

梯度求解

$$\begin{aligned} \frac{\partial J(\theta)}{\partial \theta} &= -\frac{1}{m}\sum_{i=1}^m \left [ y_i \frac{1}{\sigma(\theta^Tx)} - (1-y_i)\frac{1}{1-\sigma(\theta^Tx_i)} \right ]\sigma^{'}(\theta^Tx_i) \\ &= -\frac{1}{m} \sum_{i=1}^m \left [ y_i \frac{1}{\sigma(\theta^Tx)} - (1-y_i)\frac{1}{1-\sigma(\theta^Tx_i)} \right ] \sigma(\theta^Tx_i)\left [1-\sigma(\theta^Tx_i) \right ]x_i \\ &= -\frac{1}{m}\sum_{i=1}^m \left [ y_i(1-\sigma(\theta^Tx_i))- (1-y_i)\sigma(\theta^Tx_i) \right ] x_i \\ &= -\frac{1}{m} \sum_{i=1}^{m} \left [y_i - \sigma(\theta^Tx_i) \right ]x_i \\ &= \frac{1}{m} \sum_{i=1}^m(\sigma(\theta^Tx_i)-y_i)x_i \end{aligned} $$

参数更新

使用梯度下降算法

$$\theta = \theta - \eta \frac{\partial J(\theta)}{\partial \theta} = \theta - \eta \frac{1}{m}\sum_{i=1}^m(\sigma(\theta^Tx_i)-y_i)x_i$$

正则化

为防止决策边界产生过拟合现象,在 $J(\theta)$ 式中加上正则项 $\frac{\lambda}{2m} \sum_{j = 1}^n \theta_j^2$,防止模型过于复杂。

$$J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left [ y_i \log \sigma(\theta^Tx_i) + (1-y_i) \log (1-\sigma(\theta^Tx_i)) \right ] + \frac{\lambda}{2m} \sum_{j = 1}^n \theta_j^2$$

不要对 $\theta_0$ 进行正则化处理