准确率陷阱 机器学习

本文结合豆包AI生成。

想起一个段子,训练一个AI模型让他判断一个学生有没有数学天赋,AI模型全部回答“没有”就能获得超高正确率,这是因为有数学天赋的人极其的稀少。

但是这样显然不是我们需要的AI模型。怎么办呢?怎么解决?

模型躺平的根源在于用 整体准确率(Accuracy) 作为唯一评价指标。当模型全部预测负类时,准确率可以无限接近100%,但对核心目标(识别有天赋的人)的性能为0——它的召回率(Recall,真正有天赋的人被正确识别的比例)为0,完全失去了任务本身的价值。


结合任务目标(核心是不遗漏有数学天赋的人,漏检代价远高于误报),核心评价指标优先级如下:

指标 定义(结合本任务) 核心价值
召回率(Recall/TPR) 真正有天赋的人中,被模型正确识别的比例 淘汰躺平模型(全猜负类的召回率=0)
精确率 被模型识别有数学天赋的人里,真的有天赋的比例 别乱抓普通人
F1-Score 精确率和召回率的调和平均,平衡「找对天赋者」和「不误判普通人」 避免模型为了召回率无脑全猜正类,兼顾分类有效性
PR-AUC 精确率-召回率曲线下的面积 极端不平衡场景下更敏感,精准衡量模型对少数类的识别能力
代价敏感指标 给「漏检天赋者(FN)」设置极高的错判代价(比如漏检1个=误报10000个) 让模型不敢为了整体指标牺牲核心目标

同时,从数据层来看,模型躺平的核心诱因是正负样本分布失衡,数据层的优化就是让模型「不得不学习正类的特征」。

重采样技术

过采样(针对少数类):对「有数学天赋」的正样本进行增强,经典方法包括SMOTE/ADASYN,通过特征空间插值合成高质量的正样本,而非简单复制,避免过拟合;也可以结合领域知识做数据增强,比如对天赋者的特征(逻辑测试成绩、解题行为数据等)做合理扰动,扩充正样本规模,将正负样本比例从1:10000平衡到1:10甚至1:1。

欠采样(针对多数类):对「无天赋」的负样本进行筛选,而非随机丢弃,用NearMiss等算法保留与正样本最具区分度的负样本,避免信息丢失;也可以用EasyEnsemble等集成式欠采样,多次拆分负样本子集分别训练,最大化保留信息。

混合采样:SMOTE+Tomek Links,同时合成正样本、去除噪声边界样本,兼顾平衡度和样本质量。

主动学习与定向数据采集

最有效的治本方案:定向采集更多正样本,比如联合数学竞赛机构,从根源上降低样本不平衡程度。


就算样本分布依然不平衡,我们也可以通过修改损失函数,让模型「不敢漏检正类」,彻底杜绝躺平。

加权交叉熵损失(Weighted Cross Entropy)

给少数类(正样本)设置与样本占比成反比的权重。比如正负样本比例为1:10000,就给正样本的损失设置10000倍的权重,负样本权重为1。

此时模型全猜负类的话,1个正样本的漏检损失=10000个负样本的正确分类收益,躺平不再是最优解,模型必须学习正样本的特征来降低整体损失。

Focal Loss

极端不平衡场景的经典损失,在加权的基础上,进一步降低「易分类样本」(绝大多数无天赋的普通人)的损失权重,让模型把全部注意力聚焦在「难分类样本」(有天赋的少数人、边界样本)上,避免模型被海量的简单负样本带偏,完全放弃对正类的学习。


也可以修改模型架构与训练策略,适配极端不平衡场景

放弃传统二分类,改用异常检测/单分类模型

当正样本极度稀少(万分之一甚至更低)时,传统二分类已经不适用,最优方案是把任务转为异常检测任务

用海量的「无数学天赋」的正常样本,训练单分类模型(One-Class SVM、孤立森林、自编码器、Diffusion模型等),学习「无天赋人群」的特征分布。

推理时,把偏离这个正常分布的样本,判定为「有数学天赋」的异常值。

这个方案完全不依赖稀少的正样本,从根本上规避了类别不平衡问题。

两阶段级联分类

第一阶段(粗筛):用轻量模型快速筛掉99%的、明显无天赋的普通人,大幅压缩样本空间。

第二阶段(精筛):对剩下1%的疑似样本,用复杂模型做精细分类,此时样本中正类的占比从万分之一提升到百分之一,不平衡程度大幅降低,模型可以有效学习区分性特征,不会躺平。

不平衡专属集成模型

用Balanced Random Forest、BalanceCascade等专门为不平衡数据设计的集成算法,基模型训练时自动平衡正负样本比例,最终集成结果规避了单一模型的躺平倾向;XGBoost、LightGBM等主流树模型也内置了scale_pos_weight参数,一键设置正负样本权重,适配不平衡场景。

posted @ 2026-04-16 17:33  wljss  阅读(32)  评论(0)    收藏  举报