gpt4 book ai didi

classification - 计算多类分类的准确度

转载 作者:行者123 更新时间:2023-12-02 02:57:53 26 4
gpt4 key购买 nike

考虑具有以下混淆矩阵的三类分类问题。

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) 我的灵敏度公式是否正确?那我怎么会得到与个别类(class)准确度相同的答案?

最佳答案

Question1) Is my formula for Accuracy of each class correct?

不,您使用的公式是针对灵敏度(召回率)的。见下文。

For calculating accuracy of each individual class, say for positive class I should take the TP in the numerator. Similarly, for accuracy of only the negative class, I should consider TN in the numerator in the formula for accuracy. Is the same formula applicable to binary classification? Is my implementation of it correct?

准确率是正确分类的实例数与实例总数的比率。 TN,或者被正确识别为在一个类中的实例数,也是正确分类的实例。你不能简单地将它们排除在外。

准确性通常也仅用于评估所有类的整个分类器,而不是单个类。但是,您可以将精度公式概括为处理单个类,如所做的那样here用于计算多类分类器的平均分类精度。 (另请参阅 referenced article。)

他们为每个类(class)使用的公式是:

enter image description here

如您所见,它与通常的准确性公式相同,但我们只考虑了个别类(class)的 TP 和 TN 分数(分母仍然是观察总数)。将其应用于您的数据集,我们得到:

acc_1 = (2000+3966)/(2000+34+0+3966) = 0.99433
acc_2 = (1966+4000)/(1966+0+34+4000) = 0.99433
acc_3 = (2000+4000)/(2000+0+0+4000) = 1.00000

这至少更直观,因为前两个类有错误分类的实例,而第三个没有。这些措施是否有用是另一个问题。


Question2) Is my formula for sensitivity correct?

是的,灵敏度给出如下:

TP / TP+FN

这是正确识别属于此类的实例与该类实例总数的比率。在二元分类器中,您默认计算正类的敏感度。负类的敏感性是错误率(在维基百科文章中也称为未命中率或假阴性率)并且简单地说:

FN / TP+FN === 1 - Sensitivity

FN无非就是负类的TP! (TP 的含义同样是相反的。)因此很自然地像您所做的那样将其扩展到所有类。

Then how come I am getting same answer as individual class accuracies?

因为您对两者使用相同的公式。

看看你的混淆矩阵:

cm_matrix = 
predict_class1 predict_class2 predict_class3
______________ ______________ ______________

Actual_class1 2000 0 0
Actual_class2 34 1966 0
Actual_class3 0 0 2000

1级的TP显然是2000

cm_matrix(1,1)

FN 是该行中其他两列的总和。所以TP+FN是第1行的和

sum(cm_matrix(1,:) 

这正是您用于计算准确性的公式。

acc_1  = 100*(cm_matrix(1,1))/sum(cm_matrix(1,:)) = 100*(2000)/(2000+0+0) = 100

关于classification - 计算多类分类的准确度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60725812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com