相比于ARIMA,隐马尔科夫模型在机器学习领域的应用更多也更加广泛,其原因还是在于该模型对很多现实中的序列有良好的解释性和预测性能,虽然本任务中并没有用到该方法,但是我们不妨一起讨论讨论这种方法,了解时间序列处理中的基本逻辑。
HMM模型
关于模型的介绍,推荐这个搞自然语言处理的哥儿们的博文,介绍的还是比较详尽的,并且比较深入浅出。
http://www.52nlp.cn/category/hidden-markov-model/page/4。
需要说明的是,HMM其实主要是三类问题:
1. 给出模型,估算可观测序列出现的概率;
2. 给定可观测序列,求最可能的隐含状态序列;
3. 给定可观测序列,求模型。
我们时间序列预测中要用到的是第三种问题,也是求解最为复杂的问题,因为仅仅拥有观测序列,需要预估整个模型,难度还是比较大的(模型分为初始隐含状态概率分布向量,状态转移矩阵,观测矩阵)。因为我们只有学习除了模型,才能对后续的序列进行预测。
HMM用于时间序列预测
时间序列其实是一个很广泛的概念,和ARIMA相比,HMM面向的其实是有限个状态之间转换的时间序列,说白了是一种离散的时间序列。
但是我们要预测的往往是一个连续的时间序列指标,那我们怎么来处理呢?一般我们仍然是通过对时间序列进行差分处理得到一个稳定的时间序列,然后我们对时间序列中的数值进行离散化(本质上是将时间序列值的变化进行归类),然后建立模型。
建模以后利用模型对接下来的隐含状态以及观测值进行预测,然后,如果我们建模的是N阶差分的时间序列,那么通过N次加成来还原真实的观测值。
下面我们就来讨论讨论我们在真实项目中的预测方法。