分类入门:从概率到类别预测
文章目录
摘要:逻辑回归输出的是概率,但业务往往需要的是类别——「垃圾邮件 / 正常」「高效 / 非高效」。本文介绍分类(Classification)任务的核心概念:如何把概率通过阈值转为 0/1 判定,二分类与多分类有何区别,以及后续将学习的评估指标全景。延续汽车高效分类示例,演示不同阈值对预测结果的影响,并附可运行代码。适合已学完逻辑回归三部曲的读者。
1. 从概率到类别:新的问题
逻辑回归三部曲解决了三件事:模型是什么、怎么算概率、怎么训练参数。模型输出 p = 0.73 p=0.73 p=0.73 时,含义是「有 73% 可能属于正类」——这在风控排序、推荐打分等场景已经足够。
但许多场景要的是明确类别:
- 邮件客户端:直接标「垃圾」或「正常」,而不是显示 73%
- 质检流水线:判定零件「合格 / 不合格」
- 汽车示例:判定车辆「高效 / 非高效」
分类(Classification)的任务:预测样本属于哪一个类别(Class)。对逻辑回归而言,关键一步是:用阈值把连续概率切成离散标签。

逻辑回归模块:训练模型 -> 输出概率 p
分类模块: 选择阈值 T -> 输出类别 -> 评估好坏
2. 什么是分类
监督学习中,分类指根据特征 x x x,预测离散标签 y y y, y y y 取自有限集合。
| 类型 | 类别数 | 例子 |
|---|---|---|
| 二分类 | 2 | spam / not spam,高效 / 非高效 |
| 多分类 | K > 2 K>2 K>2 | 手写数字 0–9,动物 cat / dog / bird |
与回归对比:
| 维度 | 回归 | 分类 |
|---|---|---|
| 标签 | 连续数值(MPG) | 离散类别(0/1 或更多) |
| 输出 | y ′ ∈ R y' \in \mathbb{R} y′∈R | 类别名或类别编号 |
| 典型损失 | MSE | Log Loss |
| 典型指标 | RMSE、 R 2 R^2 R2 | 准确率、精确率、召回率、AUC |

