评估多类分类器性能的好指标是什么?

2024-04-27 00:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在大约1000个对象中运行一个分类器,每个对象有6个浮点变量。我已经使用scikitlearn的交叉验证特性为几个不同的模型生成一个预测值数组。然后我使用sklearn.metrics来计算分类器和混淆表的准确性。大多数分类器的准确率在20-30%左右。下面是SVC分类器的混淆表(准确率为25.4%)。在

enter image description here

因为我是机器学习的新手,我不知道如何解释这个结果,以及是否有其他好的指标来评估这个问题。直观地说,即使有25%的准确率,并且考虑到分类器得到了25%的预测正确,我相信它至少在某种程度上是有效的,对吧?我怎么用统计参数来表达呢?在


Tags: 对象模型机器分类器数组特性sklearn交叉
2条回答

首先,我发现很难查看混淆表。把它画成一幅图像会让你更好地直观地了解发生了什么。在

建议使用单数字指标进行优化,因为这样更容易、更快。当你发现你的系统没有达到你期望的效果时,修改你选择的度量。在

如果每个类中有相同数量的示例,那么准确度通常是一个很好的度量标准。否则(这里似乎就是这样)我建议使用F1 score,它考虑了你的估计器的precision and recall。在

编辑:然而,这是由你来决定是否约25%的准确性,或任何指标是“足够好”。如果你在分类机器人是否应该射杀一个人,你可能应该修改你的算法,但如果你决定这是一个伪随机数据还是随机数据,25%的准确率可能足以证明这一点。在

如果这个表是一个混淆表,我认为你的分类器在大部分时间里预测了E类。我认为你的E类在你的数据集中所占的比例过高,如果你的类的实例数不相同,那么准确度就不是一个好的衡量标准, 例如,如果你有3个类,A,B,C,并且在测试数据集中,类A被过度表示(90%),如果你的分类器预测所有时间的类A,你将有90%的准确率

一个好的度量是使用对数损失,logistic回归是优化该度量的一个很好的算法 见https://stats.stackexchange.com/questions/113301/multi-class-logarithmic-loss-function-per-class

另一个解决方案是对你的小类进行过采样

相关问题 更多 >