ML1-4 分类与逻辑回归

· 更新于 2026/8/20· Tech

1. 分类问题

与我们之前分析的回归问题的解决框架类似,但对于二元分类问题,yy 一般取 0 和 1。

例子

如果我们试图构建一个电子邮件垃圾邮件分类器,那么 x(i)x^{(i)} 可以是某封电子邮件的某些特征,如果它是垃圾邮件,则 yy 为 1,否则为 0。0 也称为负类,1 称为正类,有时也分别用符号"-"和"+"表示。

  • 给定 x(i)x^{(i)},对应的 y(i)y^{(i)} 也称为训练样本的标签

2. 逻辑回归

我们可以忽略 yy 是离散值这一事实,使用旧的线性回归算法来尝试预测给定 xxyy
但是从直觉上可以考虑到不妥,因为我们知道 hθ(x)h_\theta(x) 的取值存在远小于 0 或者远大于 1 的情况。

为了解决这个问题,让我们改变假设函数 hθ(x)h_\theta(x) 的形式。我们将选择:

hθ(x)=g(θTx)=11+eθTxh_\theta(x) = g(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}}

其中

g(z)=11+ezg(z) = \frac{1}{1 + e^{-z}}
称为逻辑函数Sigmoid 函数。以下是 g(z)g(z) 的图形:

逻辑回归的定义

逻辑回归(Logistic Regression)是一种广泛应用于分类问题的监督学习算法。与线性回归不同,逻辑回归并不直接预测数值,而是估计样本属于某一类别的概率。其基本思想是通过引入一个函数将线性回归的输出从 [,][-\infty, \infty] 压缩到 [0,1][0, 1]

以下是 Sigmoid 函数导数的一个有用性质,我们记作 gg'

g(z)=ddz11+ez=1(1+ez)2ez=11+ez(111+ez)=g(z)(1g(z))\begin{aligned}g'(z) &= \frac{d}{dz} \frac{1}{1 + e^{-z}} \\&= \frac{1}{(1 + e^{-z})^2} e^{-z} \\&= \frac{1}{1 + e^{-z}} \cdot \left(1 - \frac{1}{1 + e^{-z}}\right) \\&= g(z)(1 - g(z))\end{aligned}

3. 解逻辑回归

与前述的最小二乘回归类似,对于给定的逻辑回归模型,我们也使用极大似然估计的方式来拟合参数。

3.1 概率解释

先为分类模型赋予一组概率假设:

P(y=1x;θ)=hθ(x)P(y = 1 | x; \theta) = h_\theta(x)
P(y=0x;θ)=1hθ(x)P(y = 0 | x; \theta) = 1 - h_\theta(x)

上述假设可以更紧凑的写为(伯努利分布):

p(yx;θ)=(hθ(x))y(1hθ(x))1yp(y | x; \theta) = (h_\theta(x))^y (1 - h_\theta(x))^{1-y}
假设 nn 个样本是 IID 的,那么我们可以写出似然函数:

L(θ)=p(yX;θ)=i=1np(y(i)x(i);θ)=i=1n(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)\begin{aligned}L(\theta) &= p(\vec{y} | X; \theta) \\&= \prod_{i=1}^{n} p(y^{(i)} | x^{(i)}; \theta) \\&= \prod_{i=1}^{n} \left( h_\theta(x^{(i)}) \right)^{y^{(i)}} \left( 1 - h_\theta(x^{(i)}) \right)^{1-y^{(i)}}\end{aligned}

和之前一样,最大化对数似然会更简单:

(θ)=logL(θ)=i=1ny(i)logh(x(i))+(1y(i))log(1h(x(i)))\ell(\theta) = \log L(\theta) = \sum_{i=1}^{n} y^{(i)} \log h(x^{(i)}) + (1 - y^{(i)}) \log(1 - h(x^{(i)}))

3.2 如何极大化似然

类似于在线性回归中的推导,我们可以使用梯度上升。若用向量符号表示,我们的更新将是:

θ:=θ+αθ(θ)\theta := \theta + \alpha \nabla_\theta \ell(\theta)
(我们当前正在极大化一个函数,所以上式中是 ++ 号)

和之前一样,我们沿用 x0=1x_0 = 1 的约定,因此

hθ(x)=g(θTx), θTx=θ0+j=1dθjxjh_\theta(x) = g(\theta^T x), \text{ }\theta^T x = \theta_0 + \sum_{j=1}^{d} \theta_j x_j

让我们从一个训练样本 (x,y)(x, y) 开始,求导以推导随机梯度上升规则:

θj(θ)=(y1g(θTx)(1y)11g(θTx))θjg(θTx)=(y1g(θTx)(1y)11g(θTx))g(θTx)(1g(θTx))θjθTx=(y(1g(θTx))(1y)g(θTx))xj=(yhθ(x))xj\begin{aligned}\frac{\partial}{\partial \theta_j} \ell(\theta) &= \left( y \frac{1}{g(\theta^T x)} - (1 - y) \frac{1}{1 - g(\theta^T x)} \right) \frac{\partial}{\partial \theta_j} g(\theta^T x) \\&= \left( y \frac{1}{g(\theta^T x)} - (1 - y) \frac{1}{1 - g(\theta^T x)} \right) g(\theta^T x)(1 - g(\theta^T x)) \frac{\partial}{\partial \theta_j} \theta^T x \\&= \left( y (1 - g(\theta^T x)) - (1 - y) g(\theta^T x) \right) x_j \\&= (y - h_\theta(x)) x_j\end{aligned}

上面我们使用了 g(z)=g(z)(1g(z))g'(z) = g(z)(1 - g(z)) 这一性质,并得到了随机上升梯度规则:

θj:=θj+α(y(i)hθ(x(i)))xj(i)\theta_j := \theta_j + \alpha \left( y^{(i)} - h_\theta(x^{(i)}) \right) x_j^{(i)}

上式和 LMS 更新看起来相同。但这不是同一个算法,因为现在 hθ(x(i))h_\theta(x^{(i)}) 被定义为 θTx(i)\theta^T x^{(i)} 的非线性函数。那这是不是巧合呢,我们在之后的GLM内容中会去讨论其背后的原理。

4. 交叉熵损失

注意我们之前得到的极大化似然形式:

(θ)=logL(θ)=i=1ny(i)logh(x(i))+(1y(i))log(1h(x(i)))\ell(\theta) = \log L(\theta) = \sum_{i=1}^{n} y^{(i)} \log h(x^{(i)}) + (1 - y^{(i)}) \log(1 - h(x^{(i)}))

它等价于极小化下式:

loss(θ)=i=1ny(i)logh(x(i))(1y(i))log(1h(x(i)))loss(\theta) = \sum_{i=1}^{n} - y^{(i)} \log h(x^{(i)}) - (1 - y^{(i)}) \log(1 - h(x^{(i)}))

上式为具有熵的形式(p log p−p\text{ }log\text{ }p),称为交叉熵损失(cross-entropy loss)。

cicada@blog:~