本专栏分类系列先聚焦二分类——概念最清晰,也是工业界最常见。多分类可视为「从 K K K 个类别中选一个」:例如手写数字识别输出 0–9 之一,常用 Softmax 回归(逻辑回归的多类推广)或神经网络。多分类的评估与混淆矩阵扩展将在后续篇章简要触及。
3. 阈值:概率变类别的开关
逻辑回归给出 p = P ( y = 1 ∣ x ) p = P(y=1 \mid x) p=P(y=1∣x)。转为硬分类的规则:
y ^ = { 1 if p ≥ T 0 if p < T \hat{y} = \begin{cases} 1 & \text{if } p \geq T \\ 0 & \text{if } p < T \end{cases} y^={10if p≥Tif p<T
T T T 是阈值(Threshold),默认常取 0.5——概率过半判正类。但 0.5 并非唯一正确答案,业务可以调整:
| 场景 | 阈值倾向 | 原因 |
|---|---|---|
| 垃圾邮件过滤 | 偏低(如 0.3) | 宁可误判,不可漏掉垃圾 |
| 医疗确诊 | 偏高(如 0.8) | 宁可漏诊复查,不可误报 |
| 平衡场景 | 0.5 | 无特殊偏好时的起点 |

要点:同一模型、同一组概率,换阈值就会得到不同分类结果——因此评价模型不能只看「用了哪个阈值下的准确率」,还要理解指标如何随阈值变化(ROC 曲线将在后续篇章讲解)。
以垃圾邮件为例:模型输出 p = 0.75 p=0.75 p=0.75。若 T = 0.5 T=0.5 T=0.5,判为垃圾;产品可展示「75% 置信度」供用户参考。若安全策略要求更严格,可把 T T T 提至 0.9——只有极高置信度才自动拦截,其余进入人工审核。概率与类别可以并存,不必二选一。
4. 汽车示例:阈值如何改变预测
沿用第七篇训练参数 w ≈ − 4.28 w \approx -4.28 w≈−4.28, b ≈ 14.98 b \approx 14.98 b≈14.98,7 辆车的预测概率:
| 重量 | 真实标签 | p p p |
|---|---|---|
| 2.37 | 1(高效) | 0.992 |
| 3.50 | 1 | 0.500 |
| 3.43 | 0 | 0.574 |
| 4.42 | 0 | 0.019 |
不同阈值下的判定:
| 阈值 T T T | 准确率 | 现象 |
|---|---|---|
| 0.3 | 71% | 过多判为高效( p ≥ 0.3 p \geq 0.3 p≥0.3 的样本太多) |
| 0.5 | 86% | 对本玩具数据较合适 |
| 0.6 | 71% | 过多判为非高效 |

边界样本( p ≈ 0.5 p \approx 0.5 p≈0.5)对阈值最敏感:3.50 千磅的车 p = 0.500 p=0.500 p=0.500, T = 0.5 T=0.5 T=0.5 判高效, T = 0.51 T=0.51 T=0.51 就判非高效。这提醒我们:概率接近阈值的样本,分类不确定性最高。
5. 如何评价分类模型
概率阶段用 Log Loss;转为类别后,需要新的分类指标。后续篇章将逐一深入,此处给出全景:

| 指标 / 工具 | 回答的问题 |
|---|---|
| 准确率 Accuracy | 整体判对的比例 |
| 混淆矩阵 | TP、FP、FN、TN 各多少 |
| 精确率 Precision | 判为正类里,有多少真是正类 |
| 召回率 Recall | 真实正类里,有多少被找出来 |
| ROC / AUC | 遍历所有阈值,整体区分能力如何 |
为什么不能只看准确率? 若 99% 邮件是正常邮件,模型「全判正常」准确率 99%,却漏掉所有垃圾邮件——在极端不平衡数据上,准确率会误导。
选阈值的实用起点:
- 默认从 T = 0.5 T=0.5 T=0.5 开始,观察混淆矩阵
- 若漏检正类代价高(如疾病筛查),降低 T T T 提高召回
- 若误报正类代价高(如误封正常邮件),提高 T T T 提高精确率
- 在验证集上比较多个 T T T,结合业务成本做最终决定
6. 端到端分类流程
把逻辑回归与分类模块串起来:

1. 准备带标签数据
2. 训练逻辑回归(Log Loss + 正则化) <- 第 5-7 篇
3. 对新样本输出概率 p <- 第 6 篇
4. 选择阈值 T,输出类别 y_hat <- 本篇
5. 用混淆矩阵、精确率、召回率等评估 <- 第 9-11 篇
6. 按业务调整 T,部署上线
训练与推理分离是工程常态:模型文件存 w , b w,b w,b;阈值 T T T 可按产品线、地区、时段单独配置,无需重新训练。
7. 可运行代码:阈值与准确率
import numpy as np
X = np.array([3.5, 3.69, 3.44, 3.43, 4.34, 4.42, 2.37])
Y = np.array([1, 0, 1, 0, 0, 0, 1], dtype=int)
w, b = -4.28, 14.98
def sigmoid(z):
return 1.0 / (1.0 + np.exp(-np.clip(z, -30, 30)))
def predict_class(probs, threshold):
return (probs >= threshold).astype(int)
probs = sigmoid(w * X + b)
print(f"{'Weight':>8} {'Label':>6} {'Prob':>8}")
for x, y, p in zip(X, Y, probs):
print(f"{x:8.2f} {y:6d} {p:8.3f}")
print(f"\n{'Threshold':>10} {'Accuracy':>10} {'Predictions'}")
for t in [0.3, 0.5, 0.6]:
pred = predict_class(probs, t)
acc = (pred == Y).mean()
print(f"{t:10.1f} {acc:10.0%} {pred.tolist()}")
运行环境:Python 3.8+,安装 NumPy(pip install numpy)。
预期输出(约):
Weight Label Prob
3.50 1 0.500
3.69 0 0.307
3.44 1 0.564
3.43 0 0.574
4.34 0 0.027
4.42 0 0.019
2.37 1 0.992
Threshold Accuracy Predictions
0.3 71% [1, 1, 1, 1, 0, 0, 1]
0.5 86% [1, 0, 1, 1, 0, 0, 1]
0.6 71% [0, 0, 0, 0, 0, 0, 1]
8. 能力边界与常见误区
8.1 适用边界
- 本篇讨论二分类 + 逻辑回归概率转类别;多分类、非概率模型(如决策树直接输出类)路径不同。
- 阈值选择应结合验证集与业务成本,不宜只在训练集上挑「准确率最高」的 T T T。
- 类别极不平衡时,优先关注召回率、精确率等,而非准确率。
8.2 常见误区
| 误区 | 正解 |
|---|---|
| 「分类 = 逻辑回归」 | 逻辑回归是常用二分类模型之一,还有树模型、SVM 等 |
| 「阈值固定 0.5 永远最优」 | 0.5 是起点;业务成本不同,最优 T T T 不同 |
| 「概率 0.51 和 0.99 判同一类就没区别」 | 类别相同,但置信度不同;排序与人工复核仍可利用 p p p |
| 「准确率高 = 好模型」 | 不平衡数据上准确率会骗人 |
| 「重新训练才能改阈值」 | 阈值是后处理参数,与 w , b w,b w,b 独立可调 |
9. 关键术语速查
| 术语 | 一句话解释 |
|---|---|
| 分类 | 预测样本属于哪个离散类别 |
| 类别 Class | 标签的取值,如 spam / not spam |
| 二分类 | 只有两个类别 |
| 多分类 | 三个及以上类别 |
| 阈值 | 把概率 p p p 切成 0/1 的分界线 |
| 正类 / 负类 | 通常记 y = 1 y=1 y=1 为正类, y = 0 y=0 y=0 为负类 |
| 硬分类 | 输出 0/1;与保留概率的「软分类」相对 |
| 准确率 | 判对样本占总样本比例 |
10. 小结
逻辑回归告诉你「有多大概率」;分类告诉你「到底是哪一类」。二者通过阈值衔接——这是从建模走向业务决策的第一步。
本篇搭建了分类系列的主线:阈值 → \to → 混淆矩阵 → \to → 精确率 / 召回率 → \to → ROC / AUC。下一篇将深入混淆矩阵,把 TP、FP、FN、TN 算清楚、用明白。
系列导航:
- 上一篇:【机器学习】(7)—— 逻辑回归:损失与正则化
- 下一篇(预告):阈值与混淆矩阵——分类预测如何评估
如果本篇对你有帮助,欢迎点赞、收藏、关注博主,机器学习专栏持续更新中,下次更新不迷路。
—— 分类简介&spm=1001.2101.3001.5002&articleId=162296197&d=1&t=3&u=c95ca715cf00417792cec59db664c593)
4385

被折叠的 条评论
为什么被折叠?



