Add a Screener to a Learner
Value
A modified learner that when called on data and a formula now runs a screening stage before fitting the learner and returning a prediction function.
Examples
if (FALSE) { # \dontrun{
# construct a learner where variables with less than .6 correlation are screened out
lnr_glm_with_cor_60_thresholding <-
add_screener(
learner = lnr_glm,
screener = screener_cor,
screener_extra_args = list(threshold = .6)
)
# train that on the mtcars dataset — also checking that extra arguments are properly passed to glm
lnr_glm_with_cor_60_thresholding(mtcars, formula = mpg ~ ., family = "gaussian")(mtcars)
# if we've screened out variables with low correlation to mpg, one such variable is qsec,
# so changing qsec shouldn't modify the predictions from our learned algorithm
mtcars_but_qsec_is_changed <- mtcars
mtcars_but_qsec_is_changed$qsec <- rnorm(n = nrow(mtcars))
identical(
lnr_glm_with_cor_60_thresholding(mtcars, formula = mpg ~ .)(mtcars),
lnr_glm_with_cor_60_thresholding(mtcars, formula = mpg ~ .)(mtcars_but_qsec_is_changed)
)
# earth version
lnr_earth_with_cor_60_thresholding <-
add_screener(
learner = lnr_earth,
screener = screener_cor,
screener_extra_args = list(threshold = .6)
)
lnr_earth_with_cor_60_thresholding(mtcars, formula = mpg ~ .)(mtcars)
identical(
lnr_earth_with_cor_60_thresholding(mtcars, formula = mpg ~ .)(mtcars),
lnr_earth_with_cor_60_thresholding(mtcars, formula = mpg ~ .)(mtcars)
)
# note that this 'test' does not pass for a learner like randomForest that has
# some randomness in its predictions.
} # }