The permutation filter randomly permutes the values of a single feature in a
mlr3::Task to break the association with the response. The permuted
feature, together with the unmodified features, is used to perform a
mlr3::resample(). The permutation filter score is the difference between
the aggregated performance of the mlr3::Measure and the performance
estimated on the unmodified mlr3::Task.
Parameters
standardizelogical(1)
Standardize feature importance by maximum score.nmcinteger(1)
Number of Monte-Carlo iterations to use in computing the feature importance.
See also
PipeOpFilter for filter-based feature selection.
Other Filter:
Filter,
mlr_filters,
mlr_filters_anova,
mlr_filters_auc,
mlr_filters_boruta,
mlr_filters_carscore,
mlr_filters_carsurvscore,
mlr_filters_cmim,
mlr_filters_correlation,
mlr_filters_disr,
mlr_filters_find_correlation,
mlr_filters_importance,
mlr_filters_information_gain,
mlr_filters_jmi,
mlr_filters_jmim,
mlr_filters_kruskal_test,
mlr_filters_mim,
mlr_filters_mrmr,
mlr_filters_njmim,
mlr_filters_performance,
mlr_filters_relief,
mlr_filters_selected_features,
mlr_filters_univariate_cox,
mlr_filters_variance
Super classes
mlr3filters::Filter -> mlr3filters::FilterLearner -> FilterPermutation
Active bindings
hash(
character(1))
Hash (unique identifier) for this object.phash(
character(1))
Hash (unique identifier) for this partial object, excluding some components which are varied systematically during tuning (parameter values) or feature selection (feature names).
Methods
Method new()
Create a FilterPermutation object.
Usage
FilterPermutation$new(
learner = mlr3::lrn("classif.featureless"),
resampling = mlr3::rsmp("holdout"),
measure = NULL
)Arguments
learner(mlr3::Learner)
mlr3::Learner to use for model fitting.resampling(mlr3::Resampling)
mlr3::Resampling to be used within resampling.measure(mlr3::Measure)
mlr3::Measure to be used for evaluating the performance.
Examples
if (requireNamespace("rpart")) {
learner = mlr3::lrn("classif.rpart")
resampling = mlr3::rsmp("holdout")
measure = mlr3::msr("classif.acc")
filter = flt("permutation", learner = learner, measure = measure, resampling = resampling,
nmc = 2)
task = mlr3::tsk("iris")
filter$calculate(task)
as.data.table(filter)
}
#> feature score
#> <char> <num>
#> 1: Sepal.Length 0.04
#> 2: Petal.Width 0.04
#> 3: Sepal.Width 0.02
#> 4: Petal.Length -0.01
if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) {
library("mlr3pipelines")
task = mlr3::tsk("iris")
# Note: `filter.frac` is selected randomly and should be tuned.
graph = po("filter", filter = flt("permutation", nmc = 2), filter.frac = 0.5) %>>%
po("learner", mlr3::lrn("classif.rpart"))
graph$train(task)
}
#> $classif.rpart.output
#> NULL
#>
