
Feature Selection with Genetic Search
Source:R/FSelectorGeneticSearch.R
mlr_fselectors_genetic_search.Rd
Feature selection using the Genetic Algorithm from the package genalg.
Dictionary
This FSelector can be instantiated with the associated sugar function fs()
:
fs("genetic_search")
Control Parameters
For the meaning of the control parameters, see genalg::rbga.bin()
.
genalg::rbga.bin()
internally terminates after iters
iteration.
We set ìters = 100000
to allow the termination via our terminators.
If more iterations are needed, set ìters
to a higher value in the parameter set.
Super class
mlr3fselect::FSelector
-> FSelectorGeneticSearch
Examples
# Feature Selection
# \donttest{
# retrieve task and load learner
task = tsk("penguins")
learner = lrn("classif.rpart")
# run feature selection on the Palmer Penguins data set
instance = fselect(
fselector = fs("genetic_search"),
task = task,
learner = learner,
resampling = rsmp("holdout"),
measure = msr("classif.ce"),
term_evals = 10
)
# best performing feature set
instance$result
#> bill_depth bill_length body_mass flipper_length island sex year
#> 1: FALSE FALSE FALSE TRUE FALSE FALSE FALSE
#> features classif.ce
#> 1: flipper_length 0.2173913
# all evaluated feature sets
as.data.table(instance$archive)
#> bill_depth bill_length body_mass flipper_length island sex year
#> 1: TRUE FALSE FALSE FALSE FALSE FALSE TRUE
#> 2: FALSE FALSE FALSE TRUE FALSE FALSE FALSE
#> 3: FALSE FALSE FALSE TRUE FALSE FALSE FALSE
#> 4: FALSE FALSE FALSE FALSE TRUE FALSE FALSE
#> 5: FALSE TRUE FALSE FALSE FALSE FALSE FALSE
#> 6: TRUE FALSE TRUE FALSE FALSE FALSE TRUE
#> 7: FALSE FALSE TRUE FALSE FALSE FALSE FALSE
#> 8: TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#> 9: FALSE FALSE FALSE TRUE FALSE FALSE FALSE
#> 10: FALSE FALSE FALSE TRUE FALSE FALSE FALSE
#> classif.ce runtime_learners timestamp batch_nr warnings errors
#> 1: 0.2869565 0.005 2023-11-17 12:02:36 1 0 0
#> 2: 0.2173913 0.005 2023-11-17 12:02:36 2 0 0
#> 3: 0.2173913 0.004 2023-11-17 12:02:36 3 0 0
#> 4: 0.2956522 0.006 2023-11-17 12:02:36 4 0 0
#> 5: 0.2695652 0.005 2023-11-17 12:02:36 5 0 0
#> 6: 0.2608696 0.005 2023-11-17 12:02:36 6 0 0
#> 7: 0.2869565 0.005 2023-11-17 12:02:36 7 0 0
#> 8: 0.2869565 0.004 2023-11-17 12:02:36 8 0 0
#> 9: 0.2173913 0.005 2023-11-17 12:02:36 9 0 0
#> 10: 0.2173913 0.004 2023-11-17 12:02:36 10 0 0
#> features resample_result
#> 1: bill_depth,year <ResampleResult[21]>
#> 2: flipper_length <ResampleResult[21]>
#> 3: flipper_length <ResampleResult[21]>
#> 4: island <ResampleResult[21]>
#> 5: bill_length <ResampleResult[21]>
#> 6: bill_depth,body_mass,year <ResampleResult[21]>
#> 7: body_mass <ResampleResult[21]>
#> 8: bill_depth <ResampleResult[21]>
#> 9: flipper_length <ResampleResult[21]>
#> 10: flipper_length <ResampleResult[21]>
# subset the task and fit the final model
task$select(instance$result_feature_set)
learner$train(task)
# }