可视化资源

混淆矩阵与多类指标

一个“准确率 89%”的模型,听上去挺靠谱。可如果其中有个稀有类别几乎全被认错,这个总分照样很高——因为它被海量的多数类“稀释”掉了。要看穿这种假象,得把每个类别拆开算精确率和召回率,再用宏平均(每类一票)和微平均(每个样本一票)两种方式汇总。类别不平衡时,这两个平均会明显分叉。点下面三个预设,盯着右边那几个数字怎么变。

这是一个三分类的混淆矩阵:行是真实类别、列是预测类别,格子里的数是样本个数。对角线(绿框)= 预测对了,对角线外都是认错的。换个预设,看准确率和宏/微平均怎么分家。

混淆矩阵 C[真实][预测](格子越深,样本越多)

各类精确率 / 召回率 / F1

准确率
宏平均 F1
微平均 F1
精确率k=C[k][k]/列和 · 召回率k=C[k][k]/行和 · 微平均 F1=准确率
准确率会骗人

它只数对角线占总数的比例。多数类一大、稀有类一小,稀有类全错也拉不动这个总分。

宏平均:每类一票

先各类单独算 F1 再取平均。稀有类和多数类同等权重,所以稀有类拉胯会立刻把它拖下来。

微平均:每样本一票

把所有类的 TP/FP/FN 汇总再算。单标签下它恰好等于准确率,天然偏向样本多的类。