我的目标是确定回归任务中的“功能重要性”(即,我想知道哪个功能对目标变量的影响最大)。
假设我使用多元回归。
有多种方法可以确定特征的重要性:模型相关的度量(如(标准化)贝塔系数,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中是否有一种获取此信息的方法(也适用于排列重要性或形状值回归之类的其他度量)?