ml-imbalanced-learninglisted
Install: claude install-skill fieldlu/Machine-learning-skills
# 类别不平衡学习 (Imbalanced Learning)
## R — 原文 (Reading)
> "这就是类别不平衡学习的一个基本策略——'再缩放'(rescaling)……再缩放也是代价敏感
> 学习的基础……不能对初始正例进行重复采样,否则会招致严重的过拟合;过采样法的代表性
> 算法 SMOTE 是通过对训练集里的正例进行插值来产生额外的正例。"
>
> — 周志华《机器学习》第3章3.6节
> "有 998 个反例,但正例只有 2 个,那么学习方法只需返回一个永远将新样本预测为反例的
> 学习器,就能达到 99.8% 的精度;然而这样的学习器往往没有价值,因为它不能预测出任何
> 正例。"
>
> — 周志华《机器学习》第3章3.6节(998反例)
---
## I — 方法论骨架 (Interpretation)
类别不平衡的病根不在数据本身,而在"训练集观测几率 = 真实几率"这个隐含假设被打破后的度量失守。处理它的统一策略是**再缩放 (rescaling)**:既然训练时两类样本数不等扭曲了判决天平,就在决策端把它扳回来。具体拆成三条路线:
1. **直接调整训练集分布**(重采样):欠采样砍多数类(省算力但丢信息),过采样补少数类(保信息但可能过拟合)。
2. **不动数据只动判决**(阈值移动):训练照常,推理时按真实几率调整判正阈值——零额外训练成本。
3. **把不平衡翻译成代价**(代价敏感):将样本数比 m-/m+ 换成代价比 cost+/cost-,让损失函数自己学会偏心。
三条路线源于同一个判断:无偏采样假设是否成立、以及你愿意在哪一端付代价。选择依据不是技巧流行度,而是部署约束(延迟、算力、能否重训)与信息保全需求。
---
## A1 — 书中的应用 (Past Application)
### 案例 1: 998 反例思想实验 (c20)
- **问题**: 训练集中有 998 个反例、2 个正例,一个永远输出"反例"的学习器精度高达 99.8%。
- **方法论的��用**: 作者用这个极端数字暴露 accuracy 在不平衡下的失效机制——当"永远猜多数类"就能拿到可接受精度时,该度量已无法区分有用模型与无用模型。
- **结论**: 必须换用查准/查全/代价敏感度量重新评估,并从观测几率推出再缩放策略。
- **结果**: 该思想实验成为整节展开欠采样/过采样/阈值移动三路线及其各自坑位(EasyEnsemble 保信息、SMOTE 插值防复制)的论证入口。
---
## A2 — 触发场景 (Future Trigger) ★
### 用户会在什么情境下需要这个 skill?
1. 风控/欺诈/疾病筛查模型 accuracy 很高但混淆矩阵里少数类召回≈0,不知道下一步动数据还是动阈值。
2. 正例占比万分之一量级,纠结 SMOTE、随机复制、EasyEnsemble、class_weight、阈值移动哪个适合线上延迟敏感的服务。
3. 对少数类做了复制式过采样后验证指标暴涨,怀疑出了问题又说不清原因。
4. 用"已报警案件"等选择性上报数据训练检测模型,发现阈值怎么调都不对。
### 语言信号 (用户的话里出现这些就应激活)
- "accuracy 99.9% 但 fraud recall 是 0 / 欺诈全放行"
- "该用过采样还是欠采样?SMOTE 有没有坑?" / "oversampling vs undersampling"
- "class_w