Почему процедура исключения рекурсивных функций не избавляет от бесполезных предикторов? - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь выбрать лучшие предикторы переменной y

x1 и x3 являются предикторами y, x2 соотносится с x1 и x4 является фиктивная переменная.

library(randomForest);library(caret)
set.seed(123)
x1<-rnorm(1000,sd=.3,mean=-2)
x3<-rnorm(1000,sd=1,mean=.3)
x2<-jitter(x1,amount=1)
x4<-rnorm(1000,sd=4,mean=3)

y<-jitter(3*x1+jitter(x3,amount=2),amount=2)
varImpPlot(randomForest(y~x1+x2+x3+x4,importance=T))

enter image description here

ctrl <- rfeControl(functions = rfFuncs,number=3)
x<-data.frame(x1,x2,x3,x4)
rfe(x,y,rfeControl=ctrl,sizes=1:4,method="rf")

#...
#The top 4 variables (out of 4):
#x3, x1, x2, x4

cor(x)
#             x1          x2         x3          x4
# x1  1.00000000  0.45351111 0.08647944 -0.02470308
# x2  0.45351111  1.00000000 0.03927750 -0.08157149
# x3  0.08647944  0.03927750 1.00000000  0.04357772
# x4 -0.02470308 -0.08157149 0.04357772  1.00000000
  • Почему процедура исключения рекурсивных функций говорит мне сохранить все предикторы, даже если при взгляде на значение переменной очень ясно, что x2 и x4 бесполезны?

1 Ответ

0 голосов
/ 05 сентября 2018

Важность, которую вы визуализируете с помощью varImpPlot, в случае использования , а не , имеет отдельный метод удаления не важных переменных.

Прежде всего, непрерывные переменные и категориальные переменные с большим количеством меток будут иметь большее значение. Это может вводить в заблуждение.

Во-вторых, коррелированные предикторы могут иметь низкую переменную важность. Иногда это противоположно тому, что вы хотите.

Также важность не говорит вам, как предикторы вместе связаны с ответом.

Я предлагаю использовать метод перестановки, при котором вы проверяете важность, переоценивая модель после перестановки одной переменной (например: sample (x4)), проверяйте, как изменяется производительность, сравнивая, например, mse (до и после перестановки).

Простая идея заключается в том, что если переменная бесполезна, производительность не сильно изменится.

Наконец, вот некоторые полезные чтения.

Link1

Link2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...