【问题标题】:Estimating class probabilities with hierarchical random forest models用分层随机森林模型估计类概率
【发布时间】:2014-05-28 17:57:25
【问题描述】:

我正在使用随机森林分类器(在 R 中)使用各种环境变量作为预测因子来预测多个原生植物群落的空间分布。这个分类系统是分层的,每个连续的级别在其类描述中变得更加详细。例如,我有一个有 2 个级别的层次分类系统,最上层由两个类组成:森林 (F) 和草地 (G)。假设对于第二级,每个森林和草原类由 2 个子类(F1、F2 和 G1、G2)组成。例如,使用 Forest 类,子类可能是针叶林或落叶林。

到目前为止,我知道这是非常基本的,但这是我遇到的挑战。我想以最好的分类级别预测这些类的空间分布,但是环境变化太多,无法以可接受的精度进行此操作。为了减少这种可变性,我可以训练多个随机森林模型,其中第一个模型(模型 #1)在最高级别运行,将观察结果分类为 F 或 G。在第二个级别,根据 F/G 类将数据子集分为两组并训练两个模型(模型 #2 和 #3),每个模型将一个子集分类为各自的子类。

使用这些堆叠模型,我可以预测新观察的类别概率。使用随机森林,该值是为特定类别投票的树数除以森林中的树数。对于一个新的观察,总结的随机森林输出可能是:

1 级(模型 #1)
- F, G = 80, 20

2 级(型号 #2 和 #3)
- F1、F2 = 80、20
- G1, G2 = 70, 30

输出表明这个新观察结果很可能是具有 F1 子类的 Forest,但我对 F1 是正确类的信心有多大?

我的问题首先是,在这种建模结构下,是否有合适的方法来计算这个新观察结果实际上是 F1 的组合概率?其次,如果合适的话,怎么做? (我怀疑某种使用高级概率作为先验的贝叶斯方法可能会奏效,但我远非精通贝叶斯统计)。

我为我的冗长和没有发布实际数据/代码道歉(鉴于我的数据集,很难提取既简洁又能代表我的问题的内容)。谢谢!

【问题讨论】:

    标签: r classification bayesian random-forest


    【解决方案1】:

    我实际上正在研究一个类似的问题,并编写了一个 R 包,该包将 randomForest 作为本地分类器运行在预定义的类层次结构中。 您可以在 R-Forge 的“hie-ran-forest”下找到它。 该包包括两种将局部概率转换为清晰类的方法。

    1. 逐步多数规则 - 选择您的 1 级模型中得票比例最高的类别,然后选择您的第二级模型中得票比例最高的类别
    2. 乘法多数规则 - 将概率(选票比例)向下乘以类层次结构,并选择乘法比例最高的类。

    在您提供的示例中,两种方法都以 F1 结尾, 然而对于价值观:

    F, G   = 0.6,  0.4
    F1, F2 = 0.6,  0.4 
    G1, G2 = 0.95, 0.05
    

    逐步多数将选择 F1(模型 1 中的 F 和模型 2 中的 F1),而乘法将选择 G1,因为

    0.4*0.95 (G1) > 0.6*0.6 (F1) > 0.6*0.4 (F2) > 0.4*0.05 (G2)
    

    我认为没有“正确”选项,而且总的来说,我发现这两种方法通常会达到非常相似的准确度水平。斯氏法对树根附近的错误分类更敏感。但是,如果您的模型 1 是正确的,它将倾向于减少“严重”的错误分类。另一方面,乘法对任何特定局部分类器的结果不太敏感,但对类层次结构的深度和每个局部分类器中的兄弟数量敏感。

    【讨论】:

      猜你喜欢
      • 2012-12-20
      • 2019-08-12
      • 2016-01-28
      • 2012-10-24
      • 2017-07-02
      • 2018-09-13
      • 2015-05-03
      • 2018-10-23
      • 2013-01-10
      相关资源
      最近更新 更多