Skip to content

第 6 章 逻辑回归

逻辑回归用于分类问题。虽然名字里有“回归”,但它解决的是离散类别预测,而不是连续值预测。

6.1 分类问题

分类问题的输出通常是离散值。例如:

text
0: 不是垃圾邮件
1: 是垃圾邮件

二分类问题中,常用 y = 0 表示负类,y = 1 表示正类。

如果直接用线性回归处理分类问题,预测值可能小于 0 或大于 1,不适合表示概率。因此需要新的模型。

6.2 假说表示

逻辑回归使用 Sigmoid 函数把任意实数映射到 01 之间。

g(z)=11+ez

逻辑回归假设函数:

hθ(x)=g(θTx)

展开:

hθ(x)=11+eθTx

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,所以判定边界由下面的条件决定:

θTx=0

判定边界可以是线性的,也可以通过多项式特征变成非线性的。

例如引入平方项后,判定边界可能变成圆形或更复杂的曲线。

6.4 代价函数

线性回归的平方误差代价函数不适合直接用于逻辑回归,因为会形成非凸函数,梯度下降可能陷入局部最小值。

逻辑回归使用新的代价函数。

y = 1

Cost(hθ(x),y)=log(hθ(x))

y = 0

Cost(hθ(x),y)=log(1hθ(x))

直观理解:

  • 真实标签是 1 时,如果模型预测接近 1,代价很小。
  • 真实标签是 1 时,如果模型预测接近 0,代价会非常大。
  • 真实标签是 0 时情况相反。

6.5 简化的成本函数和梯度下降

逻辑回归代价函数可以合并写成:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

梯度下降更新形式:

θjθjα1mi=1m(hθ(x(i))y(i))xj(i)

形式上看,它和线性回归的梯度下降很像,但 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 其他类别

预测时,把同一个样本输入所有分类器,选择输出概率最大的类别。

maxihθ(i)(x)

Powered by VitePress