【问题标题】:What does negative %IncMSE in RandomForest package mean?RandomForest 包中的负 %IncMSE 是什么意思?
【发布时间】:2015-03-11 04:24:00
【问题描述】:

我使用 RandomForest 来解决回归问题。我使用importance(rf,type=1) 来获取变量的%IncMSE,其中一个变量的%IncMSE 为负。这是否意味着这个变量对模型不利?我在互联网上搜索了一些答案,但没有找到明确的答案。 我还在模型摘要中发现了一些奇怪的东西(附在下面),虽然我将ntrees定义为800,但似乎只使用了一棵树。

型号:

rf<-randomForest(var1~va2+var3+..+var35,data=d7depo,ntree=800,keep.forest=FALSE, importance=TRUE)

summary(rf)
                Length Class  Mode     
call                6  -none- call     
type                1  -none- character
predicted       26917  -none- numeric  
mse               800  -none- numeric  
rsq               800  -none- numeric  
oob.times       26917  -none- numeric  
importance         70  -none- numeric  
importanceSD       35  -none- numeric  
localImportance     0  -none- NULL     
proximity           0  -none- NULL     
ntree               1  -none- numeric  
mtry                1  -none- numeric  
forest              0  -none- NULL     
coefs               0  -none- NULL     
y               26917  -none- numeric  
test                0  -none- NULL     
inbag               0  -none- NULL     
terms               3  terms  call 

【问题讨论】:

    标签: r statistics random-forest prediction


    【解决方案1】:

    问题 1 - 为什么ntree 显示 1?

    summary(rf) 显示包含在rf 变量中的对象的长度。这意味着 rf$ntree 的长度为 1。如果您在控制台上输入 rf$tree,您将看到它显示为 800。

    问题 2 - 负的 %IncMSE 是否显示“坏”变量?

    IncMSE:
    计算方法是最初计算整个模型的 MSE。我们称之为MSEmod。在此之后,对于每个变量(数据集中的列),值会随机打乱(置换),以便创建“坏”变量并计算新的 MSE。 IE。想象一下,对于一列,您有第 1、2、3、4、5 行。排列后,这些最终将随机变为 4,3,1,2,5。排列后(所有其他列保持完全相同,因为我们要检查 col1's 重要性),正在计算模型的新 MSE,我们称之为 MSEcol1(以类似的方式,您将有 @987654330 @, MSEcol3 但让我们保持简单,这里只处理MSEcol1)。我们预计,由于第二个 MSE 是使用完全随机的变量创建的,MSEcol1 将高于MSEmod(MSE 越高越差)。因此,当我们取两个MSEcol1 - MSEmod 的差时,我们通常期望一个正数。在您的情况下,负数表明随机变量效果更好,这表明该变量可能没有足够的预测性,即不重要。

    请记住,我给你的这个描述是高水平的,实际上两个 MSE 值是按比例缩放的,并且正在计算百分比差异。但高层次的故事是这样的。

    算法形式:

    1. 计算模型 MSE
    2. 对于模型中的每个变量:
      • 置换变量
      • 根据变量排列计算新模型MSE
      • 了解型号 MSE 和新型号 MSE 的区别
    3. 在列表中收集结果
    4. 根据 %IncMSE 的值对变量的重要性进行排序。值越大越好

    希望现在清楚了!

    【讨论】:

    • 非常感谢 LyzanderR 的详细而清晰的回答,干杯,罗恩
    • 很高兴帮助了 Ron :)。如果您想深入挖掘,可以查看here。这是来自 Breiman 本人(随机森林的发明者),他用简单的英语准确解释了它们是如何在没有(很多)数学公式的情况下工作的。这正是用于实现的 rf 包的参考。
    • @LyzandeR 当然计算的值(在简单的解释中)应该是MSEcol1 - MSEmod,因为如果MSEcol1 &gt; MSEmod,就像如果变量1有任何用处一样,那么差异将是是肯定的(因此你的答案中的MSEmod - MSEcol1 应该是否定的......
    • 谢谢@stasg。你是对的,我在那里犯了一个错误,正如你所说的,反之亦然。感谢您注意到这一点。这就是我喜欢社区的地方,我们可以互相检查对方的错误。再次感谢。
    • @LyzudeR 没问题 :)
    猜你喜欢
    • 2018-07-17
    • 2011-05-27
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    相关资源
    最近更新 更多