如何将纵向数据呈现给 LSTM 以进行多类预测

数据挖掘 深度学习 预测建模 lstm
2022-02-27 12:51:48

我需要使用纵向健康记录数据来实现一个深度学习算法来预测一个称为“实体”的序数值。我阅读了一些文章和指南,但找不到关于如何组织输入数据的清晰解释或示例;我唯一了解的是,我需要使用专为此类问题设计的 LSTM 节点。为了澄清,让我举个例子,假设我有这张表:

ID N1 C1 B1 出去
2 25 3 0 1
2 32 4 1 2
2 52 1 0 1
3 12 2 1 2
3 56 4 0 1
3 73 3 1 3
3 12 2 1 2

该表包含不同类型的变量,例如数值、基数和布尔值;我需要教我的算法用纵向数据预测未来的输出(例如,如果我输入 ID=2 的前两行,则输出应该是 1,它位于 ID=2 的第三行)。
ID相同的行是来自同一个人的不同数据,在不同时间检查。
我知道 LSTM 在需要捕捉时间关系并且输入处于适当状态(样本、时间步长、特征)时是有用的层;鉴于我对如何处理和建模训练数据几乎没有疑问:

  1. 我的数据集在时间步长维度上不是同质的(人可能有不同的行数),但我认为有不同时间步长的张量是可以的,对吗?
  2. 如果上一个问题的答案是肯定的,我可以用同一患者的增长维度张量训练我的网络吗?例如(请注意,我想预测未来的出局):
train1 x:[25, 3, 0] -> label:2;  
train2 x:[[25, 3, 0],[32, 4, 1]] -> label:1;

奖金)因为这是一个复杂的问题,我什至想知道我是否以错误的方式看待它,我应该把它当作一个有点回归问题,就像那个例子中的那个https://machinelearningmastery.com/multivariate-time-系列预测-lstms-keras/

为了对问题有不同的看法,假设医生通过查看当前情况和以前的访问对 Alice 进行分类,我想在算法中实现这种行为,这样当我有 Bob 当前情况和临床病史时,我可以做出预测对他来说也是基于我从爱丽丝的例子中学到的“规则”。我在 BONUS 问题中表达的另一种行为是,如果我想重现医生的学习模式,该模式查看如下图所示的图表,并学习如何预测另一位患者的 y 值趋势基于在 Alice 的图中学到的“规则”。 在此处输入图像描述 我正在使用 Keras 在 Python 上实现它,但我陷入了这个预处理阶段,无法继续。

1个回答

使用 LSTM,其中输入是一个序列,特别是该患者的记录序列。你可以训练 LSTM 来预测你想要的任何东西——例如,下一步。在 LSTM 中,序列通常是固定长度的(所有人的长度相同;您填充较短的序列);序列的每个元素都是相同长度的特征向量(序列中每个元素的长度相同)。数据集中的每个人都为您提供至少一个 LSTM 训练实例。

如何编码输入超出了这个问题的范围,但您可以阅读标准方法;它不是特定于 LSTM。例如,您可以使用 one-hot 向量对分类变量进行编码,并直接对连续变量进行编码。对于输出也是如此,但您需要选择适当的损失函数(例如,分类变量的交叉熵损失、连续值的 MSE 等)。这些都不是 LSTM 特有的,因此请阅读神经网络是如何完成的,同样的方法也将适用。

您可能需要大量数据才能使 LSTM 正常工作。