R 在 RFE(递归特征消除)中使用我自己的模型来选择重要特征

Posted

技术标签:

【中文标题】R 在 RFE(递归特征消除)中使用我自己的模型来选择重要特征【英文标题】:R using my own model in RFE(recursive feature elimination) to pick important feature 【发布时间】:2018-11-14 10:28:48 【问题描述】:

使用RFE,你可以得到特征的重要性等级,但现在我只能使用包内的模型和参数,如:lmFuncs(linear model),rfFuncs(random forest) 看来

caretFuncs

可以为自己的模型和参数做一些自定义设置,但我不知道细节,正式文件没有给出细节,我想将svm和gbm应用到这个RFE过程中,因为这是当前的我以前训练的模型,有人知道吗?

【问题讨论】:

【参考方案1】:

我尝试根据文档重新创建工作示例。您正确识别了caretFuncs 的使用,然后您可以在rfe 调用中设置模型参数(您也可以定义trainControl 对象等)。

# load caret
library(caret)

# load data, get target and feature column labels
data(iris)
col_names = names(iris);target = "Species"
feature_names = col_names[col_names!=target]

# construct rfeControl object
rfe_control = rfeControl(functions = caretFuncs, #caretFuncs here
                     method="cv",
                     number=5)

# construct trainControl object for your train method 
fit_control = trainControl(classProbs=T,
                        search="random")

# get results
rfe_fit = rfe(iris[,feature_names], iris[,target],
             sizes = 1:4,
             rfeControl = rfe_control,
             method="svmLinear",
             # additional arguments to train method here
             trControl=fit_control)

如果您想深入了解该问题,您可能需要访问以下链接。

rfe 带有基本代码 sn-ps 的文档:https://www.rdocumentation.org/packages/caret/versions/6.0-80/topics/rfe

caretrfe 上的文档:https://topepo.github.io/caret/recursive-feature-elimination.html

希望这会有所帮助!

【讨论】:

非常感谢,我等了3个月的答复,让我再看看这个,这周给你一些反馈 如何使用该方法为模型设置参数?例如我需要 C 和 lambda 用于 SVM 来协调模型,我在哪里可以设置它 在这方面,只需像使用caret::train 一样使用caret::rfe

以上是关于R 在 RFE(递归特征消除)中使用我自己的模型来选择重要特征的主要内容,如果未能解决你的问题,请参考以下文章

递归特征消除(RFE)+ 交叉验证

机器学习第21篇 - 特征递归消除RFE算法 理论

R语言基于递归特征消除RFE(Recursive Feature Elimination)进行特征筛选(feature selection)

RFE递归式特征消除

GPU 上的 SKLearn RFE(递归特征消除)

用于分类和回归的递归特征消除的模型