R中回归模型的特征选择

时间:2015-03-18 20:01:52

标签: r random-forest feature-selection

我正在尝试在R中找到可用于回归的特征选择包,大多数包使用响应变量的因子或类来实现其分类方法。特别是我有兴趣是否有一个方法使用随机森林为此目的。此领域的一篇好文章也会有所帮助。

2 个答案:

答案 0 :(得分:0)

IIRC randomForest包也做回归树。你可以从Breiman纸张开始,然后从那里开始。

答案 1 :(得分:0)

有很多方法可以使用randomforest来计算变量重要性。

<强>予。平均降低杂质(MDI)/基尼重要性: 这使用随机森林模型或决策树。在训练树时,通过每个特征减少树中加权杂质的程度来测量。对于森林,可以对每个特征的杂质减少进行平均,并且根据该度量对特征进行排序。以下是使用R的相同示例。

fit <- randomForest(Target ~.,importance = T,ntree = 500, data=training_data)
var.imp1 <- data.frame(importance(fit, type=2))
var.imp1$Variables <- row.names(var.imp1)
varimp1 <- var.imp1[order(var.imp1$MeanDecreaseGini,decreasing = T),]
par(mar=c(10,5,1,1)) 
giniplot <- barplot(t(varimp1[-2]/sum(varimp1[-2])),las=2,
                     cex.names=1,
                    main="Gini Impurity Index Plot")

输出结果如下:Gini Importance Plot

<强> II。排列重要性或平均精度降低(MDA):通过消除该特征与目标之间的关联,评估每个特征的排列重要性或平均精度降低(MDA)。这是通过随机置换特征值并测量导致的误差增加来实现的。相关特征的影响也被消除。 R中的例子:

fit <- randomForest(Target ~.,importance = T,ntree = 500, data=training_data)
var.imp1 <- data.frame(importance(fit, type=1))
var.imp1$Variables <- row.names(var.imp1)
varimp1 <- var.imp1[order(var.imp1$MeanDecreaseGini,decreasing = T),]
par(mar=c(10,5,1,1)) 
giniplot <- barplot(t(varimp1[-2]/sum(varimp1[-2])),las=2,
                     cex.names=1,
                    main="Permutation Importance Plot")

这两个是直接使用Random Forest的。对于变量重要性计算目的,有一些更易于使用的度量标准。 &#39; Boruta酒店&#39;方法和证据权重(WOE)和信息价值(IV)也可能有所帮助。