使用插入符号的模型选择和 RFE

机器算法验证 分类 特征选择 模型 降维 插入符号
2022-04-19 07:03:48

我面临着一个高维(样本=148,特征=20000)、有监督的二元分类问题。我想用一组分类器来解决这个问题,它将使用多数票进行分类。为了避免严重的过拟合,我想在插入符号中使用递归特征消除协议(可选:一些单变量选择)。然而,这似乎会导致相对较高的运行时间。我在一个有 16 个内核的节点上运行了以下代码大约 10 天。

trainRows         <- createDataPartition(classes, p=.80, list=FALSE)
trainData         <- X[trainRows, ]
testData          <- X[-trainRows, ]
trainClasses      <- classes[trainRows]
testClasses       <- classes[-trainRows]

ctrl_rfe <- rfeControl(method = "repeatedcv",
                       repeats = 5,
                       verbose = TRUE,
                       functions = caretFuncs,
                       allowParallel = TRUE)
ctrl_train <- trainControl(method = "adaptive_cv",
                           classProbs = TRUE,
                           repeats = 5,
                           summaryFunction = twoClassSummary,
                           adaptive = list(min = 5, alpha = 0.05, 
                                           method = "gls", complete = TRUE),
                           allowParallel = TRUE)

radCostSVM_rfe <- rfe(trainData, trainClasses, 
                      sizes      = seq(1, ncol(trainData), 100), 
                      rfeControl = ctrl_rfe,
                      trControl  = ctrl_train,
                      method     = "svmRadialCost",
                      tuneLength = 10)

为了加快速度,我使用了自适应重采样并在每次 rfe 迭代中选择 100 个特征。除了减少交叉验证中的折叠大小和重复次数之外,有没有办法进一步加快速度?SBF(通过过滤选择)与该方法相比如何?像 PCA 这样的简单降维技术对我来说是没有选择的,因为除了不受监督之外,它还会以线性组合表示我的特征,这会降低我的结果的可解释性。

任何帮助和经验分享将不胜感激。

1个回答

即使使用自适应重采样,您也正在拟合 @#$^ 吨模型。你可以做到,但无论如何调整都需要很多时间。

您可能会更好地拟合具有内置特征选择的模型,而不是使用特征选择包装器。

sbf可以工作,而且可能不难尝试,但仍然有模型调整。