h2o randomForest 变量重要性

Posted

技术标签:

【中文标题】h2o randomForest 变量重要性【英文标题】:h2o randomForest variable importance 【发布时间】:2015-07-25 09:30:05 【问题描述】:

我正在使用 h2o 包来创建 randomForest 回归模型。我对变量的重要性有一些问题。我正在创建的模型在这里。一切正常。

有些变量是数字的,但有些是分类的。

RandomForest <- h2o.randomForest(x = c("Year",  "Month", "Day", "Time", "Show", "Gen",
                                   "D", "Lead"), y = "Ratio", data = data.hex, importance=T, stat.type = "GINI",
                             ntree = 50, depth = 50, nodesize = 5, oobee = T, classification = FALSE, type = "BigData")

但是,当我想查看变量重要性时,输出看起来像这样。

Classification: FALSE
Number of trees: 50
Tree statistics:
        Min.  Max.    Mean.
Depth     30    40    33.26
Leaves 20627 21450 21130.24


Variable importance:
                        Year    Month      Day     Time  Show   Gen           D   Lead
Relative importance 20536.64 77821.76 26742.55 67476.75 283447.3 60651.24   87440.38 3658.625
Standard Deviation        NA       NA       NA       NA       NA       NA       NA       NA
Z-Scores                  NA       NA       NA       NA       NA       NA       NA       NA

Overall Mean-squared Error:  

我想知道的是: 1) 为什么会有 NA 值。 2) 相对重要性实际上是什么意思。不应该在1到100之间吗? 3) 为什么输出中没有混淆矩阵?

感谢您的帮助!

【问题讨论】:

您的结果 (y) 变量是否连续?输出状态为Classification: FALSE。混淆矩阵仅适用于分类结果变量。 【参考方案1】:

首先,我建议下载最新版本的 H20-3。这可以解决您获得标准差的 NA 值的问题。 相对重要性量化了特定预测器相对于其他单个预测器在预测响应变量中所做的贡献。您可能认为需要介于 1 和 100 之间的数字是比例重要性。 最后,您在输出中没有得到混淆矩阵的原因是您有一个回归模型而不是分类模型。混淆矩阵仅用于分类模型。

您可以通过运行以下命令在 R 中运行随机森林示例:

library(h2o)
conn <- h2o.init()
demo(h2o.randomForest)

然后,您可以通过执行以下操作查看混淆矩阵/相对和比例重要性表:

> h2o.confusionMatrix(iris.rf)
Confusion Matrix - (vertical: actual; across: predicted):
                Iris-setosa Iris-versicolor Iris-virginica  Error      Rate
Iris-setosa       50.000000        0.000000       0.000000 0.0000 =  0 / 50
Iris-versicolor    0.000000       47.000000       3.000000 0.0600 =  3 / 50
Iris-virginica     0.000000        6.000000      44.000000 0.1200 =  6 / 50
Totals            50.000000       53.000000      47.000000 0.0600 = 9 / 150
> h2o.varimp(iris.rf)
Variable Importances:
   variable relative_importance scaled_importance percentage
1 petal_len         1926.421509          1.000000   0.445738
2 petal_wid         1756.277710          0.911679   0.406370
3 sepal_len          493.782562          0.256321   0.114252
4 sepal_wid          145.390717          0.075472   0.033641

谢谢,希望对您有所帮助!

【讨论】:

相对重要性告诉你什么?较高的值是否意味着该变量对预测目标变量相对于其他变量的贡献最大?还是反之亦然?那么,在您的示例中,petal_len 的相对重要性 id 越高,是否意味着它是最重要的?

以上是关于h2o randomForest 变量重要性的主要内容,如果未能解决你的问题,请参考以下文章

H2O R 变量重要性截断列表

H2O randomForest中的多类分类

h2o 随机森林中的排列重要性

获取 RandomForest 中单个树的重要性

r R脚本采用H2o模型权重和偏差,并通过NeuralNetTools旧的变量重要性函数发送它们......并且第一个ti

R语言 | randomForest包的随机森林回归模型以及对重要变量的选择