logistic regression的公式手推相关

本文有关logistic regression的公式相关的手推,包括假说函数、极大似然估计以及梯度下降算法。

Hypothesis

首选我们要明确,logistic regression虽然叫“回归”,但是它却是用来做分类的,也是最最常用的分类机器学习算法。其假说模型为:

$$
h_{\theta}(x) = g(\theta ^T x)
$$

其中$g(z) = \frac{1}{1+e^{-z}}$,so

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

可以看到,函数主体和线性回归一样,都是样本与参数的内积,但是逻辑回归是用来打分的,也就是判断样本是正负例的概率,需要$g(z)$也就是sigmoid或者logistics函数来将这个内积映射到一个区间(0,1),所以实际上

$$
h_{\theta}(x) = p(y=1 | x;\theta)
$$

以上只是得出了样本点是正例的概率,到底预测它是正例还是负例,我们还需要一个decision boundary,例如

$$
h_{\theta}(x) \ge 0.5 \rightarrow y=1 \
h_{\theta}(x) \lt 0.5 \rightarrow y=0
$$

由于sigmoid函数的形状我们容易得到

$$
\theta ^T x \ge 0 \rightarrow y=1 \
\theta ^T x \lt 0 \rightarrow y=0
$$

当然,decision boundary属于假说函数的一部分,不一定就是0.5.

极大似然估计

二元分类可以看做是一个伯努利分布,又叫做0-1分布,上面提到
$$
p(y=1 | x;\theta) = h_{\theta}(x)
$$

那么自然有

$$
p(y=0 | x;\theta) = 1 - h_{\theta}(x)
$$

那么总体分布也就是得到一个观测值的概率可以用Trick写成
$$
p(y | x;\theta) = (h_{\theta}(x))^y (1 - h_{\theta}(x^i))^{(1-y)}
$$

因为每一个样本和其他样本是独立同分布的,把它们的概率相乘得到似然函数,

$$
L(\theta) = \prod_{i=1}^{m}((h_{\theta}(x^i))^{y^i} (1 - h_{\theta}(x^i))^{(1-y^i)})
$$
为计算方便,取对数,得到

$$
l(\theta) = \sum_{i=1}^{m} (y^i \log(h_{\theta}(x^i)) +
(1-y^i) (1 - h_{\theta}(x^i))
)
$$

Cost Function

既然逻辑回归是做预测的,那么损失函数就是预测错了多少的度量咯。比如我们就可以统计到底预测错了多少个,来当做损失函数,但是呢,这样的函数肯定是非凸的,不好优化,所以实际采用的损失函数是这样的

$$
J(\theta) = \frac{1}{m}\sum_{i=1}^{m} (Cost(h_{\theta}(x^i)), y^i)
$$

其中
$$
Cost(h_{\theta}(x), y) = -\log(h_{\theta}(x)) \ \ if \ \ y=1 \
;Cost (h_{\theta}(x), y) = -\log(1 - h_{\theta}(x)) \ \ if \ \ y=0
$$

可简写成:

$$
Cost(h_{\theta}(x), y) = - y \log(h_{\theta}(x)) - (1-y) \log(1 - h_{\theta}(x))
$$

函数图像如下

可以直观的看到,就是概率预测的和标签越接近惩罚越小,反之越大。当然,这里讲的只是二元分类,标签不是0就是1.

最后,逻辑回归的损失函数为

$$
J(\theta) = - \frac{1}{m} \sum_{i=1}^{m} (y^i \log(h_{\theta}(x^i)) + (1-y^i) \log (1-h_{\theta}(x^i))
$$

优化过程

梯度下降更新算法

$$
\theta_j = \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}
$$

其中,

$$
\frac{\partial J(\theta)}{\partial \theta_j} = - \frac{1}{m} \sum{i=1}^{m} (y^i \log(g(z)) + (1-y^i) \log (1-g(z))
$$

$$
= - \frac{1}{m} \sum_{i=1}^{m} ( \frac{y^i}{g(z)} \frac{\partial g(z)}{\theta_j} - \frac{1-y^i}{1-g(z)} \frac{\partial g(z)}{\theta_j})
$$

$$
= - \frac{1}{m} \sum_{i=1}^{m} \frac{y^i - g(z)}{g(z)(1-g(z))} \frac{\partial g(z)}{\theta_j}
$$


$$
\frac{\partial g(z)}{\theta_j} = g(z)(1-g(z)x_j^i
$$

代入上式可得
$$
\frac{\partial J(\theta)}{\partial \theta_j} =
\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^i)-y^i)x_j^i
$$
这就得到了逻辑回归的梯度下降更新式子
$$
\theta_j = \theta_j - \alpha \frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^i)-y^i)x_j^i
$$
是不是感觉和线性回归的式子一模一样?哈哈,很神奇吧!不过注意两者的假说函数$h_{\theta}(x)$是不同的,区别在这儿。

牛顿法优化

除了梯度下降,其实还有许多可以对逻辑回归做优化的方法,例如牛顿法,这里有待下次更新。