Причудливое поведение пакета randomForest при отбрасывании одного класса прогноза - PullRequest
0 голосов
/ 28 августа 2018

Я использую модель случайного леса, которая дает результаты, которые для меня абсолютно бессмысленны с точки зрения статистики, и, таким образом, я убежден, что что-то должно идти не так в коде с пакетом randomForest .

Прогнозируемая / левая переменная - это, по крайней мере, на этой итерации модели, идентификатор партии с 3 возможными исходами: демократ, независимый, республиканец. Я запускаю модель, получаю результаты, хорошо. На данный момент меня интересуют не супер результаты как таковые, а то, что происходит, когда я делаю небольшую модификацию.

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

«Хорошо, хорошо, информация, содержащаяся в независимых наблюдениях, была важна для прогноза». Это была моя первая мысль, хотя я не мог понять, почему это так, поскольку модель очень плохо выявляет независимых.

Странно, простой тест этой гипотезы доказал, что это не верно. Если я отбрасываю все наблюдения, кроме одного, с идентификатором партии Независимых (размер выборки составляет чуть более 4000 наблюдений, поэтому 1 наблюдение является ошибкой округления), модель работает нормально. Таким образом, даже когда для всех намерений и целей абсолютно ничего не изучается из «независимой» категории результатов, модель работает так, как ожидалось. Только после того, как независимая категория будет фактически удалена, все пойдет не так.

Кроме того, просто чтобы избежать потенциального предложения: оно, похоже, не является результатом создания новой переменной LHS. Если я вместо этого просто удаляю уровень party_id_3_cat после удаления независимых элементов и использую ту же самую переменную LHS, это приводит к тем же результатам.

Результаты версии "no независимых" (называемой "two_cat" ниже) и "только одной независимой" версии ("left_one" ниже) должны, насколько я могу представить, быть почти идентичными, поскольку они имеют почти идентичные данные , И все же фактические результаты, полученные этими двумя моделями, резко отличаются. Я ломал голову и не представляю, почему это так. Кто-нибудь знает что-нибудь о пакете randomForest (или о моделях случайных лесов в целом, хотя это кажется менее вероятным), которое могло бы объяснить такое поведение? Если это важно, переменные LHS и RHS являются факторными переменными.

Заранее спасибо!

Код:

load("three_cat.Rda")
two_cat<-subset(three_cat,party_id_3_cat!="2. Independents")
leave_one_in<-subset(three_cat,party_id_3_cat!="2.     Independents"|case_id=="30")
two_cat$party_id_2_cat<-as.factor(ifelse(two_cat$party_id_3_cat=="1. Democrats (including leaners)","Dem","Rep"))

rf_three_cat  <-        randomForest(party_id_3_cat~[RHS VARS},
                        data=three_cat,
                        ntree=200,mtry=4,
                        type="classification",
                        importance=TRUE,confusion=TRUE)
rf_leave_one  <-randomForest(party_id_3_cat~[RHS VARS],
                         data=leave_one_in,
                         ntree=200,mtry=4,
                         type="classification",
                         importance=TRUE,confusion=TRUE)
rf_two_cat    <-randomForest(party_id_2_cat~[RHS VARS],
                         data=two_cat,
                         ntree=200,mtry=4,
                         type="classification",
                         importance=TRUE,confusion=TRUE)

rf_three_cat$confusion
rf_leave_one$confusion
rf_two_cat$confusion

Результаты:

> rf_three_cat$confusion
                                   1. Democrats (including leaners) 2. Independents 3. Republicans (including leaners) class.error
1. Democrats (including leaners)                               1150               3                                668   0.3684789
2. Independents                                                 296               4                                231   0.9924670
3. Republicans (including leaners)                              600               9                               1055   0.3773234

> rf_leave_one$confusion
                                   1. Democrats (including leaners) 2. Independents 3. Republicans (including leaners) class.error
1. Democrats (including leaners)                               1080               0                                741   0.4069193
2. Independents                                                   0               0                                  1   1.0000000
3. Republicans (including leaners)                              517               0                               1097   0.3203222

> rf_two_cat$confusion
     Dem Rep class.error
Dem 1776  45   0.0247117
Rep 1581  33   0.9795539
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...