函数 makeFeatSelControlSequential 中 alpha 和 beta 参数的含义(R 中的 MLR 库)
Meaning of alpha and beta parameters in function makeFeatSelControlSequential (MLR library in R)
对于确定性的前向或后向搜索,我习惯于为关联到各个特征的系数的 p 值设置阈值。 R/MLRhttps://www.rdocumentation.org/packages/mlr/versions/2.13/topics/FeatSelControl中makeFeatSelControlSequential的文档中alpha和beta参数说明如下:
- 阿尔法
(numeric(1)):顺序特征选择的参数。向前/添加步骤的改进差异所需的最小值。默认值为 0.01。
- 测试版
(numeric(1)):顺序特征选择的参数。向后/删除步骤的改进差异所需的最小值。负值意味着您允许略微减少以移除某个功能。默认为 -0.001。
然而,这里的 "improvement difference" 是什么意思还不清楚。在下面的示例中,我将 0 作为向后选择的阈值(beta 参数)。如果此参数与 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)
这些参数控制可以接受的性能差异(对于您选择的任何性能度量)以继续向前或向后搜索的步骤。 mlr 不计算任何 p 值,并且在此过程中不使用 p 值。
由于参数只控制一步中发生的事情,它们也不直接控制最终结果。幕后发生的事情是,例如对于前向搜索,MLR 计算所有特征集的性能,这些特征集用单个特征扩展当前特征集,并选择最好的一个,只要它至少提供 alpha 或 beta 中指定的改进。重复此过程,直到出现所有特征(前向搜索)或不存在特征(后向搜索),或者如果无法实现参数指定的最小改进。
对于确定性的前向或后向搜索,我习惯于为关联到各个特征的系数的 p 值设置阈值。 R/MLRhttps://www.rdocumentation.org/packages/mlr/versions/2.13/topics/FeatSelControl中makeFeatSelControlSequential的文档中alpha和beta参数说明如下:
- 阿尔法 (numeric(1)):顺序特征选择的参数。向前/添加步骤的改进差异所需的最小值。默认值为 0.01。
- 测试版 (numeric(1)):顺序特征选择的参数。向后/删除步骤的改进差异所需的最小值。负值意味着您允许略微减少以移除某个功能。默认为 -0.001。
然而,这里的 "improvement difference" 是什么意思还不清楚。在下面的示例中,我将 0 作为向后选择的阈值(beta 参数)。如果此参数与 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)
这些参数控制可以接受的性能差异(对于您选择的任何性能度量)以继续向前或向后搜索的步骤。 mlr 不计算任何 p 值,并且在此过程中不使用 p 值。
由于参数只控制一步中发生的事情,它们也不直接控制最终结果。幕后发生的事情是,例如对于前向搜索,MLR 计算所有特征集的性能,这些特征集用单个特征扩展当前特征集,并选择最好的一个,只要它至少提供 alpha 或 beta 中指定的改进。重复此过程,直到出现所有特征(前向搜索)或不存在特征(后向搜索),或者如果无法实现参数指定的最小改进。