随机森林分类如何在幕后工作?

Posted

技术标签:

【中文标题】随机森林分类如何在幕后工作?【英文标题】:How random forest classification works behind the scenes? 【发布时间】:2020-12-06 04:49:09 【问题描述】:

这是随机森林分类如何工作的示例数据集。我知道通过选择随机 k 点然后取某种平均值来构建多个决策树?

但是在这种情况下,我有 10 棵树,有 10 个不同的数据点,如果我要选择随机的 k 个点,它会是这样的:

x_train = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
y_train = [0, 0, 1, 0, 1, 1, 1, 0, 0, 1]
object = RandomForestClassifier(n_estimators=10, criterion='entropy')
object.fit(x_train, y_train)

然后我们制作一个图并拆分 random_k_1 以便它在每次拆分中最大化一个类别。

那我们该怎么办?比如取某种平均值?如果是,我们应该怎么做,我们只有 0, 1 作为 y^?很抱歉我无法解释这个问题,我迷路了,无法描述这个问题。

random_k_1 = [[10, 0], [30, 1], [70, 1]]

【问题讨论】:

【参考方案1】:

简而言之,随机森林使用决策树工作。它使用一种称为“Bootstrapping”或“Bagging”的技术来减少模型中的差异。

采用了许多决策树(在 sklearn 实现中,由n_estimators 定义)。这些树中的每一个都可以在数据的随机子样本上进行训练。这试图使每棵树尽可能独立于其他树。一旦这些被训练,就会使用聚合技术。

引用文档:

输入样本的预测类别概率计算为 森林中树木的平均预测类别概率。这 一棵树的类概率是 同一类在一片叶子中。

然后,预测就是具有最高平均类概率的类。

这种聚合降低了模型中的方差,因此我们走向了低方差低偏差的最佳点。

我相信您的困惑就在这里。未对目标标签 y 进行聚合。对各种决策树的输出进行聚合。

为了简化,请考虑这个例子。

您在 RandomForest 模型中采用 11 个估计量,即 11 个决策树。 y 只能是 [0, 1] 整数。 这些决策树中有 6 棵预测 y 为 1,其中 5 预测它为 0。在这种情况下,您选择整个森林的预测为 1。

【讨论】:

以上是关于随机森林分类如何在幕后工作?的主要内容,如果未能解决你的问题,请参考以下文章

分类算法 - 随机森林

随机森林(Random Forest)

随机森林,决策树(Random Forest)

集成学习与随机森林随机森林与随机子空间

随机森林分类器

机器学习:R语言实现随机森林