考虑几个月来构建实验/训练数据

数据挖掘 回归 毫升 理论 实验
2022-03-01 18:23:22

我们使用一整年的数据来预测某个目标变量。该模型的工作方式类似于数据 - OneHot 编码分类变量 - MinMaxScaler - PCA(从 15k 中选择 2000 个组件的子集) - MLPRegressor。当我们进行 ShuffleSplit 交叉验证时,一切都很复杂(r^2 得分高于 0.9 且错误率低),但是在现实生活中,他们不会使用相同格式的数据(例如全年的数据),而是当月到期的子集(例如,在 3 月,他们需要算法来预测 3 月到期的行),此时,算法失败。

期望我们有一些我们正在训练的数据(例如,2018 年 12 月 - 2019 年 12 月),然后我们需要预测 2020 年 1 月到期的项目(目前尚不可用)。同样,如果我们进行随机的 train-test-val 拆分,r^2 分数很好,但是团队负责人对此并不满意,因为他说现实生活中的用例是我们在 2019 年的数据上进行训练,然后每月进行预测,所以他希望我们训练的不是所有数据,而是 2018 年 12 月到 2019 年 11 月的数据,然后验证 2019 年 12 月的数据。

我看到这在方法上是不正确的,因为我们正在训练具有不同属性的数据(全年数据与某个月的到期数据),这反映在验证分数上。如果我隔离某个月份来模拟现实生活场景(例如,训练 11 个月的数据并在某个特定月份进行测试),根据月份,我们得到的 r^scores 介于 0.3 和 0.7 之间,具体取决于隔离的月份(其中如果从整个数据集中随机抽样,则与 0.9 相差甚远)。

我想不通的是,我们如何构建这个模型,以便测试数据(在特定月份到期的项目)具有与训练集(其余月份,或者可能是 12 个月,包括 1 个月)相同的属性从去年开始),同时保留全年的信息?或者我们应该每个月做 12 个模型?

1个回答

听起来您的问题是根据历史数据预测特定月份的值。这可以建模为时间序列问题。

另外,您还说数据策略会随着时间而改变。这意味着您不能做出静止的过程假设