我已经使用 RF 大约一个月了(之前没有经验)。到目前为止,我注意到的是,如果我保留 RF 的配置(树的数量、目标函数、拆分条件等)并在相同的数据上重新运行,每次执行都会得到非常不同的结果:误报和真阳性因试验而异,这很烦人,因为我想要一个稳定的、可预测的结果。有没有办法控制它?直观地增加树数应该可以解决问题,但事实并非如此。我很感激这方面的建议。
随机森林方差
两个想法。
射频经常被分割直到纯度。这通常意味着有许多终端节点,每个节点都有一个观察值。导致这些节点的最终拆分可能无法很好地概括,因为在树的那个深度处可以使用的观察结果非常少。因此,如果您将最小节点大小从 1 增加到 10 或更多(取决于您拥有多少数据——这是另一个超参数,所以您可能会得到更多具有较低样本外方差的通用树)有利地调整它)。这还具有产生一致概率估计的特性,这在某些情况下可能是可取的。
增加树的数量将减少估计器的方差。这是其中一个 CLT 的明显结果——每棵树都是一个二项式试验,而森林的预测是许多二项式试验的平均值。此外,这些树是独立同分布的,因为它们都适合数据的不同重采样和不同的随机特征子集。因此,您有 iid 二项式轨迹(其方差有限,因为每次试验都是 0 或 1,即具有有限的基数)。这可以降低预测的波动性,因为树只需要解释数据块,而不是每次观察。因此,四倍的试验次数会将平均值的标准误差减半。
在Elements of Statistical Learning中对其中一些 RF 属性进行了扩展讨论。Malley JD, Kruppa J, Dasgupta A, Malley KG, Ziegler A. Probability Machines: Consistent Probability Estimation Using Nonparametric Learning Machines中讨论了一致性属性。医学信息方法。2012;51(1):74-81。doi:10.3414/ME00-01-0052。
最后,作为一般观察,最好的正则化器是更多的数据,更好的特征通常击败更聪明的算法。
我的意思是更多的方差减少,即可预测的结果。我增加了树的数量,但没有帮助。
由于中心极限定理,并且由于随机森林预测是通过平均获得的,因此增加树的数量应该会有所帮助。R 中的默认值为500L,将其设置为您可以支持的最高值(我经常将其设置为5000L,具体取决于数据)。
随机森林中的随机性来自属性装袋和引导聚合。您也可以尝试减少其中任何一个添加的随机性。
最后,取决于你有多少特征和多少样本,这可能只是由于数据,没有多少超参数修补可以解决它。
您在评论中提到:
我已经尝试了很多,介于 6 到 400 之间。我使用基于回归的特征选择器,使 p 值低于 0.05 的所有特征保持在
而且,正如我所说,我发现特征选择对随机森林几乎没有用处。原因很简单:您可能会因为选择而面临过度拟合的风险,而随机森林具有大量特征。让森林决定哪些特征是值得的,除非你的特征比样本多几个数量级,然后做一些小的减少,刚好足以去除噪声特征。
添加到用户所说的内容中,如果您对许多不相关或很少相关的变量进行平均,您会减少方差。
定义其中是单个决策树,B 个决策树。。
如果减小到零(不相关),则第一个数量减少,如果 B 增加,则第二个数量减少。