你手上有一组特征(成绩、年龄、点击次数……),要回答的却是一个是/否问题:过没过、点没点、会不会违约。直接拿线性回归去拟合 $0/1$ 标签,预测值常会跑出 $[0,1]$ 区间,读起来也不像概率。
逻辑回归(Logistic Regression,常简称 Logistic 回归)就是为这类二分类(也可扩展到多分类)准备的:先算一个可正可负的「倾向分数」,再用一条 S 形曲线压成 $0\sim 1$ 的概率,最后按阈值做决策。
段末注释:Logistic 回归名字里有「回归」,输出却常当分类器用;它估的是条件概率 $P(y=1\mid x)$,不是连续数值本身。后文沿用「Logistic 回归」。
配图目录:./1201.机器学习-算法-Logistic回归/。
1. 一句话定位
| 维度 | 一句话 |
|---|---|
| 学习范式 | 监督学习(需要带 $0/1$ 标签的样本) |
| 输入 → 输出 | 特征 $\mathbf{x}$ → 概率 $p$,再可选阈值得到类别 |
| 在优化什么 | 让「观测到的标签在这套概率下出现」尽量顺口(极大似然) |
出现背景:逻辑斯谛模型在统计与生物统计中沿用已久;将二分类与指数族/链接函数系统化的重要表述见 Cox(1958)等,后并入广义线性模型(GLM)传统(McCullagh & Nelder)。当时线性回归直接拟合 $0/1$ 会越出概率范围,该方法把线性预测接到 $(0,1)$ 概率尺度上,使「是/否」问题能在概率与对数赔率下估计。
它是广义线性模型(Generalized Linear Model,GLM)里最常用的一员:线性部分负责组合特征,非线性链接函数负责把结果落到概率尺度上。
段末注释:GLM = 线性预测子 + 链接函数 + 指数族噪声假设;Logistic 回归的链接是 Logit。后文用到时直接说 Logit / Sigmoid。
2. 直觉:三步流水线

可以按流水线记:
- 打分:把特征加权求和,得到分数 $z$(可正可负,像「有多倾向判为 1」)。
- 压成概率:用 Sigmoid 把 $z$ 压进 $(0,1)$,得到 $p$。
- 做决策(可选):例如 $p\ge 0.5$ 判为 1;阈值也可按业务成本改。
下面把每一步拆开。
3. 核心链路
3.1 线性打分
对特征 $x_1,\ldots,x_m$,模型先算:
$$
z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_m x_m
$$
- $\beta_0$:截距,所有特征为 0 时的基准倾向。
- $\beta_j$:特征 $x_j$ 每增加 1 个单位,$z$ 变化多少。
- $z$ 本身还不是概率,只是「打分」。
读参数时:$\beta_j>0$ 表示该特征增大时,判为 1 的倾向升高;符号与量级比「精确到小数点后很多位」更重要。
3.2 Sigmoid:把任意分数压成概率
Logistic 函数(也称 Sigmoid 函数)定义为:
$$
\sigma(z) = \frac{1}{1+e^{-z}}
$$
其中 $e\approx 2.718$ 是自然常数。无论 $z$ 多大或多小,$\sigma(z)$ 都落在 $(0,1)$ 内。

比喻:把 $z$ 想成水流压力,Sigmoid 是一道缓坡闸门——压力很负时几乎关死($p\to 0$),压力很正时几乎全开($p\to 1$),中间一段平滑过渡,不会像硬阈值那样「差一点点就整段翻转」。
于是二分类模型写成:
$$
P(y=1\mid x_1,\ldots,x_m) = \sigma(z) = \frac{1}{1+e^{-(\beta_0+\beta_1 x_1+\cdots+\beta_m x_m)}}
$$
段末注释:Sigmoid 这里专指把实数映到 $(0,1)$ 的 S 形函数;深度学习里同名激活函数形式相同,角色不同(这里直接解释为概率)。
3.3 Logit 与赔率:为什么还能「像线性回归那样」谈系数
概率 $p$ 不方便直接做线性模型(有上下界)。定义赔率(odds):
$$
\mathrm{odds} = \frac{p}{1-p}
$$
再取自然对数,得到 Logit:
$$
\mathrm{logit}(p) = \ln\frac{p}{1-p} = z = \beta_0 + \beta_1 x_1 + \cdots + \beta_m x_m
$$

