The FSelector implements the optimization algorithm.
Details
FSelector is a abstract base class that implements the base functionality each fselector must provide. A subclass is implemented in the following way:
Inherit from FSelector.
Specify the private abstract method
$.optimize()
and use it to call into your optimizer.You need to call
instance$eval_batch()
to evaluate design points.The batch evaluation is requested at the FSelectInstanceSingleCrit/FSelectInstanceMultiCrit object
instance
, so each batch is possibly executed in parallel viamlr3::benchmark()
, and all evaluations are stored inside ofinstance$archive
.Before the batch evaluation, the bbotk::Terminator is checked, and if it is positive, an exception of class
"terminated_error"
is generated. In the later case the current batch of evaluations is still stored ininstance
, but the numeric scores are not sent back to the handling optimizer as it has lost execution control.After such an exception was caught we select the best set from
instance$archive
and return it.Note that therefore more points than specified by the bbotk::Terminator may be evaluated, as the Terminator is only checked before a batch evaluation, and not in-between evaluation in a batch. How many more depends on the setting of the batch size.
Overwrite the private super-method
.assign_result()
if you want to decide yourself how to estimate the final set in the instance and its estimated performance. The default behavior is: We pick the best resample-experiment, regarding the given measure, then assign its set and aggregated performance to the instance.
Private Methods
.optimize(instance)
->NULL
Abstract base method. Implement to specify feature selection of your subclass. See technical details sections..assign_result(instance)
->NULL
Abstract base method. Implement to specify how the final feature subset is selected. See technical details sections.
Resources
book section on feature selection algorithms.
Active bindings
param_set
paradox::ParamSet
Set of control parameters.properties
(
character()
)
Set of properties of the fselector. Must be a subset ofmlr_reflections$fselect_properties
.packages
(
character()
)
Set of required packages. Note that these packages will be loaded viarequireNamespace()
, and are not attached.label
(
character(1)
)
Label for this object. Can be used in tables, plot and text output instead of the ID.man
(
character(1)
)
String in the format[pkg]::[topic]
pointing to a manual page for this object. The referenced help package can be opened via method$help()
.
Methods
Method new()
Creates a new instance of this R6 class.
Arguments
id
(
character(1)
)
Identifier for the new instance.param_set
paradox::ParamSet
Set of control parameters.properties
(
character()
)
Set of properties of the fselector. Must be a subset ofmlr_reflections$fselect_properties
.packages
(
character()
)
Set of required packages. Note that these packages will be loaded viarequireNamespace()
, and are not attached.label
(
character(1)
)
Label for this object. Can be used in tables, plot and text output instead of the ID.man
(
character(1)
)
String in the format[pkg]::[topic]
pointing to a manual page for this object. The referenced help package can be opened via method$help()
.
Method optimize()
Performs the feature selection on a FSelectInstanceSingleCrit or FSelectInstanceMultiCrit until termination. The single evaluations will be written into the ArchiveFSelect that resides in the FSelectInstanceSingleCrit / FSelectInstanceMultiCrit. The result will be written into the instance object.