Skip to content

第 7 章 逻辑回归

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

7.1 分类问题

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

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

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

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

7.2 假说表示

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

g(z)=11+ez

逻辑回归假设函数:

hθ(x)=g(θTx)

展开:

hθ(x)=11+eθTx

hθ(x) 表示在给定 x 和参数 θ 时,y = 1 的概率。

例如:

hθ(x) = 0.7

表示模型认为该样本属于正类的概率是 0.7

7.3 判定边界

逻辑回归通常使用 0.5 作为分类阈值:

  • hθ(x) >= 0.5,预测为 1
  • hθ(x) < 0.5,预测为 0

因为 Sigmoid 函数在 z = 0 时取值为 0.5,所以判定边界由下面的条件决定:

θTx=0

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

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

7.4 代价函数

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

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

y = 1

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

y = 0

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

直观理解:

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

7.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)

其中 m 是训练样本数量,i 是样本下标,j 是特征或参数下标,α 是学习率。

形式上看,它和线性回归的梯度下降很像,但 hθ(x) 已经变成了逻辑回归的 Sigmoid 假设函数。

7.6 多类别分类:一对多

逻辑回归本身是二分类算法。对于多类别分类,可以使用一对多方法。

假设有 K 个类别,就训练 K 个二分类器:

text
第 1 个分类器:类别 1 vs 其他类别
第 2 个分类器:类别 2 vs 其他类别
...
第 K 个分类器:类别 K vs 其他类别

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

maxihθ(i)(x)

一对多方法的优点是容易理解,也可以直接复用二分类逻辑回归。缺点是多个分类器之间彼此独立训练,输出分数不一定形成严格的概率分布。

7.7 Softmax 多分类模型

多分类也可以直接训练一个模型,让它一次输出所有类别的分数。设第 k 个类别的线性得分为:

zk=θkTx

Softmax 把这些得分转换成概率:

P(y=kx)=ezkr=1Kezr

其中 K 是类别数。Softmax 的输出满足两个条件:

  • 每个类别概率都大于 0。
  • 所有类别概率之和等于 1。

预测时选择概率最大的类别:

y^=argmaxkP(y=kx)

7.8 多分类交叉熵

如果标签用 one-hot 向量表示,真实类别对应位置为 1,其余位置为 0。设模型输出的类别概率为 y^1,y^2,,y^K,单个样本的多分类交叉熵为:

L(y^,y)=k=1Kyklogy^k

因为 one-hot 标签中只有真实类别 cyc=1,所以这个式子等价于:

L=logy^c

也就是说,多分类交叉熵只关心模型分给真实类别的概率。真实类别概率越接近 1,损失越小;真实类别概率越接近 0,损失越大。

对整个训练集,平均损失可以写成:

J(θ)=1mi=1mk=1Kyk(i)logy^k(i)

7.9 为什么使用交叉熵

逻辑回归使用的代价函数本质上是二分类交叉熵。它的特点是:模型对正确类别越自信,损失越小;模型对错误类别越自信,损失越大。

例如真实标签是 1

模型预测损失直觉
hθ(x) 接近 1预测正确且自信,损失很小
hθ(x) 接近 0.5模型不确定,损失中等
hθ(x) 接近 0错得很自信,损失很大

如果用平方误差来训练逻辑回归,优化问题会变得不理想;使用交叉熵后,代价函数和概率模型更匹配,梯度形式也比较简洁。

Powered by VitePress