在 h2o 随机森林中用于“重要性”的度量是啥

Posted

技术标签:

【中文标题】在 h2o 随机森林中用于“重要性”的度量是啥【英文标题】:What is the measure used for "importance" in the h2o random Forest在 h2o 随机森林中用于“重要性”的度量是什么 【发布时间】:2016-07-01 11:23:27 【问题描述】:

这是我的代码:

set.seed(1)

#Boruta on the HouseVotes84 data from mlbench
library(mlbench) #has HouseVotes84 data
library(h2o)     #has rf

#spin up h2o
myh20 <- h2o.init(nthreads = -1)

#read in data, throw some away
data(HouseVotes84)
hvo <- na.omit(HouseVotes84)

#move from R to h2o
mydata <- as.h2o(x=hvo,
                 destination_frame= "mydata")

#RF columns (input vs. output)
idxy <- 1
idxx <- 2:ncol(hvo)

#split data
splits <- h2o.splitFrame(mydata,           
                         c(0.8,0.1))     

train <- h2o.assign(splits[[1]], key="train")   
valid <- h2o.assign(splits[[2]], key="valid") 

# make random forest
my_imp.rf<- h2o.randomForest(y=idxy,x=idxx,
                      training_frame = train,
                      validation_frame = valid,
                      model_id = "my_imp.rf",
                      ntrees=200)

# find importance
my_varimp <- h2o.varimp(my_imp.rf)
my_varimp

我得到的输出是“变量重要性”。

经典的衡量标准是“准确率平均下降”和“基尼系数平均下降”。

我的结果是:

> my_varimp
Variable Importances: 
   variable relative_importance scaled_importance percentage
1        V4         3255.193604          1.000000   0.410574
2        V5         1131.646484          0.347643   0.142733
3        V3          921.106567          0.282965   0.116178
4       V12          759.443176          0.233302   0.095788
5       V14          492.264954          0.151224   0.062089
6        V8          342.811554          0.105312   0.043238
7       V11          205.392654          0.063097   0.025906
8        V9          191.110046          0.058709   0.024105
9        V7          169.117676          0.051953   0.021331
10      V15          135.097076          0.041502   0.017040
11      V13          114.906586          0.035299   0.014493
12       V2           51.939777          0.015956   0.006551
13      V10           46.716656          0.014351   0.005892
14       V6           44.336708          0.013620   0.005592
15      V16           34.779987          0.010684   0.004387
16       V1           32.528778          0.009993   0.004103

据此,我对“Vote #4”又名 V4 的相对重要性约为 3255.2。

问题: 那是在什么单位? 那是怎么得出的?

我尝试查看文档,但没有找到答案。我尝试了帮助文档。我尝试使用 Flow 查看参数以查看其中是否有任何指示。在他们中,我没有找到“基尼”或“降低准确性”。我应该去哪里看?

【问题讨论】:

【参考方案1】:

答案在docs。

[ 在左侧窗格中,单击“算法”,然后单击“监督”,然后单击“DRF”。 FAQ部分回答了这个问题。 ]

为了方便,这里也复制粘贴答案:

“如何计算 DRF 的变量重要性?变量重要性是通过计算每个变量的相对影响来确定的:在树构建过程中拆分时是否选择了该变量,以及平方误差(在所有树上)改善了多少结果。”

【讨论】:

我想你指的是它所说的“变量的重要性是通过计算每个变量的相对影响来确定的:在树构建过程中是否选择了该变量以及多少结果,平方误差(在所有树上)得到了改善。”这不是“基尼”或“准确性降低”。是否有方程式、论文参考或伪代码?我发现的行为与 RF 的 R 'Boruta' 库的输出非常不同。 我们在 GBM 和 RF 中使用相同的树代码,因此在两者中使用的基础方程是相同的(尽管算法的工作方式不同,因此最终的 GBM 和 RF 重要性值会不同)。参考文献中的方程45:statweb.stanford.edu/~jhf/ftp/trebst.pdf 我喜欢贪婪的近似值。重要性将与 GBM 与 RF 的根本不同。谢谢。 @EngrStudent 我在这里遗漏了什么吗?因为我没有看到你的问题得到回答。 SO答案是指“平方误差”,对于链接论文的相关部分也是如此。但您的问题是关于分类问题。 艾琳在评论中指出了它。我想,我能够从那里到达我需要的地方。差不多是 2 年前的事了,所以我没有想到它。

以上是关于在 h2o 随机森林中用于“重要性”的度量是啥的主要内容,如果未能解决你的问题,请参考以下文章

随机森林进行特征重要性度量的详细说明

类似于 h2o 包中排列精度重要性的东西

特征筛选(随机森林)

从 mlr 包的 resample 函数中获取特定的随机森林变量重要性度量

使用 H2O 在 R 中平衡随机森林

在 H2O 随机森林和 xgboost 中使用权重列