#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. Итак, вы хотите дополнительно настроить параметр метода выбора функций?