通过平均所有 n 个混淆矩阵的准确度来获得 n 个不同混淆矩阵的整体准确度

Posted

技术标签:

【中文标题】通过平均所有 n 个混淆矩阵的准确度来获得 n 个不同混淆矩阵的整体准确度【英文标题】:Getting overall accuracy of n different confusion matrices by averaging accuracy of all n confusion matrices 【发布时间】:2020-02-25 00:14:58 【问题描述】:

我想测试一个 cforest 分类模型的准确性。我运行了 50 次,每次运行我得到不同的分类。我也有基本事实,即要测试的真实分类。

对于每个分类,我计算了一个混淆矩阵(总共 50 个混淆矩阵)。我现在可以计算从各个混淆矩阵中获得的所有 50 个准确度值的平均值,以获得模型的整体准确度吗?这会是测试模型(平均)准确性的准确方法吗?

【问题讨论】:

【参考方案1】:

正如您所说,您在同一数据集上运行模型(森林分类模型)50 次,每次都得到不同的结果,这是可能的,因为模型每次运行时使用不同的 hyperparameter 值,顾名思义,它是一个树模型,所以树的切割会有所不同。

有两种解决方案:

第一种方法,正如你建议的取平均值,更具体地说,因为这是一个分类模型,你可以取 majority voteconfusion matrix,然后最终确定你的结果。这将为您提供相当准确的结果。

第二种更合乎逻辑的方法是将模型中的 nfold cross validation 参数设置为 50 或类似的参数,使用 50 个不同的数据切割自动重新训练模型 50 次,然后这将为您提供一个模型和比 50 平均模型更好的性能。

【讨论】:

感谢您的回答!至于第一个解决方案,我对这个话题还很陌生,所以对我来说,我并不完全清楚我如何计算所有 50 个混淆矩阵的多数票(或者这到底是什么)?您能否详细说明一下?我理解的第二种方法。 - 明确一点,您认为简单地平均所有 50 个准确度值以对我的分类模型的平均性能做出假设不是一个好主意?

以上是关于通过平均所有 n 个混淆矩阵的准确度来获得 n 个不同混淆矩阵的整体准确度的主要内容,如果未能解决你的问题,请参考以下文章

交叉验证中的准确性和混淆矩阵

我如何以向量化方式对矩阵中的每个第n个元素求平均?

F1值,准确率,召回率

sklearn.metrics.confusion_matrix—计算混淆矩阵来评估分类的准确性

29、评估多分类问题--混淆矩阵和F分数

Python 深度学习目标检测评价指标