2013-11-19 2 views
1

Как анализировать матрицу путаницы в Weka относительно полученной точности? Мы знаем, что точность неточна из-за несбалансированных наборов данных. Как матрица путаницы «подтверждает» точность?weka матрица смешения и анализ точности

Примеры: а) точность 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 

б) Точность: 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 

и т.д. ...

+0

На самом деле эти данные выглядит * * сбалансирован мне ... –

ответ

2

Точность вычисляется путем суммирования всех экземпляров в основная диагональ и деление на общее количество экземпляров (содержимое всей матрицы путаницы). Например, в 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.

2
a b c d e f g <-- classified as 
124 0 0 0 1 0 0 | a = brickface 
... 

Это означает, что есть 125 примеры а (brickface). и 124 примера классифицируются как a (правильно) и 1 пример классифицирован как e (неверно).

Если Вы считаете, что данные не сбалансированы, используйте оценку AUC. Это заглушка для несбалансированного набора данных.

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