Почему tuneRF не дает хорошего результата для ctree в R

Я пытался использовать tuneRF для выбора минимального OOB значение для лучшего mtry значение в ctree модель. Однако, если я использую правильное значение, я получаю худшие результаты, чем просто увеличение mtry значение. Вот мой код:

library(party)
dat1 <- fread('https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data',stringsAsFactors=T)

## split data to train and test
set.seed(123)
dat1 <- subset(dat1, !is.na(V1))
smp_size<-100
train_ind <- sample(seq_len(nrow(dat1)), size = smp_size)
train <- dat1[train_ind, ]
test <- dat1[-train_ind, ]

ct <- ctree(V1 ~ ., data = train)

test$CTVAL<- predict(ct, test[,V2:V9])
> mean (test$V1==test$CTVAL)
0.5020849

Теперь я бегу tuneRF:

> bestmtry <- tuneRF(train[, V2:V9], train$V1, stepFactor = 1.5, improve = 1e-5, ntree = 500)
mtry = 2  OOB error = 47% 
Searching left ...
Searching right ...
mtry = 3    OOB error = 52% 
-0.106383 1e-05

Рекомендует mtry =2, Запуск той же модели с mtry = 2 (заменить строку ct<-...):

ct <- ctree(V1 ~ ., data = train,controls = ctree_control(mtry = 2 ))


 > mean (test$V1==test$CTVAL)
0.4841795

И используя ту же модель с mtry = 10:

 ct <- ctree(V1 ~ ., data = train,controls = ctree_control(mtry = 10 ))


     > mean (test$V1==test$CTVAL)
0.5109149

0 ответов

Другие вопросы по тегам