多层次/分层结构数据上的随机森林

机器算法验证 机器学习 随机森林 多层次分析 大车
2022-02-13 04:58:20

我对机器学习、CART 技术等还是很陌生,我希望我的天真不是太明显。

随机森林如何处理多层次/分层数据结构(例如,当感兴趣的跨层次交互时)?

即,具有多个层次级别的分析单元的数据集(例如,嵌套在学校内的学生,具有关于学生和学校的数据)。

举个例子,考虑一个多层次的数据集,第一层次的个人(例如,关于投票行为、人口统计等的数据)嵌套在第二层次的国家中(具有国家层次的数据;例如,人口):

ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54

可以说这voted是响应/因变量,其他是预测/自变量。在这些类型的情况下,变量(部分依赖)对于不同个体级别变量等的某些更高级别变量(例如)的边际和边际效应population可能非常有趣。在与此类似的情况下glm,当然更合适——但是当有很多变量、交互和/或缺失值,和/或非常大规模的数据集等时,glm就不那么可靠了。

子问题:随机森林可以以某种方式显式处理这种类型的数据结构吗?如果无论如何都使用,它会引入什么样的偏见?如果随机森林不合适,是否还有其他集成类型的方法?

关于分组数据的问题随机森林可能类似,但并没有真正回答这个问题。)

3个回答

在单个分类树中,这些组的编码与任何其他分类变量相同。这通常作为二进制编码或仅使用整数来完成。使用任何一种都有不同的论据。在随机森林中,如果您使用二进制编码,任何给定的树都将包含/排除某些组。所以你可能有一个指标,country_2但没有country_3如果您将组变量保留为整数,则排序也会影响结果。country > 5是什么意思country < 12如果你用新的整数随机重新标记国家,情况会如何变化?

在生长树的每一步,算法都在寻找优化标准的分割。如果组之间存在很大差异,那么分组变量将很重要,但如果它只是中等重要并且您修剪了一棵树,那么该变量可能基本上被排除在外。

与大多数其他机器学习算法一样,CART 和随机森林不一定像您在分层回归模型中所期望的那样考虑组内观察之间的依赖关系。如果观测值之间存在依赖关系,则应该由随机森林算法通过生成许多使用分组变量的树来捕获。但是,如果其他变量表现出更大的区别,则可以忽略分组变量。

在你的情况下,country并且population是完全共线的。在模型中使用这两个变量不会获得任何信息。因此,您可以考虑随机森林模型如何处理数据中的这些变量。

随机森林可以正常工作,但在调整超参数时必须非常小心(特别是如果您想要对泛化性能进行实际测量)。传统的 OOB 错误估计会非常乐观,因为您的数据中存在猖獗的“孪生”。

要获得适当的调优和泛化估计,您需要了解您期望遇到的任何新数据的特征是什么。如果您想推断新的国家/地区,那么您需要设置某种基于重新抽样的调整方式(例如 k 折交叉验证),按国家/地区进行分层抽样。

您还需要小心如何将数据编码到随机森林中。这似乎country是一个分类变量。将其作为数字输入会有点粗糙,但并非没有希望(特别是如果您通过有用的东西订购了 ID)。

我实际上正在研究一个 R 包,该包将 randomForest 作为本地分类器沿着预定义的类层次结构运行。该软件包可以在 R Forge 中的“hie-ran-forest”下找到。该软件包已经可以使用,尽管它未通过一项 cran 测试(对于 MAC),但我不确定具体原因。除了为层次结构中的每个父节点实际运行 randomForest 之外,该包还包含预测函数和性能函数。其中一项性能指标实际上说明了分层类结构。

该包通过首先在类层次结构的每个父节点运行随机森林作为本地分类器来解决跨级别交互。接下来,预测函数检索每个案例在每个本地分类器中收到的袋外投票的比例。那么有两种方法可以将投票比例转化为清晰分类: 1. 逐步多数规则 - 从最接近树根的本地分类器开始,选择该分类器中获得最高投票比例的子分类器。接下来,查看所选节点的所有子节点,并再次选择在相关本地分类器中获得最高投票比例的子节点。继续直到到达终端节点。2.

乘法比例的选票与常规随机森林产生的选票比例相当