HMM - 总体概念和策略

问题描述 投票:0回答:1

我是数据科学的新手,正在尝试处理时间序列上的 HMM - 我遇到了一些问题,我觉得我必须重新考虑我的总体策略。我很想得到一些关于我的想法的反馈!

我的数据:我有时间序列数据,其中包含每小时的一系列测量值。该数据具有很强的日节奏 - 夜间的低值和每天下午的峰值。此外,我还有有关时间点的温度、降雨量等的其他信息。

我的目标:在序列上训练 HMM 并从模型生成合成数据。重要的是,原始数据中的昼夜节律也被合成数据捕获。

到目前为止我所做的:我从时间序列中提取特征(将日期编码为余弦波和正弦波)并使用 python 库 pomegranate 训练多元 HMM。在原始时间序列上映射状态看起来不错 - 有些状态是夜间的特征,有些是早上/下午的特征,等等。我还从该模型生成了示例数据。

我的问题:生成的合成样本数据没有显示典型(且重要)的每日节奏/模式。

我对问题的理解:HMM的特点是初始状态、发射概率和隐藏状态之间的转移概率。每个指定的 n+1 仅取决于 n 的状态。因此,尝试用非常简单的语言解决问题 - 该模型无法捕捉 24 小时的节奏,因为它只依赖于一个先前的状态。

我对可能的改进的想法:

我可以对时间序列进行切片并在数百天内重新训练模型,而不是训练几年的序列。然后,我会生成天并将它们添加到所需长度的序列中。

半隐马尔可夫模型:我读到这些模型的存在是为了确保一种状态可以持续几个时间点。据我了解,这无助于保持24的节奏。

Harmonic HMM:我在一篇论文中看到了这一点(https://royalsocietypublishing.org/doi/10.1098/rsif.2017.0885)。我不明白它是如何实现的……但据我所知,它的目的是在转换矩阵中包含一个昼夜节律振荡器。

我的问题: 您能否就我如何进行提供一些反馈?我将非常感谢任何想法、想法、解释。切换到另一个模型不是一个选择 - 这个问题是一个更大项目的一部分,最终应该比较不同的方法。所以我的首要任务是提出使用 HMM 可以获得的最佳解决方案。

提前非常感谢您!!

hidden-markov-models
1个回答
0
投票

正如您正确诊断的那样,问题在于简单的 HMM 没有任何内置机制来解释每日周期。 Huang 等人使用的一种解决方案。 (2018),是使用非齐次 HMM,其中一天中的时间作为协变量包含在转移概率矩阵中。也就是说,您可以允许转移概率取决于一天中的时间。据推测,根据您描述数据的方式,从“高”状态转变为“低”状态的概率在晚上最高,从“低”状态转变为“高”的概率为早上最高。这将捕获循环,并且应该在模拟中产生更真实的模式。

另一个实际问题是,应该使用循环函数对转移概率和一天中的时间之间的关系进行建模,以确保它在午夜“循环”。

您可以查看以下论文,其中讨论了这个问题: Feldmann et al. (2023),隐马尔可夫模型中 Diel 和其他周期性变化的灵活建模,统计理论与实践杂志

如果您不反对使用不同的包进行分析,您还可以查看以下论文的附录C,其中解释了如何重现Huang等人的分析。 (2018) 使用 R 包 hmmTMB:Michelot (2022)。 hmmTMB:R. arXiv 预印本 arXiv:2211.14139 中具有灵活协变量效应的隐马尔可夫模型。特别是,hmmTMB 可以轻松地使用样条曲线对灵活的循环模式进行建模。该小插图描述了贝叶斯方法,但您可以通过忽略有关先验的部分并使用

hmm$fit()
而不是
hmm$fit_stan()
来使用最大似然估计。 (自我推销免责声明:我是 hmmTMB 开发者。)

© www.soinside.com 2019 - 2024. All rights reserved.