我将我的数据集拟合到随机森林分类器中,发现模型性能在不同的训练和测试数据拆分集之间会有所不同。正如我所观察到的,在 ROC 曲线下(由相同模型在相同参数设置下拟合)下的 AUC 将从 0.67 跃升至 0.75,并且基础范围可能比这更宽。那么这种现象背后的问题是什么以及如何处理这个问题呢?据我了解,交叉验证用于训练和测试数据的特定拆分。
不同的训练测试拆分之间的模型性能会有所不同吗?
数据挖掘
机器学习
随机森林
训练
2022-02-21 12:52:56
4个回答
您遇到的不是问题,而是所有分类器的固有属性。分类器的性能取决于训练集,因此性能会随着不同的训练集而变化。
因此,要找到特定分类器的最佳参数,您将需要改变训练和测试拆分(例如在交叉验证中)并选择达到最佳平均准确度或 AUC 的参数集。
最后,您将希望在另一个数据集(评估集)上测试经过训练的分类器,该数据集不是用于交叉验证的数据集的一部分。
很好的答案,但答案也取决于模型的使用。训练数据行切片的微小变化会导致验证集性能发生巨大变化,这降低了我对这是一个好模型的信心。使用交叉验证时,我会查看性能的差异来衡量是否存在幸运分裂或总体不稳定。我从不盲目地取交叉验证性能的最大平均值。
当我遇到一个模型与您描述的测量方式有显着差异时,如果该模型将在某些业务环境中使用,我可能需要声明一个问题。
我可能无法帮助业务了解模型的影响、在某些情况下使用模型的最佳方式、模型在长期内的预期性能(有些模型使用一次评分,有些评分数月或更长时间的数百万次)以及如何监控整个生命周期的性能。
在这些情况下,我可能需要从头开始 - 获取更多数据(行或列)、特征工程、重新定义我的目标(更广泛、更窄或不同以实现类似的业务结果),寻找不同的算法,或改变方式我们处理这个业务问题。或者接受风险,密切关注,并准备采取相应的行动。
再一次,这取决于模型的使用情况以及这可能是一个多大的问题。模型性能的差异有多大也是业务上下文敏感的。
大多数答案都无法解决以下问题:即使您将数据拆分为训练和测试,并对训练数据进行 k 折交叉验证以获得最佳模型,您的模型在测试数据上的性能将取决于初始“分割”训练和测试数据。我只能看到三个解决方案:
- 不要将数据拆分为训练和测试,而是对完整数据集进行 k 折交叉验证。
- 以某种非随机方式选择测试数据,例如最后一个数据集中的观察,如果数据具有收集时间戳,则逻辑是您希望最大限度地提高最新观察的性能。
- 使用带有交叉验证的完整数据集,但作为交叉验证的一部分对数据进行随机随机拆分
其它你可能感兴趣的问题
