我有一套关于个人在1960、1970、1980和1990年的表现的数据,例如,对一群从事40年职业的棋手来说,这几年的国际象棋评分。我被要求建立一个基于历史的模型来预测1990年的表现。因此,我建立了一个模型,所有的数据,除了1990年作为输入和1990年的数据作为期望的输出。如果我用1990年的数据来预测1990年的数据,这是泄漏吗?如果我将数据分割成训练/测试(在训练和测试中的不同个体),测试预测是否有效?
发布于 2023-05-29 18:51:12
如果我的理解是正确的,你的问题的表述如下:
你有3个自变量(60,70,80),你想用它们来预测90's变量的值。
通过在所有玩家上训练你的模型,模型基本上已经看到了所有可能的输入。对于一个好的模型来说,达到接近100%的精度是微不足道的。
为了公平地检查您的模型,您需要保留一些行(播放机)的“秘密”,然后使用它们作为测试样本,用未知的数据测试模型。
如果您这样做,您将对模型的性能有一个更好的了解(有更少的培训数据的权衡)。但是这样做是强制性的,否则对已知数据(模型)的测试结果就毫无意义了。
更新:如果你已经在做火车/测试分裂,仍然有一个方法有泄漏。如果你在测试集上做预测,然后利用你从中学到的洞察力来改变你的模型,这确实是泄漏。
对付这种情况有两种方法。一种方法是通过将测试集进一步拆分为验证和测试,将所有的过程和修复都使用其验证准确性作为成功的度量,然后(一旦您说“我的模型准备好了”)对测试集做最后的预测,以判断未知数据的性能。
如果您的数据不是那么多,而且进一步拆分它也不太实际,您也可以尝试在培训集上进行交叉验证。
https://datascience.stackexchange.com/questions/121832
复制相似问题