2013-03-18 4 views
2

Позвольте мне сказать, во-первых, что я новичок WEKA.Weka - двоичная классификация, дающая поляризованные/предвзятые результаты

Я использую WEKA для проблемы с двоичной классификацией, где определенные метрики используются для получения ответа «да/нет» для экземпляров.

В качестве примера проблемы, вот матрица путаницы я получил для набора с 288 экземплярами, с 190 «да» и 98 «нет» значения не используя BayesNet:

a b <-- classified as 
190 0 | a = yes 
98 0 | b = no 

Это абсолютное разделение в случае с некоторые другие классификаторы, но не со всеми из них. Тем не менее, даже если классификаторы не имеют значений, поляризованных до такой степени, они имеют определенную предвзятость для преобладающего класса. Например, вот результат с RandomForest:

a b <-- classified as 
164 34 | a = yes 
62 28 | b = no 

Я вполне уверен, что у меня что-то очень очевидное.

+0

Так в чем ваш вопрос? Преобладающий класс почти в два раза больше, чем другой, поэтому да, все классификаторы будут (и должны) иметь предвзятость для него. –

+0

Является ли результатом, показывающим полное смещение для преобладающего класса нормального, тогда? Например, с BayesNet, я ВСЕГДА получаю этот полностью односторонний результат с статистическим значением Kappa 0. Независимо от того, какой набор данных или показатели я использую. Так ли это должно работать? Результаты с RandomForest приемлемы, я соглашаюсь, но BayesNet пьет меня. –

+0

Трудно сказать, что происходит без полных данных. Эти функции могут не обеспечить хорошее разделение (по крайней мере, до BayesNet).Я предполагаю, что короткий ответ не использует BayesNet для этой конкретной задачи :) –

ответ

1

Первоначально я думал, что проблема с BayesNet. Но теперь я думаю, что это ваши данные.

Как уже указывалось в комментариях, я думал, что проблема связана с неуравновешенными классами. Большинство классификаторов оптимизируют для точности, что в вашем случае составляет (190 + 0)/288 = 0.66 для BayesNet и (164 + 28)/288 = 0.67 для RandomForest.

Как вы можете видеть, разница не такая большая, но решение, найденное RandomForest, немного лучше. Он выглядит «лучше», потому что он не помещает все в один класс, но я действительно сомневаюсь, что он статистически значим.

Как упоминал Ларс Коттофф, это трудно сказать. Я также предполагаю, что функции просто недостаточно хороши для лучшего разделения.

В дополнение к попыткам использования других классификаторов вы должны пересмотреть свой показатель эффективности. Точность хороша только в том случае, если у вас примерно одинаковое количество экземпляров для каждого класса. В других случаях MCC или AUC - хороший выбор (но AUC не будет работать с LibSVM в WEKA из-за несовместимых реализаций).

МСС для примеров будет 0 для BayesNet и

((164*28) - (62*34))/sqrt((164+62)*(34+28)*(164+34)*(62+28)) 
= (4592 - 2108)/sqrt(226 * 62 * 198 * 90) 
= 2484/sqrt(249693840) 
= 0,15719823927071640929 

для RandomForest. Поэтому RandomForest показывает немного лучший результат, но не намного лучше.

Трудно сказать, не видя ваши данные, но они, вероятно, недостаточно хорошо отделяются.

+0

Поле, в котором я работаю, в целом считает точность 70% хорошей. В любом случае, я тоже начинаю думать, что эти меры не так точны, как хотелось бы. Кроме того, я думаю, что знаменатель в вашем расчете MCC должен быть sqrt (249693840), а не 249693840. Если это так, MCC составляет около 0,157. Невероятно, очевидно, но несколько менее обескураживающе, чем 0,00001, я полагаю;) –

+0

@ShredOn Вы правы, конечно, я изменил его. – Sentry

+0

Просто уточнить - если я забуду о точности (или ее отсутствии) в течение минуты, нет глупой ошибки, которую я делаю, что приводит к тому, что классификаторы дают такие результаты, не так ли? Низкая точность - это то, что я могу изучать, но я надеюсь, что я не делаю основную ошибку, вызывающую аномальное поведение классификатора. –

Смежные вопросы