是否应该比较基于相同数据但不同随机种子的随机森林?

机器算法验证 机器学习 随机森林 随机生成
2022-04-01 15:43:15

我知道,如果您使用不同的随机种子重新运行随机森林,您将适合不同的模型。我想知道比较不同的随机森林模型(在不同的随机种子下运行)并在训练数据上采用最准确的模型(使用 10 倍 CV)进行下游工作是否可以接受。

例如,下面是一个数据集中基于 10 倍 CV 的准确度分布,该数据集中有 147 个样本和 278 个特征(所有两类特征),用于预测疾病状态(两类:健康/患病)。此分布基于具有不同随机种子的 100 个 RF 复制:

采用最高精度的模型进行特征选择并拟合我的测试数据是错误的吗?

我也有兴趣将所选模型的 10 倍 CV 准确度与其他 RF 模型的准确度进行比较将其转换为测试/训练数据)。我担心如果我选择精度最高的模型,这种方法可能会有偏差。

2个回答

准确性只是另一个随机变量,它取决于您的模型、种子、训练/测试拆分、当前数据的质量等 - 最大化这个随机变量并不会自动导致模型的最佳泛化。

除了查看准确度、logloss、auc roc 等指标外,您可能还想查看其他学习特征,例如在添加更多数据时训练/测试数据的学习曲线、训练和测试误差之间的差异等,最后您所面临的只是存在于每个模型中的偏差-方差-权衡。

https://en.m.wikipedia.org/wiki/Bias–variance_tradeoff

要回答您的问题,您不应仅依靠比较随机种子。

随机森林随着树木数量的增加而收敛,参见Breiman 2001论文。因此,如果您将树的数量(ntree)设置为无穷大,您将始终获得相同的准确度(或其他一些度量,如 logloss)。它只是因为您的树数量太少而变化很大(或者您的重采样策略(10-fold-CV)不稳定,可以通过更多重复来减少)。

在正常数据情况下(特别是如果数据足够大),您的准确性应该随着树木的生长而增长。因此,我不会使用 100 种不同的种子进行训练,而是使用 actual_ntree * 100 甚至更多来训练一个 randomForest。

在某些包中,您还可以看到随着树数量的增加而提高的准确性。

为了获得更快的评估和可能的调整,您可以使用通常在标准包中实现的袋外估计(如 R 中的 randomForest)。如果树的数量足够大,它们通常与 10 倍 CV 一样好(并且更稳定)。