正则化误差与过拟合

数据挖掘 随机森林 机器学习模型 过拟合 正则化
2022-03-02 08:52:02

我从 50 个不同的块中收集了数据,然后将 49 个块中的数据合并到一个数据集中,并保存了 1 个块中的数据以用于测试目的。

然后我使用 train_test_split(sklearn) 将合并的数据集从 49 个块中拆分出来。然后使用训练数据通过交叉验证训练随机森林回归器,并在训练(0.99)和测试集(0.94)上获得良好的模型得分(来自 sklearn 随机森林回归模型的 R^2 得分)。但是当我在 1 块的保留数据上使用经过训练的模型时,性能非常糟糕(-1.0)。

如果我合并所有 50 个块的数据,然后使用训练测试拆分并保留 60% 的数据作为训练集、20% 作为测试集和 20%(保留集),我从所有三组中都得到了很好的分数。训练集分数(0.98),测试集(0.93)和保留集(0.96)。

关于可能导致这种情况的任何直觉?以及关于如何提高 1 块看不见的数据的模型分数的任何建议?

1个回答

欢迎来到社区!

我想到了几点:

  • 检查每个块中的数据量,然后检查它们的分布。第一次体验可能是由于保留块中缺少足够的数据(即您实际上只是经过训练但未验证导致完全过拟合)或具有完全不同的分布(即块之间的差异不是随机的)。
  • 确定你所说的“交叉验证”。如果您将 49 个块拆分为训练集和测试集,则它是交叉验证的最小版本。49个区块应该被分割成k不同的集合,每次他们中的一个扮演测试集的角色,然后最终的错误是对所有的平均k运行。这在统计上更稳健(第一次经验表明统计推断的稳健性存在问题)
  • 第二个实验使用 100 个块而不是 50 个(第一个实验中的其他 50 个块在哪里?)所以首先,你有更多的数据,其次,你没有根据“块”(无论它们是什么)进行拆分,而是将所有块合并并随机选择训练、验证和测试。此过程降低了训练/有效/测试中分布偏差的危险,并且也可能表明这些“块”在统计上是不同的(它们的分布)

希望它有所帮助。请分享您的结果,以便每个人都可以从中学习。

祝你好运!