逻辑回归
名字叫"回归",干的却是分类的活——用一条线把两类数据分开
01 核心原理(大白话版)
之前讲的线性回归,本质是去拟合一个函数——找一条线尽量穿过所有数据点。
本篇要讲的逻辑回归恰恰相反:我们不关心数据点的具体值,只想找一条线把两类数据分开。
为什么不直接用可行域?
我们自然会想到:直接判断数据点在线的哪一侧,一侧是 0,另一侧是 1——这正是阶跃函数的思路。
阶跃函数
在分界处从 0 直接跳到 1,处处梯度为零(边界处无定义)。没有梯度,梯度下降无法工作。
Sigmoid 函数
同样把输出压到 0~1 之间,但是平滑过渡,处处可导。梯度下降可以用它来指导参数更新。
逻辑回归用 Sigmoid 把阶跃变得平滑,从而能用梯度下降训练:σ(z) = 1 / (1 + e⁻ᶻ),z = w·x + b。决策边界就是 z = 0 的那条线,两侧分属不同类别。
一步步构建逻辑回归
我们把完整代码拆开,逐块理解每一步在做什么。
与线性回归相比,数据多了一个维度——标签 y,只有 0 和 1 两个值。
一行代码把任意实数压到 (0,1),同时保证处处可导,是逻辑回归的核心。
用均方误差衡量分类效果会有问题,交叉熵是专为概率输出设计的损失函数:
ŷ 是 Sigmoid 输出的概率,y 是真实标签(0 或 1)。预测越准,log 值越接近 0,损失越小;预测完全错误时,log 趋向负无穷,损失趋向无穷大——错得越离谱惩罚越重。
与线性回归的训练循环结构完全相同,只是误差项从 (pred - y) 变成了经过 Sigmoid 的版本,梯度形式一致。
四段拼在一起,加上可视化,就是完整演示代码——看下面。
02 代码
03 学术性讲解
逻辑回归虽然名字里有"回归",但它实际上是一个分类算法。它主要用于二分类问题:判断结果是"0"还是"1"。
Sigmoid 函数
逻辑回归的核心是 Sigmoid 函数,它能把任意实数映射到 (0, 1) 区间:
逻辑回归模型
将线性组合传入 Sigmoid 函数:
模型的输出是一个 0 到 1 之间的概率值。我们通常以 0.5 为阈值进行分类。
损失函数:二元交叉熵
逻辑回归使用二元交叉熵 (Binary Cross-Entropy) 作为损失函数:
其中 ŷ 是预测概率,y 是真实标签(0 或 1)。
决策边界
决策边界是模型分类的分界线。对于线性逻辑回归,决策边界是一条直线:
直线的两侧分别属于不同的类别。
总结
二分类问题
Sigmoid
交叉熵
概率值