From f2817efb5d033adf2d090cd435852c974f1722d1 Mon Sep 17 00:00:00 2001
From: Jakob Richter
Date: Mon, 12 Nov 2018 12:22:08 +0000
Subject: [PATCH] Deploy from Travis build 13087 [ci skip]
Build URL: https://travis-ci.org/mlr-org/mlr/builds/453897041
Commit: 07a100eb9963feb8affda9e2c54c8287f5b94f41
---
.../tutorial/cost_sensitive_classif.html | 4 +-
docs/articles/tutorial/create_filter.html | 50 ++++--
docs/articles/tutorial/feature_selection.html | 69 +++++----
.../figure-html/unnamed-chunk-4-1.png | Bin 25348 -> 25717 bytes
docs/articles/tutorial/filter_methods.html | 146 +++++++++++-------
.../figure-html/LearningCurveTPFP-1.png | Bin 109659 -> 115849 bytes
docs/articles/tutorial/nested_resampling.html | 18 +--
docs/news/index.html | 50 +++++-
8 files changed, 219 insertions(+), 118 deletions(-)
diff --git a/docs/articles/tutorial/cost_sensitive_classif.html b/docs/articles/tutorial/cost_sensitive_classif.html
index e58a04febb..ef7df3b71e 100644
--- a/docs/articles/tutorial/cost_sensitive_classif.html
+++ b/docs/articles/tutorial/cost_sensitive_classif.html
@@ -391,7 +391,7 @@
## Prediction: 1000 observations
## predict.type: prob
## threshold: Bad=0.50,Good=0.50
-## time: 0.01
+## time: 0.02
## id truth prob.Bad prob.Good response
## 1 1 Good 0.03525092 0.9647491 Good
## 2 2 Bad 0.63222363 0.3677764 Bad
@@ -418,7 +418,7 @@
## Prediction: 1000 observations
## predict.type: prob
## threshold: Bad=0.17,Good=0.83
-## time: 0.01
+## time: 0.02
## id truth prob.Bad prob.Good response
## 1 1 Good 0.03525092 0.9647491 Good
## 2 2 Bad 0.63222363 0.3677764 Bad
diff --git a/docs/articles/tutorial/create_filter.html b/docs/articles/tutorial/create_filter.html
index afb8dd7d92..101614c0d4 100644
--- a/docs/articles/tutorial/create_filter.html
+++ b/docs/articles/tutorial/create_filter.html
@@ -357,22 +357,40 @@
## Supported features: numerics,factors,ordered
The nonsense.filter
is now registered in mlr
and shown by listFilterMethods()
.
listFilterMethods()$id
-## [1] anova.test auc
-## [3] carscore cforest.importance
-## [5] chi.squared FSelectorRcpp.gainratio
-## [7] FSelectorRcpp.infogain FSelectorRcpp.symuncert
-## [9] kruskal.test linear.correlation
-## [11] mrmr nonsense.filter
-## [13] oneR permutation.importance
-## [15] praznik.CMIM praznik.DISR
-## [17] praznik.JMI praznik.JMIM
-## [19] praznik.MIM praznik.MRMR
-## [21] praznik.NJMIM randomForest.importance
-## [23] randomForestSRC.rfsrc randomForestSRC.var.select
-## [25] ranger.impurity ranger.permutation
-## [27] rank.correlation relief
-## [29] univariate.model.score variance
-## 33 Levels: anova.test auc carscore cforest.importance ... variance
You can use it like any other filter method already integrated in mlr
(i.e., via the method
argument of generateFilterValuesData()
or the fw.method
argument of makeFilterWrapper()
; see also the page on feature selection.
d = generateFilterValuesData(iris.task, method = c("nonsense.filter", "anova.test"))
d
diff --git a/docs/articles/tutorial/feature_selection.html b/docs/articles/tutorial/feature_selection.html
index 00c5bd5d94..311773cd53 100644
--- a/docs/articles/tutorial/feature_selection.html
+++ b/docs/articles/tutorial/feature_selection.html
@@ -316,24 +316,30 @@
Calculating the feature importance
Different methods for calculating the feature importance are built into mlr
’s function generateFilterValuesData()
. Currently, classification, regression and survival analysis tasks are supported. A table showing all available methods can be found in article filter methods.
The most basic approach is to use generateFilterValuesData()
directly on a Task()
with a character string specifying the filter method.
-fv = generateFilterValuesData(iris.task, method = "FSelectorRcpp.infogain")
+fv = generateFilterValuesData(iris.task, method = "FSelectorRcpp_information.gain")
## Loading required namespace: FSelectorRcpp
fv
## FilterValues:
## Task: iris-example
-## name type FSelectorRcpp.infogain
-## 1 Sepal.Length numeric 0.4521286
-## 2 Sepal.Width numeric 0.2672750
-## 3 Petal.Length numeric 0.9402853
-## 4 Petal.Width numeric 0.9554360
+## name type FSelectorRcpp_information.gain
+## 1 Sepal.Length numeric 0.4521286
+## 2 Sepal.Width numeric 0.2672750
+## 3 Petal.Length numeric 0.9402853
+## 4 Petal.Width numeric 0.9554360
fv
is a FilterValues()
object and fv$data
contains a data.frame
that gives the importance values for all features. Optionally, a vector of filter methods can be passed.
-fv2 = generateFilterValuesData(iris.task, method = c("FSelectorRcpp.infogain", "chi.squared"))
-fv2$data
-## name type FSelectorRcpp.infogain chi.squared
-## 1 Sepal.Length numeric 0.4521286 0.6288067
-## 2 Sepal.Width numeric 0.2672750 0.4922162
-## 3 Petal.Length numeric 0.9402853 0.9346311
-## 4 Petal.Width numeric 0.9554360 0.9432359
+fv2 = generateFilterValuesData(iris.task,
+ method = c("FSelectorRcpp_information.gain", "FSelector_chi.squared"))
+fv2$data
+## name type FSelectorRcpp_information.gain
+## 1 Sepal.Length numeric 0.4521286
+## 2 Sepal.Width numeric 0.2672750
+## 3 Petal.Length numeric 0.9402853
+## 4 Petal.Width numeric 0.9554360
+## FSelector_chi.squared
+## 1 0.6288067
+## 2 0.4922162
+## 3 0.9346311
+## 4 0.9432359
A bar plot of importance values for the individual features can be obtained using function plotFilterValues()
.
@@ -352,7 +358,7 @@
Function filterFeatures()
supports these three methods as shown in the following example. Moreover, you can either specify the method
for calculating the feature importance or you can use previously computed importance values via argument fval
.
# Keep the 2 most important features
-filtered.task = filterFeatures(iris.task, method = "FSelectorRcpp.infogain", abs = 2)
+filtered.task = filterFeatures(iris.task, method = "FSelectorRcpp_information.gain", abs = 2)
# Keep the 25% most important features
filtered.task = filterFeatures(iris.task, fval = fv, perc = 0.25)
@@ -384,12 +390,13 @@
Using fixed parameters
In the following example we calculate the 10-fold cross-validated error rate mmce of the k-nearest neighbor classifier (FNN::fnn()
) with preceding feature selection on the iris
(datasets::iris()
) data set. We use information.gain
as importance measure with the aim to subset the dataset to the two features with the highest importance. In each resampling iteration feature selection is carried out on the corresponding training data set before fitting the learner.
-lrn = makeFilterWrapper(learner = "classif.fnn", fw.method = "FSelectorRcpp.infogain", fw.abs = 2)
-rdesc = makeResampleDesc("CV", iters = 10)
-r = resample(learner = lrn, task = iris.task, resampling = rdesc, show.info = FALSE, models = TRUE)
-r$aggr
-## mmce.test.mean
-## 0.04
+lrn = makeFilterWrapper(learner = "classif.fnn",
+ fw.method = "FSelectorRcpp_information.gain", fw.abs = 2)
+rdesc = makeResampleDesc("CV", iters = 10)
+r = resample(learner = lrn, task = iris.task, resampling = rdesc, show.info = FALSE, models = TRUE)
+r$aggr
+## mmce.test.mean
+## 0.04
You may want to know which features have been used. Luckily, we have called resample()
with the argument models = TRUE
, which means that r$models
contains a list
of models (makeWrappedModel()
) fitted in the individual resampling iterations. In order to access the selected feature subsets we can call getFilteredFeatures()
on each model.
sfeats = sapply(r$models, getFilteredFeatures)
table(sfeats)
@@ -408,7 +415,7 @@
The threshold of the filter method (fw.threshold
)
In the following regression example we consider the BostonHousing
(mlbench::BostonHousing()
) data set. We use a Support Vector Machine and determine the optimal percentage value for feature selection such that the 3-fold cross-validated mean squared error (mse()
) of the learner is minimal. Additionally, we tune the hyperparameters of the algorithm at the same time. As search strategy for tuning a random search with five iterations is used.
-lrn = makeFilterWrapper(learner = "regr.ksvm", fw.method = "chi.squared")
+lrn = makeFilterWrapper(learner = "regr.ksvm", fw.method = "FSelector_chi.squared")
ps = makeParamSet(makeNumericParam("fw.perc", lower = 0, upper = 1),
makeNumericParam("C", lower = -10, upper = 10,
trafo = function(x) 2^x),
@@ -463,13 +470,13 @@
## mse.test.mean
## 21.38273
After tuning we can generate a new wrapped learner with the optimal percentage value for further use (e.g. to predict to new data).
-lrn = makeFilterWrapper(learner = "regr.lm", fw.method = "chi.squared",
+lrn = makeFilterWrapper(learner = "regr.lm", fw.method = "FSelector_chi.squared",
fw.perc = res$x$fw.perc, C = res$x$C, sigma = res$x$sigma)
mod = train(lrn, bh.task)
mod
## Model for learner.id=regr.lm.filtered; learner.class=FilterWrapper
## Trained on: task.id = BostonHousing-example; obs = 506; features = 13
-## Hyperparameters: fw.method=chi.squared,fw.perc=0.338
+## Hyperparameters: fw.method=FSelector_ch...,fw.perc=0.338
getFilteredFeatures(mod)
## [1] "crim" "dis" "rad" "lstat"
@@ -517,7 +524,7 @@
control = ctrl, show.info = FALSE)
sfeats
## FeatSel result:
-## Features (15): mean_perimeter, mean_smoothness, mean_compactness, mean_concavepoints, SE_radius, SE_area, SE_compactness, SE_concavepoints, SE_symmetry, SE_fractaldim, worst_texture, worst_smoothness, worst_compactness, worst_concavepoints, tsize
+## Features (15): mean_perimeter, mean_smoothness, mean_compactne...
## cindex.test.mean=0.7014085
sfeats
is a FeatSelResult
(selectFeatures()
) object. The selected features and the corresponding performance can be accessed as follows:
sfeats$x
@@ -539,7 +546,7 @@
show.info = FALSE)
sfeats
## FeatSel result:
-## Features (11): crim, zn, chas, nox, rm, dis, rad, tax, ptratio, b, lstat
+## Features (11): crim, zn, chas, nox, rm, dis, rad, tax, ptratio...
## mse.test.mean=23.5662834
Further information about the sequential feature selection process can be obtained by function analyzeFeatSelResult()
.
analyzeFeatSelResult(sfeats)
@@ -579,7 +586,7 @@
sfeats = getFeatSelResult(mod)
sfeats
## FeatSel result:
-## Features (17): mean_radius, mean_texture, mean_smoothness, mean_compactness, mean_concavepoints, mean_symmetry, SE_perimeter, SE_area, SE_compactness, SE_concavity, SE_concavepoints, SE_symmetry, worst_texture, worst_smoothness, worst_compactness, worst_concavity, pnodes
+## Features (17): mean_radius, mean_texture, mean_smoothness, mea...
## cindex.test.mean=0.6796954
The selected features are:
sfeats$x
@@ -601,27 +608,27 @@
lapply(r$models, getFeatSelResult)
## [[1]]
## FeatSel result:
-## Features (18): mean_radius, mean_perimeter, mean_compactness, mean_concavity, mean_concavepoints, SE_texture, SE_perimeter, SE_compactness, SE_concavepoints, SE_symmetry, SE_fractaldim, worst_perimeter, worst_area, worst_smoothness, worst_compactness, worst_concavity, worst_symmetry, pnodes
+## Features (18): mean_radius, mean_perimeter, mean_compactness, ...
## cindex.test.mean=0.5382065
##
## [[2]]
## FeatSel result:
-## Features (18): mean_radius, mean_perimeter, mean_area, mean_smoothness, mean_concavity, mean_symmetry, mean_fractaldim, SE_texture, SE_area, SE_compactness, SE_concavepoints, worst_radius, worst_texture, worst_area, worst_compactness, worst_concavepoints, tsize, pnodes
+## Features (18): mean_radius, mean_perimeter, mean_area, mean_sm...
## cindex.test.mean=0.6349051
##
## [[3]]
## FeatSel result:
-## Features (20): mean_texture, mean_smoothness, mean_concavity, mean_concavepoints, mean_symmetry, mean_fractaldim, SE_texture, SE_perimeter, SE_compactness, SE_concavepoints, SE_symmetry, SE_fractaldim, worst_texture, worst_area, worst_smoothness, worst_compactness, worst_concavity, worst_concavepoints, worst_symmetry, pnodes
+## Features (20): mean_texture, mean_smoothness, mean_concavity, ...
## cindex.test.mean=0.6812985
##
## [[4]]
## FeatSel result:
-## Features (11): mean_perimeter, mean_concavity, mean_concavepoints, mean_symmetry, SE_perimeter, SE_symmetry, worst_smoothness, worst_compactness, worst_concavity, worst_symmetry, tsize
+## Features (11): mean_perimeter, mean_concavity, mean_concavepoi...
## cindex.test.mean=0.6924829
##
## [[5]]
## FeatSel result:
-## Features (14): mean_area, mean_smoothness, mean_fractaldim, SE_texture, SE_area, SE_compactness, SE_concavity, SE_concavepoints, SE_symmetry, SE_fractaldim, worst_area, worst_compactness, tsize, pnodes
+## Features (14): mean_area, mean_smoothness, mean_fractaldim, SE...
## cindex.test.mean=0.6701811
diff --git a/docs/articles/tutorial/feature_selection_files/figure-html/unnamed-chunk-4-1.png b/docs/articles/tutorial/feature_selection_files/figure-html/unnamed-chunk-4-1.png
index 24e3aa36d22cb7cca06341f74de0cb6bbf14cdd1..65e69f8e53186d5f36b26403f376faad119840d1 100644
GIT binary patch
literal 25717
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
literal 25348
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
sbfoS^9Z2AW0EqesHHd
Current methods
-
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
Method
@@ -377,7 +377,7 @@
X
-chi.squared
+FSelector_chi.squared
FSelector
Chi-squared statistic of independence between feature and target
X
@@ -391,21 +391,77 @@
-FSelectorRcpp.gainratio
-FSelectorRcpp
-Entropy-based Filters: Algorithms that find ranks of importance of discrete attributes, basing on their entropy with a continous class attribute
+FSelector_gain.ratio
+FSelector
+Entropy-based gain ratio between feature and target
X
X
+
+X
+
+
X
+
+
+
+FSelector_information.gain
+FSelector
+Entropy-based information gain between feature and target
X
X
+
+
X
+
+
+X
+
+
+
+FSelector_oneR
+FSelector
+oneR association rule
+X
+X
+
+
+X
+
+
X
-FSelectorRcpp.infogain
+FSelector_relief
+FSelector
+RELIEF algorithm
+X
+X
+
+
+X
+
+
+X
+
+
+
+FSelector_symmetrical.uncertainty
+FSelector
+Entropy-based symmetrical uncertainty between feature and target
+X
+X
+
+
+X
+
+
+X
+
+
+
+FSelectorRcpp_gain.ratio
FSelectorRcpp
Entropy-based Filters: Algorithms that find ranks of importance of discrete attributes, basing on their entropy with a continous class attribute
X
@@ -419,7 +475,7 @@
-FSelectorRcpp.symuncert
+FSelectorRcpp_information.gain
FSelectorRcpp
Entropy-based Filters: Algorithms that find ranks of importance of discrete attributes, basing on their entropy with a continous class attribute
X
@@ -433,6 +489,20 @@
+FSelectorRcpp_symmetrical.uncertainty
+FSelectorRcpp
+Entropy-based Filters: Algorithms that find ranks of importance of discrete attributes, basing on their entropy with a continous class attribute
+X
+X
+
+X
+X
+X
+X
+X
+
+
+
kruskal.test
Kruskal Test for binary and multiclass classification tasks
@@ -446,7 +516,7 @@
X
-
+
linear.correlation
Pearson correlation between feature and target
@@ -460,7 +530,7 @@
X
-
+
mrmr
mRMRe
Minimum redundancy, maximum relevance filter
@@ -474,20 +544,6 @@
X
X
-
-oneR
-FSelector
-oneR association rule
-X
-X
-
-
-X
-
-
-X
-
-
permutation.importance
@@ -503,7 +559,7 @@
X
-praznik.CMIM
+praznik_CMIM
praznik
Minimal conditional mutual information maximisation filter
X
@@ -517,7 +573,7 @@
-praznik.DISR
+praznik_DISR
praznik
Double input symmetrical relevance filter
X
@@ -531,7 +587,7 @@
-praznik.JMI
+praznik_JMI
praznik
Joint mutual information filter
X
@@ -545,7 +601,7 @@
-praznik.JMIM
+praznik_JMIM
praznik
Minimal joint mutual information maximisation filter
X
@@ -559,7 +615,7 @@
-praznik.MIM
+praznik_MIM
praznik
conditional mutual information based feature selection filters
X
@@ -573,7 +629,7 @@
-praznik.MRMR
+praznik_MRMR
praznik
Minimum redundancy maximal relevancy filter
X
@@ -587,7 +643,7 @@
-praznik.NJMIM
+praznik_NJMIM
praznik
Minimal normalised joint mutual information maximisation filter
X
@@ -685,20 +741,6 @@
-relief
-FSelector
-RELIEF algorithm
-X
-X
-
-
-X
-
-
-X
-
-
-
univariate.model.score
Resamples an mlr learner for each input feature individually. The resampling performance is used as filter score, with rpart as default learner.
@@ -712,7 +754,7 @@
X
X
-
+
variance
A simple variance filter
diff --git a/docs/articles/tutorial/learning_curve_files/figure-html/LearningCurveTPFP-1.png b/docs/articles/tutorial/learning_curve_files/figure-html/LearningCurveTPFP-1.png
index d2a6e48ea3b5084a3c40a8453c2a19da8e680b1d..53aa3e4b61015cad13375cb68aa70cc98d853e99 100644
GIT binary patch
literal 115849
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