顿搜
逻辑回归(Logistic Regression)——机器学习经典分类算法
文章导语
逻辑回归虽然名字中有回归二字,但是他是一个最经典的二分类问题
当我们的分类类别为 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}}$$
决策函数
一个机器学习的模型,实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然,我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是
- $\sigma(h_\theta(x)) > 0.5$ 时, $y = 1$
- $\sigma(h_\theta(x)) < 0.5$ 时, $y = 0$
则 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$ 进行正则化处理