01 核心原理(大白话版)

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

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

为什么不直接用可行域?

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

阶跃函数

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

Sigmoid 函数

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

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

一步步构建逻辑回归

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

第一步 生成带标签的数据

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

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

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

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

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

Loss = −[ y · log(ŷ) + (1−y) · log(1−ŷ) ]

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

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

与线性回归的训练循环结构完全相同,只是误差项从 (pred - y) 变成了经过 Sigmoid 的版本,梯度形式一致。

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

02 代码

03 学术性讲解

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

Sigmoid 函数

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

σ(z) = 1 / (1 + e-z)
z σ(z) 1 σ(0)=0.5 Sigmoid 函数曲线
关键点:Sigmoid 函数的输出值域是 (0, 1),可以理解为概率值。当 z > 0 时,输出 > 0.5(正类);当 z < 0 时,输出 < 0.5(负类)。

逻辑回归模型

将线性组合传入 Sigmoid 函数:

P(y=1|x) = σ(wx + b) = 1 / (1 + e-(wx+b))

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

损失函数:二元交叉熵

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

L = -(y × log(ŷ) + (1-y) × log(1-ŷ))

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

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

决策边界

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

wx + b = 0

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

总结

任务

二分类问题

函数

Sigmoid

损失

交叉熵

输出

概率值