Я хочу сделать бенчмарк с различными моделями в мл в 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.