确定特征重要性对回归的有效性

时间:2019-08-05 10:00:58

标签: r regression cross-validation r-caret

我的目标是确定回归任务中的“功能重要性”(即,我想知道哪个功能对目标变量的影响最大)。

假设我使用多元回归。

有多种方法可以确定特征的重要性:模型相关的度量(如(标准化)贝塔系数,Shapley值回归)和模型独立的度量(如置换重要性)。

所有方法都是针对特定情况而制定的(即,对于预测变量高度相关,排列重要性考虑了交互作用的情况,进行了有形价值回归)。但是,这些假设是理论考虑和模拟数据集的结果,这意味着有效性(实际数据上“真实”值和测量值之间的差异)取决于实际数据集的结构。

R中是否有一种方法可以确定特征重要性的实测值与“真”值之间的实测差?

我可以使用交叉验证来度量预测值和实际值之间的差异。作为示例,我使用Hitters数据集。

library(ISLR)
library(caret)


fit = train(Salary~., data = Hitters, method = "lm", trControl = trainControl(method = "repeatedcv", repeats = 3), na.action = na.omit)

我可以看一下调整结果以及真实值和预测值之间的差异。在这里,我的RMSE为334。

fit$results

  intercept     RMSE Rsquared      MAE   RMSESD RsquaredSD    MAESD
1      TRUE 333.9667 0.468769 239.7604 75.13388  0.1987425 40.58342

但是贝塔系数呢?我可以看一下它们,但无法弄清楚它们与测试集上的实际Beta有何不同。

coef(fit$finalModel)
 (Intercept)        AtBat         Hits        HmRun         Runs          RBI        Walks        Years       CAtBat        CHits       CHmRun 
 163.1035878   -1.9798729    7.5007675    4.3308829   -2.3762100   -1.0449620    6.2312863   -3.4890543   -0.1713405    0.1339910   -0.1728611 
       CRuns         CRBI       CWalks      LeagueN    DivisionW      PutOuts      Assists       Errors   NewLeagueN 
   1.4543049    0.8077088   -0.8115709   62.5994230 -116.8492456    0.2818925    0.3710692   -3.3607605  -24.7623251

R中是否有一种获取此信息的方法(也适用于排列重要性或形状值回归之类的其他度量)?

0 个答案:

没有答案