← ClaudeAtlas

ml-imbalanced-learninglisted

处理类别不平衡(class imbalance)的决策框架。当"少数类召回为0""accuracy虚高但少数类 全判成多数类",或要做重采样/阈值移动/代价敏感选型时调用:先确认度量失守,再按部署约束 在再缩放三路线中选路并审查各自隐藏前提。不适用于:类别比例尚可只是指标选择问题、回归 任务、纯排序场景。trigger: imbalanced, SMOTE, oversampling, 过采样, 欠采样, threshold moving, 阈值移动, minority class。
fieldlu/Machine-learning-skills · ★ 0 · AI & Automation · score 66
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