随机森林中的决策树如何平均?

数据挖掘 随机森林 集成建模
2022-02-26 03:47:44

我们都知道随机森林是决策树的集合,其结果是平均的。

我发现的每个来源都只是在谈论“平均树”,但是这种“树的平均”是如何发生的?谁能详细解释一下?

1个回答

这取决于随机森林预测的变量类型,也可能取决于随机森林的具体实现。以下是最简单技术的概述。

连续目标

在连续目标变量的情况下y,集成中的每棵树都会生成一个预测y^i. 将树的结果组合成一个集合的最简单的方法是取所有预测的平均值。

假设你有 10 棵树的集合。然后综合预测y^将被计算为

y^=110i=110y^i

这是scikit-learn 中的森林回归器采用的方法。注意线条

    # Parallel loop
    lock = threading.Lock()
    Parallel(n_jobs=n_jobs, verbose=self.verbose,
             **_joblib_parallel_args(require="sharedmem"))(
        delayed(_accumulate_prediction)(e.predict, X, [y_hat], lock)
        for e in self.estimators_)

    y_hat /= len(self.estimators_)

“并行循环”部分总结了森林中每棵树的预测,最后一行除以树的总数,因此这y_hat是每棵树的预测的平均值。

另一种方法是对预测进行加权平均

y^=i=110ωiy^i

每棵树都有重量ωi. 例如,可以通过树的性能来确定权重。在某些情况下,这种方法可能会稍微提高准确性,但更容易过拟合。

分类目标

在您的随机森林预测分类变量的值的情况下,您可以让每棵树都像“委员会”的成员一样行事并投票。

假设一个分类变量具有三个可能的值,A,B, 或者C,你的随机森林有 10 棵树。您为每棵树生成一个预测,该预测算作一票。

例如,假设您的 5 棵树预测A, 其中 3 个预测B,其中 2 个预测C. 综合预测为A.

请注意,您可能会遇到平局的情况。假设你的 5 棵树预测A,其他五个预测B. 你选择哪个预测?

一种选择是在平局的情况下预测多数类别。在上面的例子中,如果训练数据包含更多B例子比A例子,然后我们会预测B.

解决平局的另一个选择是通过树的准确性对投票进行加权。再次假设您有五棵树投票A和五棵投票的树B. 如果你观察到,平均而言,投票给B更可靠,你可以给他们的选票额外的权重并预测B.

希望这会有所帮助!