选择随机森林的参数

机器算法验证 机器学习 交叉验证 模型选择 随机森林
2022-03-08 16:05:50

我是机器学习的新手,想知道通过交叉验证来固定估计器的数量和随机森林的最大深度是否有意义?

我的直觉是肯定的,因为交叉验证可以确定模型的超参数。尽管如此,我想我听到一位教授说用这样的程序估计随机森林超参数是不合逻辑的......可能是因为估计器的数量会根据训练数据来选择,然后会有一种过拟合作为训练和测试数据集的大小不同,例如,具有更大的集合大小可能允许人们考虑更深的树,或者可能需要对更多的树进行平均以减少方差......

确定要使用的随机森林超参数的其他可能方法是什么?

更一般地说,机器学习中的主要模型选择程序是什么?

2个回答

随机森林以相对容易调整而著称。这是因为它们只有几个超参数,并且对它们采用的特定值并不过分敏感。调整超参数通常可以在一定程度上提高泛化性能。

树的大小可以根据实现以不同的方式控制,包括最大深度、最大节点数和每个叶节点的最小点数。较大的树可以拟合更复杂的函数,但也会增加过拟合的能力。一些实现默认不施加任何限制,并且完全生长树。调整树的大小可以通过平衡过拟合和欠拟合来提高性能。

每个拆分要考虑的特征数。每次分裂一个节点时,都会考虑一个随机的特征子集,并选择最好的来执行分裂。考虑更多特征会增加找到更好分割的机会。但是,它也增加了树之间的相关性,增加了整个模型的方差。推荐的默认值是分类问题特征总数的平方根,以及回归问题总数的 1/3。与树大小一样,可以通过调整来提高性能。

树的数量增加森林中的树木数量会降低整个模型的方差,并且不会导致过度拟合。从泛化性能的角度来看,因此使用更多的树更好。但是,收益递减,添加树会增加计算负担。因此,最好在计算预算范围内适应大量的树。几百个通常是一个不错的选择,但这可能取决于问题。调整不是真的需要。但是,可以在向模型中顺序添加新树的同时监控泛化性能,然后在性能停滞不前时停止。

选择超参数

调整随机森林超参数使用与其他模型相同的一般过程:使用一些搜索算法探索可能的超参数值。对于每组超参数值,训练模型并估计其泛化性能。选择优化此估计的超参数。最后,估计最终调整模型在独立数据集上的泛化性能。

对于许多模型,此过程通常涉及使用保留或嵌套交叉验证将数据拆分为训练、验证和测试集。然而,随机森林有一个独特的、方便的特性:引导用于拟合单个树,这很容易产生袋外 (OOB) 错误。这是对未来数据误差的无偏估计,因此可以代替验证或测试集误差。这留下了更多可用于训练的数据,并且在计算上比嵌套交叉验证更便宜。有关更多信息,请参阅此帖子

网格搜索可能是最流行的超参数优化搜索算法。在某些情况下,随机搜索可能更快。我在这里提到了更多关于这个(以及其他一些超参数优化问题)的信息更高级的算法(例如贝叶斯优化)也是可能的。

随机和网格搜索是可能的,http://scikit-learn.org/stable/auto_examples/model_selection/randomized_search.html

也建议使用贝叶斯方法。