模型分类准确率有 90%,为什么少数类别仍然可能一条都没分对

2026-10-24

一个分类器准确率达到九成,仍可能完全识别不了少数类别。假设一百条样本里九十条普通、十条紧急,分类器一律预测普通,整体恰好九成正确,但十条紧急全部漏掉。验收不能只看总分,应保留每一类的支持数与混淆关系。

先写出分母从哪里来

本文是单标签、两类别且包含全部类别的合成集合。普通类真正例九十、假正例十、假负例零,因此 precision 为零点九、recall 为一;F1 为十八除以十九,约零点九四七。紧急类真正例零、假负例十,召回为零。该类没有预测为正的样本,precision 的分母为零,本文明确按零计。

零分母政策必须随报告发布。也可以采用其他合理展示方式,但不能把未定义值悄悄忽略,导致综合分数升高。scikit-learn 的分类报告资料说明逐类指标和不同平均方式,附件按同样数学定义纯离线复算,没有安装或调用真实模型。

不同平均方式回答不同问题

macro F1 对两类同权,约零点四七四;weighted F1 按九十比十加权,约零点八五三。整体 accuracy 为零点九。三个值不同,不是谁算错,而是权重不同。单标签且统计全部类别时,micro 指标与 accuracy 的关系也要放在这个限定条件下解释,不能推广到任意多标签任务。

附件交付原始标签、预测标签、每类 TP、FP、FN、支持数和汇总值。检查器从原始列表重算,而不是只读取一份预先填好的分数。故意把紧急召回写成一的反例,会与计数不符,不能通过参考结果核对。

少数类失败要回到任务代价

如果紧急样本需要人工优先处理,零召回可能比普通类多几条误报代价更高。是否接受模型,应依据任务阈值和误判成本,而不是单独追求平均分。本文不指定医疗、金融等高风险业务阈值,也不从一百条合成数据得出统计可靠性结论。

失败反例是把支持数隐藏,只展示 weighted F1。多数类的良好表现可能掩盖少数类的彻底失败。另一种是评测集漏掉某类,却把该类显示为百分之百;没有样本不能证明表现优秀,应明确列为没有覆盖。

真实评测还需检查标签质量、样本来源和训练测试隔离。本例没有调用模型,九成是人工构造的数据比例,不是任何产品性能。报告保留类别明细、零分母政策与样本总数,能让读者独立复算,也能在下一次更换模型时逐样本比较退步。

配套文件与依据

本文的合成输入和参考结果可下载独立样本 a035.json,离线检查器 a035.py与样本放在同一目录后运行。检查器不调用模型接口。 使用 Python 3.12 或兼容版本,将上述文件下载到同一目录,执行 python a035.py。

一手资料1。资料核对日期:2026-10-24。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。

加微信,把这一页存到手机上

扫码加站长企业微信,会自动把这一页的链接发给你,方便在手机上接着看。AI 落地卡住了,也可以直接问。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。