Sehlani
Sehlani
发布于 2025-10-31 / 7 阅读
0
0

机器学习入门 10: 类别不平衡问题

机器学习入门 10: 类别不平衡问题

一、问题的起点:类别不平衡(Imbalanced Classes)

在现实世界中,许多分类任务的数据分布都极度不平衡(Imbalanced Classes)。
例如:

  • 欺诈检测(Fraud Detection):99.9% 的交易正常,极少数为欺诈;

  • 疾病筛查(Disease Screening):阳性病例往往只占样本的极小比例;

  • 网络入侵检测(Intrusion Detection):攻击记录远少于正常记录。

这类问题的共同特点是:​少数类(Minority Class)才是我们最关心的目标​,
但大多数传统模型追求“整体准确率”时,往往会忽略这些关键样本。
这就是所谓的 ​类别不平衡问题(Imbalanced Class Problem)


二、准确率的定义与局限(Accuracy and Its Limitation)

1. 混淆矩阵(Confusion Matrix)

为了评估分类模型,我们通常用混淆矩阵(Confusion Matrix)表示预测结果:

实际类别(Actual)

预测为正(Predicted Positive)

预测为负(Predicted Negative)

实际为正(Positive)

真阳性(True Positive, TP)

假阴性(False Negative, FN)

实际为负(Negative)

假阳性(False Positive, FP)

真阴性(True Negative, TN)

其中:

  • TP(True Positive) :真正预测对的正例

  • TN(True Negative) :真正预测对的负例

  • FP(False Positive) :误报,把负类预测成正类

  • FN(False Negative) :漏检,把正类预测成负类


2. 准确率(Accuracy)的计算

准确率的定义非常简单:

Accuracy=\frac{TP+TN}{TP+TN+FP+FN}

也就是所有预测正确的样本比例。
当数据类别接近平衡时,它确实是一个直观且可靠的指标。
但一旦数据极度不平衡,Accuracy 会失去意义。


3. 示例:高准确率 ≠ 好模型

假设我们要预测某种罕见疾病:

  • 总样本数 = 1000

  • 其中 990 人健康(Negative),10 人患病(Positive)

如果一个分类器“偷懒”,直接把所有样本都预测为健康,则:

指标

数值

TP = 0

TN = 990

FP = 0

FN = 10

于是:

Accuracy=\frac{990}{1000}=99%

看似完美的 99% 准确率,
实际上这个模型一个病人都没检测出来
在任何实际应用场景(如医疗、金融、安防)中,它都毫无意义


4. 准确率的盲点

即使两个模型的 Accuracy 相近,它们在少数类的识别能力可能完全不同。
课件中的对比图展示了这一点:

  • 模型 A:高准确率,但几乎没识别到正例;

  • 模型 B:准确率稍低,但能检测到部分正例。

当类别严重不平衡时,仅依赖 Accuracy 会导致错误判断。
我们需要更细致的指标来评价模型的“真正实用性”。


三、替代指标:精准率、召回率与 F1(Precision, Recall & F1-score)

为了克服准确率的局限,我们引入更能反映少数类检测性能的指标。


1. 精准率(Precision)

Precision=\frac{TP}{TP+FP}

含义:在所有被预测为正类的样本中,真正为正的比例

  • 高 Precision → 模型预测的“正”更可信(误报少)。

  • 低 Precision → 模型“乱报”,误报过多。


2. 召回率(Recall)

Recall=\frac{TP}{TP+FN}

含义:在所有实际为正类的样本中,被模型成功识别的比例

  • 高 Recall → 模型漏检少。

  • 低 Recall → 模型错过大量正例。


3. F1 分数(F1-score)

F1=2×\frac{Precision×Recall}{Precision+Recall}

是 Precision 和 Recall 的调和平均,
用于衡量模型在“准确”和“全面”之间的平衡。

模型

Precision

Recall

F1-score

A

0.50

0.17

0.26

B

0.67

0.33

0.44

C

0.75

0.50

0.60

→ 模型 C 的 F1 最高,代表更好的综合性能。

当类别不平衡时,应优先报告 Precision、Recall 和 F1-score。


四、ROC 曲线与 AUC(ROC Curve and AUC)

1. 概念:阈值与全面性能

Precision、Recall、F1 都依赖于一个固定阈值(Threshold),
而 ROC 曲线展示的是所有可能阈值下模型性能的整体变化。


