2

如何分析 Weka 中的混淆矩阵以获得准确度?我们知道,由于数据集不平衡,准确性并不准确。混淆矩阵如何“确认”准确性?

示例: a) 准确度 96.1728 %

   a   b   c   d   e   f   g   <-- classified as
 124   0   0   0   1   0   0 |   a = brickface
   0 110   0   0   0   0   0 |   b = sky
   1   0 119   0   2   0   0 |   c = foliage
   1   0   0 107   2   0   0 |   d = cement
   1   0  12   7 105   0   1 |   e = window
   0   0   0   0   0  94   0 |   f = path
   0   0   1   0   0   2 120 |   g = grass

b) 准确度:96.8 %

a   b   c   d   e   f   g   <-- classified as
 202   0   0   0   3   0   0 |   a = brickface
   0 220   0   0   0   0   0 |   b = sky
   0   0 198   0  10   0   0 |   c = foliage
   0   0   1 202  16   1   0 |   d = cement
   2   0  11   2 189   0   0 |   e = window
   0   0   0   2   0 234   0 |   f = path
   0   0   0   0   0   0 207 |   g = grass

ETC...

4

3 回答 3

3

准确率是通过将主对角线中的所有实例相加并除以实例总数(所有混淆矩阵的内容)来计算的。例如,在 a) 中,您得到124 + 110 + ... + 120 = 779,并且实例总数(将所有内容相加)为810,因此准确度为0,9617 => 96,17%

您的数据集相当平衡(所有类的实例数量大致相同)。当一行的总和远大于其他行的总和时,您可以看到数据集是不平衡的,因为行代表实际的类。例如:

a   b  <-- classified as
1000 20 | a = class1
10 10   | b = class2

在这种情况下,class1有 1020 个实例,并且class2只有 20 个,因此问题高度不平衡。这将影响分类器的性能,因为学习算法通常会尝试最大化准确性(或最小化错误),因此像规则这样的普通分类器for any X, set class = class1将具有1020/1040 = 0,9807.

于 2013-11-19T20:02:49.777 回答
2
   a   b   c   d   e   f   g   <-- classified as
 124   0   0   0   1   0   0 |   a = brickface
...

这意味着有 125 个示例a(brickface)。124 个示例被分类为a(正确),1 个示例被分类为e(不正确)。

如果您认为您的数据不平衡,请使用AUC分数。它是不平衡数据集的存根。

于 2013-11-20T02:14:50.997 回答
0

准确率是正确预测总数的比例。它计算为

Accuracy = (124+110+119+107+105+94+120)/(124+0+0+0+1+0+0+0+110+0+0+0+0+0+1+0+119+0+2+0+0+1+0+0+107+2+0+0+1+0+12+7+105+0+1+0+0+0+0+0+94+0+0+0+1+0+0+2+120)
Accuracy = 779/810 = 0.961728

相似地,

Accuracy = (202+220+198+202+189+234+207)/(202+0+0+0+3+0+0+0+220+0+0+0+0+0+0+0+198+0+10+0+0+0+0+1+202+16+1+0+2+0+11+2+189+0+0+0+0+0+2+0+234+0+0+0+0+0+0+0+207)
Accuracy = 1452/1500 = 0.968
于 2018-01-22T06:11:13.063 回答