构建具有多个小时间序列的回归模型

机器算法验证 机器学习 时间序列 自习
2022-04-13 19:18:43

对于个人项目,我已经建立了一个曲棍球运动员统计数据集。我正在寻找有关如何为我的预测模型建模的见解(大声笑)。该模型将用于预测球员在之前的表现中预计会产生多少分。

为了简单起见,让我们只保留我的数据集的三个最“重要”的列(还有比这更多的功能,但我认为它们不是解决问题所必需的):

PlayerId | Points | Year

现在,我尝试使用我知道的机器学习算法,但是:

  • 数据的行为有点像时间序列。假设我有 10,000 名球员,这些球员多年来都有统计数据(有时从 2005 年到 2017 年,其他人从 2009 年到 2010 年,你明白了)。考虑到行之间的这种关系(例如 playerId 1,Year 2005 和 playerId 1,Year 2006),我不能使用我知道的大多数算法,因为这个逻辑会被抛到窗外,我认为这是一个重要的逻辑。

  • 考虑到某些行的数据随时间相关,我认为我不能真正将其建模为独特的时间序列。每个玩家的数据集中有小的时间序列,但我当然没有足够的数据来处理它(每年每个玩家一行,最多我可能有 15 行可能为一个玩家,这是'不足以建立一个好的预测)。

考虑到这两点,我几乎没有解决方案。

我考虑过将所有行合并为一个,所以我有:

PlayerId | Points2005 | Points2006 | etc..但这没有多大意义,因为我们失去了时间的概念。

我还考虑过我可以为所有玩家单独制作一个预测模型,然后使用我找到的权重来制作另一个预测模型,但我不确定结果如何。

我只是在寻找一个小技巧来推动我朝着正确的方向前进,无论是纯粹的统计相关还是机器学习算法。

1个回答

我会考虑一个混合模型,它具有职业生涯时间的影响(可能是一个允许非线性效应的加法/平滑项)和 的随机效应(time-in-career|player),它允许不同球员的模式变化。这并没有明确考虑上一年的积分数,但它似乎是一个合理的开始,并处理了时间方面和球员内部的数据分组。

这个大鼠生长曲线示例模型与您的示例有些不同(专注于对治疗的推断而不是对个体的预测;相对于您的数据,受试者数量较少,每个受试者的点数较多)但表明

mgcv::gam(points~careertime+s(careertime)+
    s(careertime,player,bs='fs'),
    data=dd, method="REML")

将是一个合理的第一个模型。您可能希望添加s(year,bs="re")包含日历年的随机影响,我鼓励您使用您拥有的任何其他协变量/分组信息(团队、年龄、...)