第 7 章 逻辑回归
逻辑回归用于分类问题。虽然名字里有“回归”,但它解决的是离散类别预测,而不是连续值预测。
7.1 分类问题
分类问题的输出通常是离散值。例如:
0: 不是垃圾邮件
1: 是垃圾邮件二分类问题中,常用 y = 0 表示负类,y = 1 表示正类。
如果直接用线性回归处理分类问题,预测值可能小于 0 或大于 1,不适合表示概率。因此需要新的模型。
7.2 假说表示
逻辑回归使用 Sigmoid 函数把任意实数映射到 0 到 1 之间。
逻辑回归假设函数:
展开:
x 和参数 y = 1 的概率。
例如:
表示模型认为该样本属于正类的概率是 0.7。
7.3 判定边界
逻辑回归通常使用 0.5 作为分类阈值:
>= 0.5,预测为 1 < 0.5,预测为 0
因为 Sigmoid 函数在 z = 0 时取值为 0.5,所以判定边界由下面的条件决定:
判定边界可以是线性的,也可以通过多项式特征变成非线性的。
例如引入平方项后,判定边界可能变成圆形或更复杂的曲线。
7.4 代价函数
线性回归的平方误差代价函数不适合直接用于逻辑回归,因为会形成非凸函数,梯度下降可能陷入局部最小值。
逻辑回归使用新的代价函数。
当 y = 1:
当 y = 0:
直观理解:
- 真实标签是
1时,如果模型预测接近1,代价很小。 - 真实标签是
1时,如果模型预测接近0,代价会非常大。 - 真实标签是
0时情况相反。
7.5 简化的成本函数和梯度下降
逻辑回归代价函数可以合并写成:
梯度下降更新形式:
其中
形式上看,它和线性回归的梯度下降很像,但
7.6 多类别分类:一对多
逻辑回归本身是二分类算法。对于多类别分类,可以使用一对多方法。
假设有 K 个类别,就训练 K 个二分类器:
第 1 个分类器:类别 1 vs 其他类别
第 2 个分类器:类别 2 vs 其他类别
...
第 K 个分类器:类别 K vs 其他类别预测时,把同一个样本输入所有分类器,选择输出概率最大的类别。
一对多方法的优点是容易理解,也可以直接复用二分类逻辑回归。缺点是多个分类器之间彼此独立训练,输出分数不一定形成严格的概率分布。
7.7 Softmax 多分类模型
多分类也可以直接训练一个模型,让它一次输出所有类别的分数。设第
Softmax 把这些得分转换成概率:
其中
- 每个类别概率都大于 0。
- 所有类别概率之和等于 1。
预测时选择概率最大的类别:
7.8 多分类交叉熵
如果标签用 one-hot 向量表示,真实类别对应位置为 1,其余位置为 0。设模型输出的类别概率为
因为 one-hot 标签中只有真实类别
也就是说,多分类交叉熵只关心模型分给真实类别的概率。真实类别概率越接近 1,损失越小;真实类别概率越接近 0,损失越大。
对整个训练集,平均损失可以写成:
7.9 为什么使用交叉熵
逻辑回归使用的代价函数本质上是二分类交叉熵。它的特点是:模型对正确类别越自信,损失越小;模型对错误类别越自信,损失越大。
例如真实标签是 1:
| 模型预测 | 损失直觉 |
|---|---|
1 | 预测正确且自信,损失很小 |
0.5 | 模型不确定,损失中等 |
0 | 错得很自信,损失很大 |
如果用平方误差来训练逻辑回归,优化问题会变得不理想;使用交叉熵后,代价函数和概率模型更匹配,梯度形式也比较简洁。