【发布时间】:2020-03-19 01:46:36
【问题描述】:
考虑具有以下混淆矩阵的三类分类问题。
cm_matrix =
predict_class1 predict_class2 predict_class3
______________ ______________ ______________
Actual_class1 2000 0 0
Actual_class2 34 1966 0
Actual_class3 0 0 2000
Multi-Class Confusion Matrix Output
TruePositive FalsePositive FalseNegative TrueNegative
____________ _____________ _____________ ____________
Actual_class1 2000 34 0 3966
Actual_class2 1966 0 34 4000
Actual_class3 2000 0 0 4000
我使用的公式是:
Accuracy Of Each class=(TP ./total instances of that class)
(基于此处答案的公式:Individual class accuracy calculation confusion)
Sensitivity=TP./TP+FN ;
它在Matlab中的实现是:
acc_1 = 100*(cm_matrix(1,1))/sum(cm_matrix(1,:)) = 100*(2000)/(2000+0+0) = 100
acc_2 = 100*(cm_matrix(2,2))/sum(cm_matrix(2,:)) = 100*(1966)/(34+1966+0) = 98.3
acc_3 = 100*(cm_matrix(3,3))/sum(cm_matrix(3,:)) = 100*(2000)/(0+0+2000) = 100
sensitivity_1 = 2000/(2000+0)=1 = acc_1
sensitivity_2 = 1966/(1966+34) = 98.3 = acc_2
sensitivity_3 = 2000/2000 = 1 = acc_3
问题 1) 我的每个类别的准确度公式是否正确?为了计算每个单独类的准确性,比如对于正类,我应该在分子中取 TP。同样,对于仅负类的准确度,我应该在准确度公式中考虑分子中的 TN。相同的公式是否适用于二元分类?我的实现是否正确?
问题 2) 我的敏感度公式是否正确?那为什么我得到的答案和个别班级的准确率一样呢?
【问题讨论】:
-
你为什么怀疑这些公式?你做了什么研究?您的研究如何导致您的困惑,或者至少未能减轻它?您对这些公式的应用是否未能提供有意义的结果?你的实际问题是什么,因为我大约 95% 确定你发布的不是它。
-
请参阅我已详细解释的更新问题。问题是在任何地方给出的整体类准确度公式都是 (TP +TN./ TP+FP+FN+TN)。我找不到任何参考来计算多类分类的单个类精度的公式。因此我不得不从 Matlab 链接中借用。在整体准确度公式中,分母有
TN,但对于个别类别的准确度,根据我的理解,不应该有TN。对于多类分类情况,我一定是对单个类的敏感性公式犯了错误。 -
因此我发布了因为我没有任何地方可以找到多类案例的参考。
-
如果您查看其他问题中的维基百科链接,您的准确度公式是错误的。应该是
TP+TN / TP+TN+FP+FN。 -
@beaker:您编写的公式用于计算整个混淆矩阵的准确度:
number of correct prediction / total samples。如果需要计算单个类的准确度,那么也许应该只考虑:number of correct prediction for class1/number of samples in class对于其他类也是如此。我认为这个公式可以扩展到多类案例,因为我终于找到了一个工具箱。但是该工具箱中有两个问题:mathworks.com/matlabcentral/fileexchange/…
标签: classification confusion-matrix multiclass-classification