Анализ выживаемости MLR3: как одновременно выполнить выбор функций и настройку гиперпараметров и получить выбранные характеристики?

#survival #mlr3

#Выживание #млр3

Вопрос:

Я пытаюсь соответствовать coxph и параметрическим моделям и одновременно выполнять выбор функций и настройку гиперпараметров. У меня есть следующий код ниже, где я могу использовать либо auto_fselecter, либо auto_tuner внутри повторной выборки, но не оба. Как мне это сделать? Нужно ли мне иметь 3 вложенных повторных выборки (внутреннюю для выбора функций, среднюю для настройки и внешнюю для оценки производительности)? В mlr это было легко сделать, когда мы используем оболочку выбора функций, а затем оболочку настройки, но не уверены, как это лучше всего сделать в mlr3.

Я также хочу получить выбранные функции в конце. Похоже, что функция learner$selected_features() не работает для моделей выживания

 task = tsk("rats") learner = lrn("surv.coxph")  outer_cv = rsmp("cv", folds = 10)$instantiate(task) inner_cv = rsmp("cv", folds = 10)$instantiate(task)   Feat_select= auto_fselecter(method = "random_search",   learner = learner,  resampling = inner_cv,  measure = msr("x"),   term_evals = 200)  model_tune = auto_tuner(method = "irace",   learner = learner,  resampling = inner_cv,  measure = msr("x"),  search_space = ps())  model_res = resample(task, model_tune , outer_cv, store_models = TRUE)   task = tsk("rats")  learner2 = as_learner(po("encode") %gt;gt;% lrn("surv.cv_glmnet")) learner2$selected_features() Error: attempt to apply non-function  learner3 = mlr3extralearners::lrn("surv.rsfsrc") learner$selected_features() Error: attempt to apply non-function  

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

1. может быть, использовать auto_tuner в auto_fselecter auto_fselecter(model = model_tuner...) Я не совсем уверен, работает ли это, не использовал выбор функций оболочки mlr3. Однако мне кажется, что так и должно быть. В этом случае вам потребуется внутренняя передискретизация для настройки модели, средняя передискретизация для выбора функций и внешняя передискретизация для оценки модели. Если мое предложение не сработает, пожалуйста, оставьте комментарий, и я постараюсь найти правильный подход.

Ответ №1:

Вы можете гнездиться AutoTuner и AutoFSelector в mlr3:

 library(mlr3tuning) library(mlr3fselect)  task = tsk("pima")  at = auto_tuner(  method = "random_search",  learner = lrn("classif.rpart", cp = to_tune(0.01, 0.1)),  resampling = rsmp("cv", folds = 3),  measure = msr("classif.ce"),  term_evals = 5 )  afs = auto_fselector(  method = "random_search",  learner = at,  resampling = rsmp("cv", folds = 3),  measure = msr("classif.ce"),  term_evals = 5 )  rr = resample(task, afs, resampling = rsmp("cv", folds = 3), store_models = TRUE)  extract_inner_fselect_results(rr)  

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

1. Я думал об этом и рад видеть, что другие люди думают так же. Я думаю, что порядок имеет значение, и я должен сначала выбрать функцию, а затем настроить. Этот порядок позволит мне настроить количество параметров при выборе функций, если я захочу. Ты согласен?

2. @Ali Alhadab be-марк является одним из разработчиков mlr3. Кроме того, правильный порядок указан в ответе. Для каждого конкретного подмножества функций настройте гиперпараметры обучаемого во внутреннем цикле пересчета и после их настройки оцените их в среднем цикле пересчета, чтобы выбрать оптимальное подмножество функций. Внешний цикл используется для беспристрастной оценки всего процесса.

3. Именно об этом я и думал, настройка гиперпараметров выполняется для каждого конкретного подмножества функций. В MLR оболочка выбора функций всегда используется перед настройщиком, и я думал, что в MLR3 будет такой же порядок. Вот дополнительные вопросы к @be_marc: 1. Как мы добавляем дополнительные аргументы, такие как max_feature, в auto_fselector для настройки в Param_set?

4. 2. У FSelectorSequential есть стратегия SFS или SBS. Как мне выполнить SFS с последующим SBS? Должен ли я использовать вложенные авто_селекторы? Должен ли я вложить auto_fselector с SBS в auto_fselector с SFS? Я предполагаю, что это правильный порядок, учитывая ваш заказ на выбор и настройку функций. Существуют ли аргументы для указания уровня включения и исключения функций, как в MLR (альфа и бета)? Могут ли они быть настроены на дополнительный аргумент? 3. Доступны ли стратегии SFF и SFBS в MLR3, как в MLR?

5. Итак, вы хотите дополнительно настроить параметр метода выбора функций?