在使用随机森林时,R我遇到了以下情况:
library(randomForest)
set.seed(42)
data(iris)
rf_noImportance <- randomForest(Species~.,data=iris,ntree=100,importance=F)
print(table(predict(rf_noImportance),iris$Species))
Run Code Online (Sandbox Code Playgroud)
输出:
Run Code Online (Sandbox Code Playgroud)setosa versicolor virginica setosa 50 0 0 versicolor 0 47 3 virginica 0 3 47
和
library(randomForest)
set.seed(42)
data(iris)
rf_importance <- randomForest(Species~.,data=iris,ntree=100,importance=T)
print(table(predict(rf_importance),iris$Species))
Run Code Online (Sandbox Code Playgroud)
输出:
Run Code Online (Sandbox Code Playgroud)setosa versicolor virginica setosa 50 0 0 versicolor 0 47 4 virginica 0 3 46
在我设置的第一个示例中importance = FALSE,在第二个示例中TRUE。根据我的理解,这不应该影响结果预测。文档中也没有关于这种行为的迹象。
根据交叉验证线程Do近度或重要性影响随机森林的预测吗?,重要性标志不应该影响预测,但在上面的例子中很明显。
那么为什么方法的重要性参数会randomForest影响模型的性能呢?