第 6 章 逻辑回归
逻辑回归用于分类问题。虽然名字里有“回归”,但它解决的是离散类别预测,而不是连续值预测。
6.1 分类问题
分类问题的输出通常是离散值。例如:
text
0: 不是垃圾邮件
1: 是垃圾邮件二分类问题中,常用 y = 0 表示负类,y = 1 表示正类。
如果直接用线性回归处理分类问题,预测值可能小于 0 或大于 1,不适合表示概率。因此需要新的模型。
6.2 假说表示
逻辑回归使用 Sigmoid 函数把任意实数映射到 0 到 1 之间。
逻辑回归假设函数:
展开:
h_theta(x) 可以理解为在给定 x 和参数 theta 时,y = 1 的概率。
例如:
text
h_theta(x) = 0.7表示模型认为该样本属于正类的概率是 0.7。
6.3 判定边界
逻辑回归通常使用 0.5 作为分类阈值:
text
h_theta(x) >= 0.5 预测为 1
h_theta(x) < 0.5 预测为 0因为 Sigmoid 函数在 z = 0 时取值为 0.5,所以判定边界由下面的条件决定:
判定边界可以是线性的,也可以通过多项式特征变成非线性的。
例如引入平方项后,判定边界可能变成圆形或更复杂的曲线。
6.4 代价函数
线性回归的平方误差代价函数不适合直接用于逻辑回归,因为会形成非凸函数,梯度下降可能陷入局部最小值。
逻辑回归使用新的代价函数。
当 y = 1:
当 y = 0:
直观理解:
- 真实标签是
1时,如果模型预测接近1,代价很小。 - 真实标签是
1时,如果模型预测接近0,代价会非常大。 - 真实标签是
0时情况相反。
6.5 简化的成本函数和梯度下降
逻辑回归代价函数可以合并写成:
梯度下降更新形式:
形式上看,它和线性回归的梯度下降很像,但 h_theta(x) 已经变成了逻辑回归的 Sigmoid 假设函数。
6.6 高级优化
除了梯度下降,还可以使用更高级的优化算法,例如:
- Conjugate Gradient
- BFGS
- L-BFGS
这些方法的优点:
- 不需要手动选择学习率。
- 通常比普通梯度下降更快。
使用这些算法时,需要提供两个东西:
- 代价函数
J(theta)。 - 梯度,也就是每个参数对应的偏导数。
在 Octave 中,通常可以使用 fminunc 这类优化函数。
6.7 多类别分类:一对多
逻辑回归本身是二分类算法。对于多类别分类,可以使用一对多方法。
假设有 K 个类别,就训练 K 个二分类器:
text
第 1 个分类器:类别 1 vs 其他类别
第 2 个分类器:类别 2 vs 其他类别
...
第 K 个分类器:类别 K vs 其他类别预测时,把同一个样本输入所有分类器,选择输出概率最大的类别。