gpt4 book ai didi

r - 使用 caret rfe 进行特征选择并使用另一种方法进行训练

转载 作者:行者123 更新时间:2023-12-04 13:21:32 31 4
gpt4 key购买 nike

现在,我正在尝试使用 Caret rfe 函数来执行特征选择,因为我处于 p>>n 的情况下,并且大多数不涉及某种正则化的回归技术都不能很好地使用。我已经使用了一些正则化技术(套索),但我现在想尝试的是减少我的特征数量,以便我能够在其上运行,至少是体面的,任何类型的回归算法。

control <- rfeControl(functions=rfFuncs, method="cv", number=5)
model <- rfe(trainX, trainY, rfeControl=control)
predict(model, testX)

现在,如果我这样做,将运行使用随机森林的特征选择算法,然后根据 5 折交叉验证,具有最佳特征集的模型将用于预测,对吧?

我对这里的两件事很好奇:
1)是否有一种简单的方法来获取一组特征,并在其上训练另一个用于特征选择的函数?例如,将似乎更重要的特征数量从 500 减少到 20 左右,然后应用 k 最近邻域。

我正在想象一种简单的方法来做到这一点,看起来像这样:
control <- rfeControl(functions=rfFuncs, method="cv", number=5)
model <- rfe(trainX, trainY, method = "knn", rfeControl=control)
predict(model, testX)

2)有没有办法调整特征选择算法的参数?我想对 mtry 的值进行一些控制。与使用 Caret 中的 train 函数时传递值网格的方式相同。有没有办法用rfe做这样的事情?

最佳答案

这是一个关于如何使用内置模型执行 rfe 的简短示例:

library(caret)
library(mlbench) #for the data
data(Sonar)

rctrl1 <- rfeControl(method = "cv",
number = 3,
returnResamp = "all",
functions = caretFuncs,
saveDetails = TRUE)

model <- rfe(Class ~ ., data = Sonar,
sizes = c(1, 5, 10, 15),
method = "knn",
trControl = trainControl(method = "cv",
classProbs = TRUE),
tuneGrid = data.frame(k = 1:10),
rfeControl = rctrl1)

model
#output
Recursive feature selection

Outer resampling method: Cross-Validated (3 fold)

Resampling performance over subset size:

Variables Accuracy Kappa AccuracySD KappaSD Selected
1 0.6006 0.1984 0.06783 0.14047
5 0.7113 0.4160 0.04034 0.08261
10 0.7357 0.4638 0.01989 0.03967
15 0.7741 0.5417 0.05981 0.12001 *
60 0.7696 0.5318 0.06405 0.13031

The top 5 variables (out of 15):
V11, V12, V10, V49, V9

model$fit$results
#output
k Accuracy Kappa AccuracySD KappaSD
1 1 0.8082684 0.6121666 0.07402575 0.1483508
2 2 0.8089610 0.6141450 0.10222599 0.2051025
3 3 0.8173377 0.6315411 0.07004865 0.1401424
4 4 0.7842208 0.5651094 0.08956707 0.1761045
5 5 0.7941775 0.5845479 0.07367886 0.1482536
6 6 0.7841775 0.5640338 0.06729946 0.1361090
7 7 0.7932468 0.5821317 0.07545889 0.1536220
8 8 0.7687229 0.5333385 0.05164023 0.1051902
9 9 0.7982468 0.5918922 0.07461116 0.1526814
10 10 0.8030087 0.6024680 0.06117471 0.1229467

更多定制请参见:

https://topepo.github.io/caret/recursive-feature-elimination.html

关于r - 使用 caret rfe 进行特征选择并使用另一种方法进行训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51933704/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com