我正在研究随机森林预测,重点是预测变量的重要性,并且有一个关于理解 mtry 和 R 中随机森林树中变量的实际使用的问题(包 randomForest)。
我有一个包含超过 1000 个观察值的样本和一个分类为 2 类的响应向量:0 和 1。我有 4 个自变量。对于实验,我选择了以下参数:
rftry1=randomForest(x,y,xtest,ytest,mtry=4,ntree=500, importance=TRUE,keep.forest=TRUE,do.trace=TRUE,replace=TRUE,keep.inbag=TRUE,proximity=TRUE)
然后我检查了森林中实际使用了哪些变量,并发现了一个非常倾斜的用法:
> varUsed(rftry1)
[1] 2436 1758 1988 1156
从第一个变量到第四个变量,使用量实际上急剧下降。它真的会影响预测吗?为什么会这样?
然后我用 mtry=2 重新运行实验,使用量总体上有所减少,但仍与第一个的使用量成正比。
MeanDecreaseAccuracy MeanDecreaseGini
1 0.006535855 2.177148 2 0.224706591 127.106268 3 0.006633846 5.020456 4 0.017522580 36.867821
我注意到,变量在树中的使用频率不会影响重要性到改变变量重要性顺序的程度。所以我的主要两个问题是:
1)我想我不明白 mtry 究竟控制了什么(我已经阅读了每次拆分时采样的变量数量)。我注意到,在 mtry 2 和 4 中,一些变量已在树中重用,而在 m=1 时,它们没有被重用,而且树要短得多。当我说:
mtry=2 意味着在每次拆分时,我们不会坚定地选择下一个要拆分的变量,而是从 2 个变量中随机选择?如果我总共有 4 个变量,并且变量 1 用于第一次拆分 - 我对左女儿和右女儿的选择是什么?
2) mtry 是否与拆分变量的不平衡使用有关?为什么要这样使用变量,是否会影响预测结果而产生偏差?
我所有的变量都是因子的形式,其中 3 个有 2 个级别,1 个有 3 个级别。
谢谢您的回答!