【发布时间】:2019-01-01 22:38:14
【问题描述】:
假设标记数据的数量为 0 = 1400,标记为 1 = 100。标记为 0 的数据表示正常运行条件,标记为1 的数据表示异常。只有异常事件才会触发警报。
假设二分类得到如下混淆矩阵
cmMatrix =
predicted 0 predicted 1
truth 0 1100 (TN) 300 (FP)
truth 1 30 (FN) 70 (TP)
cmMatrix = [1100,300;30,70];
acc_0 = 100*(cmMatrix(1,1))/sum(cmMatrix(1,:));
acc_1 = 100*(cmMatrix(2,2))/sum(cmMatrix(2,:));
会给acc_0 = 78.5714和acc_1 = 70
从 1400 个正常事件中读取混淆矩阵,其中 1100 个被正确识别为正常,300 个被错误识别为异常。 然后,在 100 个异常事件中,70 个被正确检测为异常,而 30 个被错误检测为异常。 我想计算第 1 类的敏感性和特异性,因为这是异常事件检测的主要关注点。我就是这样做的
Sensitivity = TP/(TP+FN) = 70/(70+30 ) = 0.70
Specificity = TN/(TN+FP) = 1100/(1100+300) = 0.78
灵敏度是指测试正确检测异常事件的能力。为什么灵敏度如此之低且与准确度
acc_1如此之高(70%)不同。这个计算是否正确?各个类别的准确度和灵敏度有什么区别?
我是不是计算有误?
【问题讨论】:
-
不客气。
-
@beaker:我的混淆矩阵是错误的,因此回答的人无法在我的计算中发现错误。这就是我一直在cmets下询问的原因。答案可能已过时且不适用。有没有办法得到修改后的答案?
标签: matlab machine-learning classification