我完成了随机森林模型的特征重要性。我删除了 17 个功能中的底部 4 个功能。模型性能实际上有所提高。考虑到某些数据已丢失,在删除某些功能后性能不应该降低吗?有哪些原因可以解释性能改进?
为什么在某些情况下去除某些特征会提高随机森林的性能?
修剪基本决策树以减少过度拟合数据的可能性,从而有助于泛化。随机森林通常不需要修剪,因为每棵树都是在特征的随机子集上训练的,当树组合在一起时,它们之间几乎没有相关性,从而降低了过度拟合和树之间建立依赖关系的风险。
您获得这种意想不到的改进性能可能有几个原因,主要取决于您如何训练随机森林。如果您执行以下任何操作,则可能会导致过度拟合:
- 使用了少量随机树
- 使用高强度的树木;意味着非常深入,学习训练集的特质
- 您的特征之间的相关性
因此,删除特征后,您的模型可以稍微泛化一些,从而提高其性能。
删除任何高度相关的特征可能是一个好主意,例如,如果两个特征的成对相关性 > 0.5,只需删除其中一个。这基本上就是您所做的(删除 3 个功能),但以更具选择性的方式。
随机森林中的过度拟合
您可以在 Wikipedia或一些关于讨论问题的随机森林的论文中阅读更多关于上述原因的信息:
Leo Breiman 的随机森林论文- 在结论部分指出:
由于大数定律,它们不会过拟合。
但也提到了适当水平的随机性的要求。
Hastie 等人的统计学习要素。al(特别是第 15.3.4 节 Random Forests and Overfitting)提供了更多的见解,指的是从您的训练集中获取的数据样本数量的增加:
在极限情况下,完全生长的树的平均值会导致模型过于丰富,并产生不必要的方差
因此,在您拥有的特征数量、使用的树的数量和它们的深度之间可能需要进行权衡。已经完成了控制树木深度的工作,并取得了一些成功——我建议你参考Hastie 等。更多详细信息和参考资料。
这是书中的一张图片,它显示了通过最小节点大小控制树深度的回归实验的结果。因此,需要更大的节点有效地限制了你的决策树增长得太远,从而减少了过度拟合。
作为旁注,第 15.3.2 节讨论了变量重要性,您可能会对此感兴趣。
我假设您在一些训练数据上训练(“增长”)了您的随机森林,并在一些保留数据上测试了性能,所以您所说的性能是有效的。