gpt4 book ai didi

r - 为什么递归特征消除程序没有消除无用的预测变量?

转载 作者:行者123 更新时间:2023-12-05 05:14:53 25 4
gpt4 key购买 nike

我正在尝试选择变量 y 的最佳预测变量

x1x3 是 y 的预测因子,x2x1x4 是一个虚拟变量。

library(randomForest);library(caret)
set.seed(123)
x1<-rnorm(1000,sd=.3,mean=-2)
x3<-rnorm(1000,sd=1,mean=.3)
x2<-jitter(x1,amount=1)
x4<-rnorm(1000,sd=4,mean=3)

y<-jitter(3*x1+jitter(x3,amount=2),amount=2)
varImpPlot(randomForest(y~x1+x2+x3+x4,importance=T))

enter image description here

ctrl <- rfeControl(functions = rfFuncs,number=3)
x<-data.frame(x1,x2,x3,x4)
rfe(x,y,rfeControl=ctrl,sizes=1:4,method="rf")

#...
#The top 4 variables (out of 4):
#x3, x1, x2, x4

cor(x)
# x1 x2 x3 x4
# x1 1.00000000 0.45351111 0.08647944 -0.02470308
# x2 0.45351111 1.00000000 0.03927750 -0.08157149
# x3 0.08647944 0.03927750 1.00000000 0.04357772
# x4 -0.02470308 -0.08157149 0.04357772 1.00000000
  • 为什么递归特征消除过程告诉我保留所有预测变量,即使在查看变量重要性时非常清楚 x2x4 是无用的?

最佳答案

您使用 varImpPlot 可视化的重要性,应该使用有一个独立的方法来删除不重要的变量。

首先,具有更多标签的连续变量和分类变量将具有更高的重要性。这可能会产生误导。

其次,相关 预测变量可能具有 可变重要性。有时,这与您想要的相反。

此外,重要性并没有告诉您预测变量一起如何与响应相关。

我建议使用排列法,在排列一个变量后通过重新估计模型来检查重要性(例如:样本(x4)),检查性能如何变化,例如比较 mse(排列前后)。

简单的想法是,如果变量无用,性能不会有太大变化。

最后,这里有一些有用的读物​​。

Link1

Link2

关于r - 为什么递归特征消除程序没有消除无用的预测变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180697/

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