Почему 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