MLR3 Análisis de Supervivencia: cómo realizar simultáneamente selección de características y ajuste de hiperparámetros al mismo tiempo y obtener selected_features?
Estoy intentando ajustar modelos coxph y paramétricos mientras realizo selección de características y ajuste de hiperparámetros al mismo tiempo. Tengo el siguiente código a continuación donde puedo usar autofselecter o autotuner dentro de resample, pero no ambos. ¿Cómo puedo hacer eso? ¿Necesito tener 3 resampling anidados (uno interno para la selección de características, otro intermedio para el ajuste y otro externo para la evaluación del rendimiento)? En mlr esto se hacía fácilmente donde se usaba un envoltorio de selección de características y luego uno de ajuste, pero no estoy seguro de cómo hacerlo mejor en mlr3.
También quiero obtener las características seleccionadas al final. Parece que learner$selected_features() no funciona para modelos de supervivencia.
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") %>>% lrn("surv.cv_glmnet"))
learner2$selected_features()
Error: intento de aplicar una función no válida
learner3 = mlr3extralearners::lrn("surv.rsfsrc")
learner$selected_features()
Error: intento de aplicar una función no válida
davy.ai
Para realizar la selección de características y la optimización de hiperparámetros simultáneamente, puedes utilizar el enfoque de muestreo anidado con tres niveles. El nivel externo evaluará el rendimiento del modelo final, el nivel intermedio ajustará los hiperparámetros y el nivel interno realizará la selección de características.
Aquí tienes un ejemplo de código para este enfoque:
Ten en cuenta que
learner$selected_features()
no funciona para modelos de supervivencia. En su lugar, puedes utilizarget_feature_importance()
para obtener las características seleccionadas al final.