01 核心原理(大白话版)

之前讲的线性回归,本质是去拟合一个函数——找一条线尽量穿过所有数据点。

本篇要讲的逻辑回归恰恰相反:我们不关心数据点的具体值,只想找一条线把两类数据分开

为什么不直接用可行域?

我们自然会想到:直接判断数据点在线的哪一侧,一侧是 0,另一侧是 1——这正是阶跃函数的思路。

阶跃函数

在分界处从 0 直接跳到 1,处处梯度为零(边界处无定义)。没有梯度,梯度下降无法工作。

Sigmoid 函数

同样把输出压到 0~1 之间,但是平滑过渡,处处可导。梯度下降可以用它来指导参数更新。

逻辑回归用 Sigmoid 把阶跃变得平滑,从而能用梯度下降训练:σ(z) = 1 / (1 + e⁻ᶻ),z = w·x + b。决策边界就是 z = 0 的那条线,两侧分属不同类别。

一步步构建逻辑回归

我们把完整代码拆开,逐块理解每一步在做什么。

第一步 生成带标签的数据

与线性回归相比,数据多了一个维度——标签 y,只有 0 和 1 两个值。

第二步 Sigmoid:让阶跃拥有梯度

要把两类数据分开,自然会想到用一个判别式:z = w·x + b,z > 0 判为类别 1,z < 0 判为类别 0。注意这里的 x向量,二维特征下实际是 x₁、x₂ 两个维度,完整写法是:

$$z = w_1 x_1 + w_2 x_2 + b$$

z 就是把数据点代入直线方程的结果——正数在线一侧,负数在另一侧。但直接用 z 做分类是阶跃函数:z > 0 输出 1,否则输出 0,在边界处梯度为零,梯度下降无法工作。

解决办法:在外面套一个 Sigmoid,把 z 压成 (0,1) 之间的概率,同时保证处处平滑可导:

$$\hat{y} = \sigma(z) = \frac{1}{1+e^{-z}}$$

一行代码把任意实数压到 (0,1),同时保证处处可导,是逻辑回归的核心。

第三步 损失函数:二元交叉熵

用均方误差衡量分类效果会有问题,交叉熵是专为概率输出设计的损失函数:

$$\mathcal{L} = -\bigl[y\log\hat{y} + (1-y)\log(1-\hat{y})\bigr]$$

ŷ 是 Sigmoid 输出的概率,y 是真实标签(0 或 1)。预测越准,log 值越接近 0,损失越小;预测完全错误时,log 趋向负无穷,损失趋向无穷大——错得越离谱惩罚越重。

第四步 训练循环:梯度下降更新参数

对交叉熵损失求偏导,由链式法则展开:

$$\frac{\partial L}{\partial w_1} = (\hat{y}-y)\cdot x_1$$
$$\frac{\partial L}{\partial w_2} = (\hat{y}-y)\cdot x_2$$
$$\frac{\partial L}{\partial b} = \hat{y}-y$$

err = ŷ − y,形式与线性回归的梯度完全一样——这是交叉熵 + Sigmoid 联合求导的一个好性质:sigmoid 的导数和交叉熵的导数恰好抵消,最终只剩下预测误差 err。推广到 n 个样本取平均:

$$\frac{\partial L}{\partial w_1} = \frac{1}{n}\sum_i \text{err}_i \cdot x_{1i}$$
$$\frac{\partial L}{\partial b} = \frac{1}{n}\sum_i \text{err}_i$$

四段拼在一起,加上可视化,就是完整演示代码——看下面。

02 代码

03 学术性讲解

逻辑回归虽然名字里有"回归",但它实际上是一个分类算法。它主要用于二分类问题:判断结果是"0"还是"1"。

Sigmoid 函数

逻辑回归的核心是 Sigmoid 函数,它能把任意实数映射到 (0, 1) 区间:

$$\sigma(z) = \dfrac{1}{1+e^{-z}}$$
关键点:Sigmoid 函数的输出值域是 (0, 1),可以理解为概率值。当 z > 0 时,输出 > 0.5(正类);当 z < 0 时,输出 < 0.5(负类)。

逻辑回归模型

将线性组合传入 Sigmoid 函数:

$$P(y=1\mid x) = \sigma(wx+b) = \dfrac{1}{1+e^{-(wx+b)}}$$

模型的输出是一个 0 到 1 之间的概率值。我们通常以 0.5 为阈值进行分类。

损失函数:二元交叉熵

逻辑回归使用二元交叉熵 (Binary Cross-Entropy) 作为损失函数:

$$\mathcal{L} = -\bigl[y\log\hat{y} + (1-y)\log(1-\hat{y})\bigr]$$

其中 ŷ 是预测概率,y 是真实标签(0 或 1)。

为什么不用 MSE?如果使用均方误差,损失函数会变成非凸函数,容易陷入局部最优。交叉熵是凸函数,梯度下降能收敛到全局最优。

决策边界

决策边界是模型分类的分界线。对于线性逻辑回归,决策边界是一条直线:

$$wx + b = 0$$

直线的两侧分别属于不同的类别。

总结

任务

二分类问题

函数

Sigmoid

损失

交叉熵

输出

概率值