r - 函数 makeFeatSelControlSequential 中 alpha 和 beta 参数的含义(R 中的 MLR 库)
问题描述
对于确定性前向或后向搜索,我习惯于为与单个特征相关的系数相关的 p 值提供阈值。在 R/MLR https://www.rdocumentation.org/packages/mlr/versions/2.13/topics/FeatSelControl的 makeFeatSelControlSequential 文档中,alpha 和 beta 参数描述如下:
- alpha (numeric(1)):顺序特征选择的参数。前向/添加步骤的改进差异的最小要求值。默认值为 0.01。
- beta (numeric(1)):顺序特征选择的参数。后退/移除步骤所需的最小改进差异值。负值意味着您允许稍微减少删除功能。默认值为 -0.001。
然而,不清楚这里的“改进差异”是什么意思。在下面的示例中,我将 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 中指定的改进。重复此过程,直到出现所有特征(前向搜索)或没有特征(后向搜索),或者如果无法实现参数指定的最小改进。
推荐阅读
- dynamics-crm - licensetype 枚举的定义是什么?
- javascript - 单击按钮后如何获取数据并限制fetch-es的数量
- sql - mssql:为所有行添加具有相同值的列到搜索结果
- c# - 如何将 EPPlus 中创建的图表导出到图像文件
- asp.net-mvc - Using Business Object As Model is not working?
- python - OpenCV 的这个功能哪里去了?
- firebase - JS函数在promise解析之前返回值
- javascript - 在Interval React.js中乘以数字时如何获得索引0
- javascript - 悬停在父元素上但不影响子元素
- angular - 在 Angular 7 中实现 bcrypt