不规则时间序列分类

数据挖掘 分类
2022-02-16 03:10:40

我正在尝试将大约 5000 个患者入院的时间序列分为两组。这包括大量的时间间隔(几个月或几年),然后是短期的大量数据点,即录取。每个数据点由一个代码(共 6000 个代码)或一个代码和一个数值组成。

并非每个时间序列都包含所有代码,而且代码非常稀疏。我试图查看每个代码中值的分布,但一无所获。在忽略任何相关的值之后,我尝试了一种简单的贝叶斯方法来查看每组代码的概率,并且做得更好。我现在没有主意了。我查看了 RNN,但认为数据中的长时间差距会影响它们的性能。

我查看了 GLM,但丢失的数据和高维度让我担心。

如果有人能提出一种可能提供一些牵引力的技术,我将不胜感激。

1个回答

如果我理解正确,单个患者将是一个特征,因此是一列,并且他们在短时间内与医院进行了互动;其次是在较长时期内没有交互(因此没有数据)。

由于每个时间序列上的数据都很稀疏,也许您可​​以研究更简洁地对信息进行编码的方法。我认为这种方法可能会产生相当好的结果,因为您的目标只是将患者分为两组。

这也许可以通过将您的基础数据转换为更有洞察力的统计数据来完成。例如,对于每个患者,您可以计算一些标准值:

  • 与(-出)医院互动的时间段数
  • 不同代码的数量(假设代码是指疾病或有用的东西?)
  • 活动期间的平均间隔长度
  • 活动期间的平均长度

对于上述情况,您可能需要启发式地定义什么是“活动周期”,例如 100 个时间步长内的 5 个数据点。否则,您将处于此类时期之间的“差距”。

这将大大减少数据点的数量,并且非常适合自己,并允许您使用更简单的分类方法,例如 GLM、逻辑回归(因为您只有两个类)或者可能是简单的前馈神经网络。

这个想法是在这个特征工程/预处理期间从数据中提取尽可能多的时间方面,这样正式的时间序列建模就变得不必要了。


如果您想尝试正常的时间序列,例如回归模型,您需要记住它们默认返回一个数值(回归问题与分类),因此您需要确定一个阈值以将患者置于其中一个两组。

尝试将丢失的数据简单地编码为数据点之间的时间步数是行不通的,因为每个患者都有不同的时间线,因此结果数据的维度会有很大差异,从而使许多模型无法使用。