具有多个输出的随机森林是否可能/实用?

机器算法验证 机器学习 随机森林 大车 蒙特卡洛 多标签
2022-02-04 15:13:28
  1. 随机森林 (RFs) 是一种具有竞争力的数据建模/挖掘方法。

  2. RF 模型有一个输出——输出/预测变量。

  3. 使用 RF 对多个输出进行建模的简单方法是为每个输出变量构建一个 RF。所以我们有 N 个独立的模型,在输出变量之间存在相关性的地方,我们将有冗余/重复的模型结构。确实,这可能非常浪费。同样作为一般规则,更多的模型变量意味着更多的过拟合模型(更少的泛化)。不确定这是否适用于此,但它可能适用。

原则上,我们可以有一个具有多个输出的 RF。预测变量现在是一个向量(n 元组)。每个决策树中的决策节点现在根据阈值向量拆分目标/预测向量集,我认为这个阈值被视为 n 维空间中的一个平面,因此我们可以确定阈值的哪一侧向量每个目标向量都打开。

决策拆分每一侧的最佳预测值是为每一侧的向量计算的平均值(质心)。

在使用单个变量时找到最佳分割点是微不足道的,并且计算速度快/效率高。对于一个 n 元组,我们找不到最优分割(或者至少随着 N 的增加它在计算上变得不可行),但是我们可以使用蒙特卡洛类型的方法(或者蒙特卡洛和局部方法的某种混合)找到接近最优的分割梯度遍历)。

这真的有用吗?也就是说,它会只映射训练对而不进行泛化吗?这种技术是否已经以不同的名称存在?

您可能还想考虑这与受限玻尔兹曼机 (RBM) 和深度信念网络等神经网络有何关系。

3个回答

已经开发和发布了多个输出决策树(因此,随机森林)。Pierre Guertz 为此分发了一个包(下载)。另见 Segal & Xiao,多元随机森林,WIREs Data Mining Knowl Discov 2011 1 80–87,DOI:10.1002/widm.12 我相信最新版本的 Scikit-learn 也支持这一点。可以在 Henrik Linusson 题为“多输出随机森林”的论文中找到对现有技术的良好回顾。在每个节点上进行拆分选择的最简单方法是随机选择一个输出变量,然后按照通常的随机森林方法选择拆分。已经开发了基于关于每个输入特征和输出变量的互信息得分的加权和的其他方法,但与随机方法相比,它们非常昂贵。

如此处所述

scikit-learn 中的所有分类器都可以开箱即用地进行多类分类。

这包括随机森林。

页面:http ://scikit-learn.org/stable/modules/tree.html#tree-multioutput有很多关于该主题的参考资料。

0.24.2 版考虑了这个用例:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier 如文档中所述,形状您传递给fit函数的目标就像(n_samples, n_outputs).