caret包应用之二:特征选择
在举办数据挖掘时,我们并不需要将所有的自变量用来建模,而是从中选择若干最重要的变量,这称为特征选择(feature selection)。一种算法就是后向选择,即先将所有的变量都包罗在模子中,然后计较其效能(如误差、预测精度)和变量重要排序,然后保存最重要的若干变量,再次计较效能,这样重复迭代,找出符合的自变量数目。这种算法的一个缺点在于大概会存在太过拟合,所以需要在此算法外再套上一个样本分另外轮回。在caret包中的rfe呼吁可以完成这项任务。
首先界说几个整数,措施必需测试这些数目标自变量.
subsets = c(20,30,40,50,60,70,80)然后界说节制参数,functions是确定用什么样的模子举办自变量排序,本例选择的模子是随机丛林即rfFuncs,可以选择的尚有lmFuncs(线性回归),nbFuncs(朴素贝叶斯),treebagFuncs(装袋决定树),caretFuncs(自界说的练习模子)。
method是确定用什么样的抽样要领,本例利用cv即交错检讨, 尚有晋升boot以及留一交错检讨LOOCV
ctrl= rfeControl(functions = rfFuncs, method = “cv”,verbose = FALSE, returnResamp = “final”)最后利用rfe呼吁举办特征选择,计较劲很大,这得花点时间
Profile = rfe(newdata3, mdrrClass, sizes = subsets, rfeControl = ctrl)调查功效选择50个自变量时,其预测精度较高
print(Profile)
Variables Accuracy Kappa AccuracySD KappaSD Selected
用图形也可以调查到同样功效20 0.8200 0.6285 0.04072 0.08550
30 0.8200 0.6294 0.04868 0.10102
40 0.8295 0.6487 0.03608 0.07359
50 0.8313 0.6526 0.04257 0.08744 *
60 0.8277 0.6447 0.03477 0.07199
70 0.8276 0.6449 0.04074 0.08353
80 0.8275 0.6449 0.03991 0.08173
94 0.8313 0.6529 0.03899 0.08006
plot(Profile)
下面的呼吁则可以返回最终保存的自变量
Profile$optVariables