2016-04-12 2 views
0

Я использую Random Forest для решения проблемы классификации. Ответ имеет 5 классов. Все классы одинаково распределены в учебном наборе, однако в тестовом наборе данных два определенных класса составляют подавляющее большинство. Что бросает вызов, так это то, что в наборе валидации я вижу, что эти два класса также имеют наихудшие показатели точности. Итак, мой вопрос: существуют ли способы улучшить точность классификации этих двух конкретных классов, чтобы улучшить мое общее предсказание?Machine Learning - как улучшить классификацию определенных классов

Любой вход будет очень благодарен!

ответ

0

Один простой способ - изменить целевую функцию, чтобы получить больше/меньше потерь при неправильной классификации определенных классов. Например, предположит, что предсказания помечены Y и земельные истины с Т (оба вектора), то обычная функция потерь проста:

total_loss(Y,T) == \sum_n loss(y_n, t_n) 

выше, штраф за некорректный является одинаковым для всех классов, которые могут быть изменено до:

total_loss(Y,T) == \sum_n C(t_n) * loss(y_n, t_n) 

Где C (t_n) обозначает вес, присвоенный классу t_n.

Затем вы можете настроить C, чтобы максимизировать производительность в наборе dev, и надеемся увидеть улучшение в тестовом наборе (при условии, что распределение меток набора dev аналогично распределению тестового набора).

Если это походит на правильный путь, вам может потребоваться немного прочитать теорию принятия решений (раздел 1.5 в книге PRML от Bishop) и экономически выгодное обучение (here и here).

+0

Спасибо за ответ! Я думаю, что это имеет смысл, но как я могу достичь этого с помощью пакета randomForest в R? –

+0

Я не эксперт R. но, см. этот вопрос и ответы на SE: ​​http://stats.stackexchange.com/questions/46963/how-to-control-the-cost-of-misclassification-in-random-forests. Лично я бы начал с решения (1) второго ответа - «преднамеренно дисбаланс [набора данных]». –