Для детерминированного прямого или обратного поиска я использую пороговые значения для значений p, связанных с коэффициентами, связанными с отдельными функциями. В документации makeFeatSelControlSequential в R / MLR https://www.rdocumentation.org/packages/mlr/versions/2.13/topics/FeatSelControl, альфа и бета параметры описаны следующим образом:
- альфа
(числовой (1)): параметр выбора последовательного объекта. Минимальное требуемое значение разницы улучшения для шага вперед / добавления. По умолчанию 0,01.
- бета
(числовой (1)): параметр выбора последовательного объекта. Минимальное требуемое значение разницы улучшения для шага назад / удаления. Отрицательные значения означают, что вы допускаете небольшое уменьшение для удаления объекта. По умолчанию -0,001.
Однако не ясно, что здесь означает «разница в улучшении». В приведенном ниже примере я дал 0 в качестве порога для обратного выбора (бета-параметр). Если этот параметр относится к пороговому значению p-значения, я ожидаю получить модель без функции, но это не так, поскольку я получаю AUC 0,9886302 вместо 0,5.
# 1. Find a synthetic dataset for supervised learning (two classes)
###################################################################
library(mlbench)
data(BreastCancer)
# generate 1000 rows, 21 quantitative candidate predictors and 1 target variable
p<-mlbench.waveform(1000)
# convert list into dataframe
dataset<-as.data.frame(p)
# drop thrid class to get 2 classes
dataset2 = subset(dataset, classes != 3)
dataset2 <- droplevels(dataset2 )
# 2. Perform cross validation with embedded feature selection using logistic regression
##########################################################################################
library(BBmisc)
library(mlr)
set.seed(123, "L'Ecuyer")
set.seed(21)
# Choice of data
mCT <- makeClassifTask(data =dataset2, target = "classes")
# Choice of algorithm
mL <- makeLearner("classif.logreg", predict.type = "prob")
# Choice of cross-validations for folds
outer = makeResampleDesc("CV", iters = 10,stratify = TRUE)
# Choice of feature selection method
ctrl = makeFeatSelControlSequential(method = "sbs", maxit = NA,beta = 0)
# Choice of sampling between training and test within the fold
inner = makeResampleDesc("Holdout",stratify = TRUE)
lrn = makeFeatSelWrapper(mL, resampling = inner, control = ctrl)
r = resample(lrn, mCT, outer, extract = getFeatSelResult,measures = list(mlr::auc,mlr::acc,mlr::brier),models=TRUE)