【机器学习】(8)—— 分类简介

分类入门:从概率到类别预测

摘要:逻辑回归输出的是概率,但业务往往需要的是类别——「垃圾邮件 / 正常」「高效 / 非高效」。本文介绍分类(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 取自有限集合。

类型类别数例子
二分类2spam / not spam,高效 / 非高效
多分类 K > 2 K>2 K>2手写数字 0–9,动物 cat / dog / bird

与回归对比:

维度回归分类
标签连续数值(MPG)离散类别(0/1 或更多)
输出 y ′ ∈ R y' \in \mathbb{R} yR类别名或类别编号
典型损失MSELog 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=1x)。转为硬分类的规则:

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 pTif 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 w4.28 b ≈ 14.98 b \approx 14.98 b14.98,7 辆车的预测概率:

重量真实标签 p p p
2.371(高效)0.992
3.5010.500
3.4300.574
4.4200.019

不同阈值下的判定:

阈值 T T T准确率现象
0.371%过多判为高效( p ≥ 0.3 p \geq 0.3 p0.3 的样本太多)
0.586%对本玩具数据较合适
0.671%过多判为非高效

请添加图片描述

边界样本( p ≈ 0.5 p \approx 0.5 p0.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%,却漏掉所有垃圾邮件——在极端不平衡数据上,准确率会误导

选阈值的实用起点:

  1. 默认从 T = 0.5 T=0.5 T=0.5 开始,观察混淆矩阵
  2. 漏检正类代价高(如疾病筛查),降低 T T T 提高召回
  3. 误报正类代价高(如误封正常邮件),提高 T T T 提高精确率
  4. 在验证集上比较多个 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 算清楚、用明白。

系列导航


如果本篇对你有帮助,欢迎点赞、收藏、关注博主,机器学习专栏持续更新中,下次更新不迷路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值