У меня очень несбалансированный набор данных с экземплярами целевого класса в следующем соотношении (изменить :) 60000: 1000: 1000: 100060000:1000:1000:50
(т. Е. Всего 4 класса). Я хочу использовать randomForest
для создания прогнозов для целевого класса.Как использовать classwt в randomForest of R?
Таким образом, чтобы уменьшить дисбаланс класса, я играл с sampsize
параметра, установив его на (редактировать :)c(5000, 1000, 1000, 1000)
c(5000, 1000, 1000, 50)
и некоторые другие ценности, но не было много пользы от него. Фактически, точность 1-го класса уменьшилась, когда я играл с sampsize
, хотя улучшение прогнозов других классов было очень незначительным.
Хотя копаться в архивах, я наткнулся еще на два особенностей randomForest()
, которые strata
и classwt
, которые используются, чтобы компенсировать проблему дисбаланса класса.
Все документы на classwt
были старые (как правило, принадлежащие к 2007, 2008 годы), все из которых предложил не Применять classwt
особенность randomForest
пакета в R
, поскольку она не полностью реализовать свою полную функциональность, как это делает в fortran
, Итак, первый вопрос:
Действительно ли classwt
полностью реализован сейчас в randomForest
пакете R? Если да, то что передает c(1, 10, 10, 10)
аргументу classwt
? (Предполагая, что приведенный выше случай из 4 классов в целевой переменной)
Еще один аргумент, который, как говорят, касается проблемы дисбаланса класса, - это стратифицированная выборка, которая всегда используется в сочетании с sampsize
. Я понимаю, что sampsize
из документации, но недостаточно документации или примеров, которые дали четкое представление об использовании strata
для преодоления проблемы дисбаланса класса. Итак, второй вопрос:
Какие аргументы должны быть переданы strata
в randomForest
и что он представляет?
Я угадать слово вес, который я не упоминается в этом вопросе должен играть важную роль в ответе.
Я бы запустил лес только на трех меньших классах. Это даст вам представление о том, насколько хорошо rf-модель может отличить эти три класса без доминирующего класса. Если точность все еще довольно низкая, то дисбаланс класса, вероятно, не является вашей реальной проблемой, а эти три класса просто нелегко отличить от особенностей, которые у вас есть. – joran
Спасибо @joran. Извините за небольшую путаницу, вот фактическое отношение экземпляра класса, которое я также изменил в вопросе: 60000: 1000: 1000: 50. Вы думаете, что отказ от первого класса в этом случае поможет? Потому что, когда я запускаю RF со всеми 4 классами, я получаю точность в следующем порядке для каждого класса: c (90%, 70%, 70%, менее 10%). Меня больше беспокоит улучшение точности 4-го класса, который составляет менее 10%. И еще одна вещь: «classwt» правильно реализован в «randomForest» R на данный момент? – StrikeR
Что касается реализации 'classwt' - я полагаю, это не реализовано, потому что http://cran.r-project.org/web/packages/randomForest/NEWS вы можете прочитать, что« * Внедрить новую схему обработки classwt в классификации ". находится в списке желаний. – BartekCh