2. ROC 坐标定义

轴向

名称

公式

含义

横轴

FPR(False Positive Rate)

FP / (FP + TN)

假阳性率(误报比例)

纵轴

TPR(True Positive Rate) = Recall

TP / (TP + FN)

真阳性率(召回比例)

ROC 展示的就是 “FPR–TPR” 之间的权衡关系。


3. 构建过程

  1. 获取模型输出的分数(Score) :每个样本的预测概率或置信度。

  2. 按分数从高到低排序

  3. 逐步移动阈值(从高到低),每次计算对应的:

    • TP、FP、TN、FN;

    • 得到一组 (FPR, TPR)。

  4. 绘制曲线:连接所有点,即得 ROC 曲线。

    • 起点 (0, 0):全判负。

    • 终点 (1, 1):全判正。


4. 曲线形状的意义

曲线位置

含义

模型表现

近对角线

像随机猜测

AUC≈0.5

鼓起左上角

较好

0.7–0.9

紧贴左上角

理想模型

AUC→1.0

低于对角线

反向分类

可反转预测标签

ROC 曲线越靠左上角越好,说明模型在低误报下能保持高检测率。


5. AUC(Area Under Curve)

AUC 是 ROC 曲线下的面积,
代表模型在所有阈值下的平均判别能力。

AUC 值

模型表现

1.0

完美分类

0.9–1.0

极好

0.8–0.9

良好

0.7–0.8

一般

0.5

随机猜测

<0.5

完全反向

AUC 的统计意义是:

“随机选一个正样本与一个负样本,
模型正确判出谁更可能是正的概率”。


6. 为什么 ROC/AUC 更可靠?

对比项

Accuracy

ROC/AUC

依赖阈值

否(综合所有阈值)

受类别比例影响

反映区分能力

不反映

直接反映

ROC/AUC 不受类别分布影响,
特别适合评估不平衡数据的模型性能。


五、模型比较与实际取舍(Model Comparison & Trade-offs)

1. 用 ROC 曲线比较模型

  • 模型 A 曲线更靠左上角 → 整体性能更优;

  • 模型 B 在部分区域可能略好 → 具体选择取决于业务目标。

没有一个模型在所有阈值都最优,
ROC 提供了**根据实际需求选择工作点(Operating Point)**的依据。


2. 不同类别比例下的表现

课件举了两个场景:

  • 中度不平衡:Accuracy 还能代表整体性能;

  • 高度不平衡:Accuracy 虽高,但 Recall 极低,F1 显著下降。

这说明:

数据越不平衡,越应使用 Precision、Recall、F1 或 AUC 来判断模型优劣。


3. 不同任务下的优先目标

任务类型

优先目标

典型场景

关注 Recall

减少漏检

疾病筛查、风险预警、安全防护

关注 Precision

减少误报

邮件过滤、信贷审批、推荐系统

Recall 与 Precision 是“漏报与误报”的权衡,
不同任务需选择不同阈值点作为决策标准。


六、应对类别不平衡的策略

1. 欠采样(Under-sampling)

随机删除部分多数类样本,使正负样本接近平衡。

  • 优点:计算量小。

  • 缺点:可能丢失信息。

2. 过采样(Over-sampling)

复制或合成少数类样本(如 SMOTE)。

  • 优点:保留信息,提高少数类识别。

  • 缺点:可能导致过拟合。

3. 阈值调整(Threshold Adjustment)

调低阈值 → 提高 Recall;
调高阈值 → 提高 Precision。
适合已训练好模型的后期调优。

4. 代价敏感学习(Cost-sensitive Learning)

在训练中为少数类错误设更高惩罚权重,使模型自动更重视少数类。


七、总结与启示(Summary & Takeaway)

主题

关键观点

Accuracy 的局限

在不平衡数据中可能严重误导

更优指标

Precision、Recall、F1、ROC、AUC

模型比较

ROC/AUC 全局评估,需结合业务阈值选择

应对策略

欠采样、过采样、阈值调整、代价敏感学习

不平衡分类问题不是“Accuracy 的游戏”,
而是 ​Precision、Recall、F1、ROC、AUC 的平衡艺术


一句话总结:

当类别极度不平衡时,
高准确率不代表高质量模型
真正优秀的分类器,应能在低误报下识别出少数类的真实信号。


评论