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


13

我对机器学习,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并不是那么可靠。

子问题:随机森林能否以某种方式显式处理这种类型的数据结构?如果不考虑使用,会带来什么样的偏见?如果“随机森林”不合适,是否还有其他集成类型方法?

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


@MikaelAndersson,您好,您找到了所提出问题的解决方案吗?我正面临类似的情况,希望听到您的经验。谢谢。
NoviceProg

Answers:


4

Random Forests可以很好地工作,但是在调整超参数时(尤其是如果您想要对通用性能进行实际测量的话)您必须非常小心。传统的OOB错误估计将非常乐观,因为您的数据中普遍存在“孪生”现象。

为了获得适当的调整和泛化估计,您需要了解预期会遇到的任何新数据的特征。如果要推断到新的国家/地区,则需要设置某种基于重新抽样的调整方式(例如k倍交叉验证),该方式可以按国家/地区进行分层抽样。

您还需要注意如何将数据编码到随机森林中。看来这country是一个类别变量。将其作为数字输入会有些困难,但并非没有希望(特别是如果您通过有用的命令订购了ID)。


您能否解释一下为什么OOB误差估计会过于乐观?
dmartin 2014年

2
我认为他们的乐观态度取决于新数据的外观。如果新数据来自其他县,则该随机森林的性能可能不如OOB错误所示。例如,这是因为OOB错误仍然来自同一组县的样本。
Shea Parkes 2014年

3

我实际上正在研究一个R包,该包沿预先定义的类层次结构作为本地分类器运行randomForest。该软件包可以在R Forge的“ hie-ran-forest”下找到。该软件包已经可以运行,尽管它没有通过一项cran测试(针对MAC),但我不确定原因。除了为层次结构中的每个父节点实际运行randomForest之外,该程序包还包含预测函数和性能函数。绩效衡量指标之一实际上是解释分层类结构的。

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

票数的乘法比例可与常规randomForest产生的票数比例相比较


2
您能否澄清您的程序包可以解决“跨层交互”问题,如果可以,它是如何做到的?仅仅说存在一个包并不能解决很多问题(我并不是说这里太关键了,但是CV希望建立一个永久的高质量ML信息存储库,而一个包并不存在的事实完全符合该标准。)
gung-恢复莫妮卡

请注意,您的用户名(带有指向用户页面的链接)会自动附加到您在此处发布的每条帖子中。因此,无需签署您的帖子-实际上,我们希望您不要签名。如果您希望人们能够与您联系,则可以在用户页面上发布一种方法(例如,您的电子邮件地址)。
gung-恢复莫妮卡

太好了,谢谢@YoniGavish。为什么不编辑您的答案并将该信息添加到其中呢?
gung-恢复莫妮卡

@gung更好吗?
Yoni Gavish 2015年

是的,可以做到,@ YoniGavish,+ 1。欢迎来到该网站。
gung-恢复莫妮卡

3

在单个分类树中,这些组的编码方式与任何其他分类变量相同。这通常以二进制编码或仅使用整数的形式完成。使用这两种方法有不同的论点。在随机森林中,如果您使用二进制编码,则任何给定的树都将包含/排除某些组。因此,您可能有一个指标,country_2但没有country_3。如果将组变量保留为整数,则排序也会影响结果。对country > 5和意味着什么country < 12?如果您随机用新的整数重新标记国家,那将如何改变?

在种树的每个步骤中,算法都在寻找优化标准的分割。如果组之间的差异很大,则分组变量将很重要,但是如果分组变量仅适度重要并且您修剪一棵树,则该变量可能会被排除在外。

像大多数其他机器学习算法一样,CART和随机森林不一定会像您在分层回归模型中所期望的那样考虑组内观察之间的依赖性。如果观测之间的依赖性,应该通过随机森林算法,通过使用该分组变量很多树木的产生抓获。但是,如果其他变量表现出更大的辨别力,则可以忽略分组变量。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.