最近,我一直在使用 LightGBM 作为回归器,以便在一个包含 2 万个观测值和 40 个变量的数据集上进行预测。
我有两种模式,1)生产和2)测试。第一个只是用整个数据集训练一个模型。第二个对 80% 的数据集执行相同的操作,并对剩余的 20% 进行测试(使用 train_test_split 完成 80-20,来自 sklearn.model_selection,未使用种子)。
在这两种情况下,我都会在执行结束时显示neg_mean_squared_error 。在整个数据集的第一种情况下,在第二种情况下,我得到两个值(训练和测试)
我很震惊地看到,虽然在第一种情况下我的错误大约是 -10,但在第二种情况下,值是 -5(训练)和 -5.3(测试)。我的目标变量的平均值可以是 80。我预计会失去准确性,因为我用较少的数据进行训练,然后我在不同的样本上进行测试。
问题:有任何理论上的原因可以解释 80-20 测试比完整数据情况下获得“更好”的 neg_mean_squared_error 吗?或者它必须是我的代码中的(偷偷摸摸的)错误?