比喻:把「会发生 / 不会发生」放在跷跷板两端,比值就是赔率;再取对数,跷跷板的倾斜就被拉成一条可以线性累加特征的数轴。所以系数 $\beta_j$ 解释的是:特征增加 1,对数赔率增加 $\beta_j$(等价于赔率乘以 $e^{\beta_j}$)。
3.4 参数从哪来:极大似然 + 迭代优化
训练集上,希望「标签为 1 的样本概率高、为 0 的样本概率低」。这正是极大似然估计(Maximum Likelihood Estimation,MLE)的思路:找一组 $\beta$,让整份数据在该模型下出现的可能性最大。
段末注释:MLE = 在模型假设下,挑出使观测数据似然最大的参数。Logistic 回归一般没有漂亮的闭式解,常用梯度下降、牛顿法、L-BFGS 等迭代求解;
sklearn已封装好。
实务里你很少手推梯度,但要知道两件事:
- 优化目标是似然(或等价的交叉熵损失),不是「最小二乘拟合 $0/1$」。
- 常加 L2/L1 正则,抑制系数膨胀、缓解共线性。
4. 手算完整实例:学时 → 是否及格
A. 问题与原始表
用每周有效学时 $x$ 预测是否及格 $y\in{0,1}$(示意,单位:小时)。
| 样本 | $x$ | $y$ |
|---|---|---|
| 1 | 0 | 0 |
| 2 | 1 | 0 |
| 3 | 2 | 1 |
B. 初始化
参数 $\beta_0=0$,$\beta_1=0$;学习率 $\eta=0.5$。用负对数似然的梯度下降更新(手算展示 2 步;实装会多步直至收敛)。
$$
p_i=\sigma(z_i),\quad z_i=\beta_0+\beta_1 x_i,\quad
\frac{\partial L}{\partial\beta_0}=\sum_i(p_i-y_i),\quad
\frac{\partial L}{\partial\beta_1}=\sum_i(p_i-y_i)x_i
$$
$$
\beta \leftarrow \beta - \eta,\nabla L
$$
C. 训练过程
第 1 步:$\beta=(0,0)$ ⇒ 各点 $p_i=0.5$。
| 样本 | $z$ | $p$ | $p-y$ | $(p-y)x$ |
|---|---|---|---|---|
| 1 | 0 | 0.5 | 0.5 | 0 |
| 2 | 0 | 0.5 | 0.5 | 0.5 |
| 3 | 0 | 0.5 | −0.5 | −1.0 |
$\nabla L=(0.5,,-0.5)$ ⇒ $\beta_0=0-0.5\times0.5=-0.25$,$\beta_1=0-0.5\times(-0.5)=0.25$。
第 2 步:$\beta=(-0.25,,0.25)$。
| 样本 | $z$ | $p=\sigma(z)$(约) | $p-y$ | $(p-y)x$ |
|---|---|---|---|---|
| 1 | −0.25 | 0.438 | 0.438 | 0 |
| 2 | 0.00 | 0.500 | 0.500 | 0.500 |
| 3 | 0.25 | 0.562 | −0.438 | −0.876 |
$\nabla L\approx(0.500,,-0.376)$ ⇒ $\beta_0\approx-0.25-0.5\times0.500=-0.50$,$\beta_1\approx0.25-0.5\times(-0.376)=0.438$。
(实装会继续迭代;此处截断以展示逻辑。)
D. 可部署对象
手算截断后的参数:$\beta_0\approx-0.50$,$\beta_1\approx0.438$。推理只依赖 $(\beta_0,\beta_1)$,不再使用训练循环里的逐步梯度。
E. 预测 / 推断
阈值取 $p\ge0.5$ 判及格。
- 训练内复核(样本 2,$x=1$):$z=-0.50+0.438\times1=-0.062$,$p=\sigma(z)\approx0.48$ → 判 $0$(未及格)。真值 $y=0$,两步后仍可能错,说明步数不够;逻辑上已走完「打分→概率→阈值」。
- 新样本 $x=3$:$z=-0.50+0.438\times3\approx0.81$,$p\approx0.69$ → 判 $1$。
5. 适用 / 不适用
按特征 / 训练目标 / 训练数据三维对照;每行带一个具体例子。
| 维度 | 判定 | 要求或边界 | 具体例子 |
|---|---|---|---|
| 特征 | 适用 | 数值或已编码的类别特征;与标签在对数赔率上近似线性可加;维数相对样本量别极端爆炸 | 信贷表:年龄、收入、负债率、是否有房贷(独热后)预测违约,$z=\beta^\top x$ 说得通 |
| 特征 | 不适用 | 原始像素 / 原始长文本等需深层表征,或特征间强非线性交互主导 | 用未卷积的原始 224×224 图像像素直接做是否「猫」的 Logistic,边界弯、交互多,线性 Logit 吃力 |
| 训练目标 | 适用 | 二分类(可扩多分类);需要 $P(y=1\mid x)$ 或可解释的系数方向;决策可用阈值消化代价不对称 | 邮件「垃圾 / 正常」:输出概率后,把阈值调到 0.8 以少误伤正常信 |
| 训练目标 | 不适用 | 要预测连续数值本身;或只要一条可读「如果…则…」规则树 | 预测下周销售额(元)应优先回归;合规审计要 if-then 规则时更适合树/规则学习 |
| 训练数据 | 适用 | 有标签、样本量中等即可起步;类别别极端悬殊,或已用权重/采样/阈值处理 | 某病筛查阴阳性各数千例,先做标准化与基线 Logistic,再谈阈值与校准 |
| 训练数据 | 不适用 | 正例极少却死守默认阈值 0.5、也不调权重;或标签噪声极大且无人清洗 | 欺诈率 0.1%,直接 predict 默认 0.5,模型几乎全判「正常」——问题在决策与采样,不只在算法名 |
6. 优缺点与常见坑
优点
- 概率输出,便于设阈值、做排序与风险评估。
- 系数可解释(方向 + 对对数赔率的贡献)。
- 训练与推理都快,适合基线与线上轻量模型。
- 与正则、特征工程搭配成熟(
sklearn、statsmodels 等)。
缺点
- 默认假设特征对 Logit 近似线性;复杂非线性要靠特征构造或换模型。
- 对共线性、极端异常值仍敏感。
- 默认阈值 $0.5$ 在类别不平衡时往往不是好决策点。
常见坑
- 尺度混乱:未标准化时,系数大小不能跨特征直接比「谁更重要」。
- 死守 0.5:召回/精确率成本不对称时,应按验证集或业务代价选阈值。
- 概率未校准:有的实现偏乐观/悲观,高风险场景要看校准曲线。
- 把多分类当多次「随便二分类」:更稳妥用 Softmax / 多项式 Logistic,或明确一对多策略。
7. 最小可运行示例
1 | """Logistic 回归最小示例:输入二维特征,输出类别与概率。""" |
预期:学习时长靠近「及格簇」时,$P(y=1)$ 明显高于 0.5;具体数值随求解器与正则略有浮动。本代码为演示 API,与上文 3 点手算表无关。
重要配置参数(sklearn LogisticRegression)
| 参数(库内常用名) | 训练中的作用与影响 | 参考起点 / 常用范围 | 配置指导 |
|---|---|---|---|
C |
正则强度的倒数:越大越贴训练、越易过拟合;越小越压系数、越偏欠拟合 | 常先试 1.0;网格常见 0.01~100(对数间隔) |
验证集过拟合 → 减小 C;欠拟合 → 增大 C |
penalty |
l2 默认;l1 更易把部分系数压到 0(特征稀疏) |
默认 l2;需特征选择感时再试 l1 |
l1 需配兼容 solver(如 liblinear / saga) |
solver |
优化器选择;小数据 liblinear 稳,大数据/elasticnet 常用 saga |
二分类默认常够用;维数大优先 saga |
不收敛先换 solver 或加大 max_iter,不要只盲加轮数 |
max_iter |
迭代上限;太小可能未收敛 | 起点 100~1000 |
出现收敛警告再加大;已收敛后继续加大收益小 |
class_weight |
类别不平衡时抬高少数类损失权重 | 不平衡先试 balanced |
先看混淆矩阵/召回,再调权重或阈值,不要只看准确率 |
8. 和近邻算法怎么挑
| 需求 | 更优先考虑 |
|---|---|
| 预测连续数值,且关系近似直线 | 线性回归 |
| 要概率 + 系数解释,二分类基线 | Logistic 回归 |
| 间隔最大化、核技巧、中小样本复杂边界 | 支持向量机(SVM) |
| 强非线性、特征交互多、可接受较弱系数解释 | 树模型 / Boosting |
选型按条件,不存在绝对「更强」。
9. 小结
- Logistic 回归 = 线性打分 + Sigmoid 成概率 +(可选)阈值决策。
- Logit 把概率拉到可线性累加的尺度,所以系数读的是「对对数赔率的贡献」。
- 参数通常用极大似然迭代求得;工程上优先用现成库,把精力放在特征、阈值与校准。
- 做基线、要解释、要概率时很合适;边界弯、交互狂、类别极端不平衡时,要改特征或换模型,并重设决策阈值。
参考文献
- Cox D.R. The regression analysis of binary sequences. J. R. Stat. Soc. B 1958.
- Hosmer D.W., Lemeshow S., Sturdivant R.X. Applied Logistic Regression. Wiley.
- scikit-learn: Logistic Regression
- Bishop C.M. Pattern Recognition and Machine Learning, 相关分类与概率判别章节。