本文有关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)$是不同的,区别在这儿。
牛顿法优化
除了梯度下降,其实还有许多可以对逻辑回归做优化的方法,例如牛顿法,这里有待下次更新。