首页 > 解决方案 > 如何在面板数据上使用 LSTM?

问题描述

我有几年来许多人的健康声明面板数据。每行包含提出某种医疗索赔的个人的记录,以及有关个人/索赔的一些信息,例如年龄和诊断。我的数据的一个小样本如下所示:


+----+----------+---------------------+-------------------+-------+-----+
| ID |   Date   |        Diag1        |       Diag2       | Diag3 | Age |
+----+----------+---------------------+-------------------+-------+-----+
| A  | 12/1/19  | obesity             | hi blood pressure |       |  59 |
| A  | 12/14/20 | high blood pressure |                   |       |  59 |
| A  | 2/1/21   | High blood pressure |                   |       |  59 |
| B  | 5/1/19   | arm pain            | broken wrist      |       |  34 |
| B  | 5/6/19   | arm pain            | broken wrist      |       |  34 |
| C  | 6/6/19   | headaches           | trouble sleeping  |       |  41 |
| C  | 6/9/19   | headaches           | trouble sleeping  |       |  41 |
| C  | 7/1/20   | trouble sleeping    |                   |       |  41 |
+----+----------+---------------------+-------------------+-------+-----+

鉴于当前日期,我正在尝试使用 LSTM 来预测个人(由 ID 标记)是否可能会在不久的将来(比如 3 个月)发生另一次诊断。因此,例如,如果今天是 2021 年 2 月末,那么我有兴趣找到从现在到 2021 年 5 月末之间可能至少进行一次访问的人。

但是,我不知道 LSTM 是否可以根据每个主题进行调整。我见过 LSTM 用于预测股票价格,但这些示例只有一只股票要检查,而我有多个 ID。Keras Sequential LSTM 会自动处理这种类型的面板数据吗?我认为我不应该删除 ID 列,因为我正在寻找的输出应该或多或少地给我一个概率,即具有医疗索赔历史的特定人将在不久的将来访问。

标签: pythonkeraslstmpanel-data

解决方案


是的,LSTM 应该可以工作。但是 keras 不会自动处理你的数据。您需要将数据转换为诊断列表:

input = [
  [[1, 2], [2, 0], [2, 0]],
  [[3, 4], [3, 4]],
  [[5, 6], [5, 6],[6, 0]]
]
# I used only two features (two diagnosises) for simplicity.
# You should add other features: [12/1/19, 1, 2, 0, 59]

# shift input to the left to get labels so that the next features are predicted on the every step

labels = [ 
  [[2, 0], [2, 0], [0, 0]],
  [[3, 4], [0, 0]],
  [[5, 6],[6, 0], [0, 0]]
]

推荐阅读