分类结果评估指标选择与PyCM参数推荐系统技术问询
最近我们团队开发了一款叫PyCM的Python库,专门用来分析多类别混淆矩阵。在1.9版本里,我们新增了参数推荐系统——它能根据输入数据集的特征和分类问题类型,给你推荐最相关的评估参数。不过做这个新功能的时候踩了不少坑,遇到了很多问题。下面先跟大家讲讲这个模块的假设和工作机制,再针对推荐系统的性能评估聊聊几个技术问题:
一、参数推荐依据的特征
参数推荐主要参考两个核心特征:
- 分类问题类型:二分类 / 多分类
- 数据集类型:均衡 / 不均衡
注意:如果是不均衡数据集上的二分类或多分类问题,参数推荐只会考虑「数据集不均衡」这一特征。所以我们需要考察的场景一共三类:
- 均衡数据集——二分类
- 均衡数据集——多分类
- 不均衡数据集
二、数据集不均衡的定义
区分二分类和多分类很简单,但数据集均衡与否的界限一直没有统一标准。在PyCM里我们制定了一个判断规则:如果样本量最大的类别和最小类别的比例大于3,就认为这个数据集是不均衡的。
三、各场景的推荐参数
推荐列表是我们整理了各参数对应的文献,以及它们宣称的性能后确定的,细节可以查看PyCM的官方文档或项目相关资料:
- 均衡二分类推荐参数:
ACC、TPR、PPV、AUC、AUCI、TNR、F1 - 均衡多分类推荐参数:
ERR、TPR Micro、TPR Macro、PPV Micro、PPV Macro、ACC、Overall ACC、MCC、Overall MCC、BCD、Hamming Loss、Zero-one Loss - 不均衡数据集推荐参数:
Kappa、SOA1(Landis & Koch)、SOA2(Fleiss)、SOA3(Altman)、SOA4(Cicchetti)、CEN、MCEN、MCC、J、Overall J、Overall MCC、Overall CEN、Overall MCEN、AUC、AUCI、G、DP、DPI、GI
四、技术问询与探讨
针对这个参数推荐系统,我们还有几个疑问想和大家探讨:
- 我们提出的「样本量最大/最小类别比例>3」这个不均衡定义够准确吗?有没有更全面、更被广泛认可的定义方式?
- 针对不均衡数据集上的二分类和多分类问题,我们目前推荐了完全相同的评估参数,这么做合理吗?会不会忽略了两类问题的差异?
- 现在的推荐参数列表是不是准确且完整?还有没有其他适合不同场景的评估参数值得加入?
- 除了「二分类/多分类」「均衡/不均衡」这两个特征,还有没有其他因素(比如样本量大小、分类任务的业务目标等)会影响分类结果的评估?
内容的提问来源于stack exchange,提问作者Alireza Zolanvari
相关产品推荐
相关产品推荐

