MLR: Как извлечь выбор функций из бенчмарка

#r #machine-learning #cross-validation #mlr

#r #машинное обучение #перекрестная проверка #mlr

Вопрос:

Я хочу провести бенчмарк с разными моделями в mlr с помощью 3-кратной перекрестной проверки. В каждом сгибе я хочу снова выполнить 3-кратную перекрестную проверку выбора функций для каждой модели и передать лучший набор функций для внешней перекрестной проверки. Я заметил, что результат бенчмарка в MLR всегда использует все включенные функции.

Как я могу извлечь из бенчмарка функции, используемые в каждом сгибе и каждой модели, и как мне убедиться, что они действительно используются для внешнего сгиба перекрестной проверки?

Вот пример кода:

 task_cv <- makeClassifTask(
  id = 'predict future outages',
  data = data, 
  target = 'targetVariable', 
  positive=1
)

vali_strat <- makeResampleDesc(method="CV",iters = 3)

featSelControl<- makeFeatSelControlSequential(same.resampling.instance = T,
                                                        method = "sbs",
                                                        tune.threshold = T,
                                                        alpha = 4,
                                                        beta = 4)

learner_nv <- makeLearner(
  id = 'Naive Bayes',
  cl = 'classif.naiveBayes'
)

learner_knn <- makeLearner(
  id = 'KNN',
  cl = 'classif.kknn'
)

featSel_nv <- makeFeatSelWrapper(learner = learner_nv,
                                          resampling = vali_strat,
                                          control = featSelControl,
                                          measures = acc

featSel_knn <- makeFeatSelWrapper(learner = learner_knn,
                                           resampling = vali_strat,
                                           control = featSelControl,
                                           measures = acc


learners <- list(featSel_nv,
                featSel_knn ) 

benchmark = benchmark(
  learners = learners,
  tasks = task_cv,
  resamplings = validation_strategy,
  measures = acc
)

benchmark$results$`predict future outages`$KNN.featsel$models[[1]]$features

  

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

Комментарии:

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

2. ваш параметр бета-версии слишком велик, чтобы можно было удалить какую-либо функцию. установите бета-версию на 0 и проверьте еще раз.