序列模型
序列数据
现实生活中很多数据都是有时序结构的,比如电影的评分(既不是固定的也不是随机的,会随着时间的变化而变化)
在统计学中,对超出已知观测范围进行预测称为外推法(extrapolation),在现有的观测值之间进行估计称为内插法(interpolation)
统计工具
对序列数据怎么建模
![](https://i-blog.csdnimg.cn/blog_migrate/64d37b57b80af60fc0e197324127c114.png)
乘法定理P(AB)=P(B/A)P(A)
不独立的随机变量:变量之间存在某种关联(在此之前都是假设独立的随机变量,变量之间是没有关联的)
![](https://i-blog.csdnimg.cn/blog_migrate/5d5fa519d5721749e904f912d8324457.png)
p(x)公式其实就是全概率公式
黄色表示从 x1 一直到 xT 的方向(xi 的概率依赖于 x1,...,x(i-1) 的概率,i >= 2 ),也就是说如果想要知道一个时序序列 T 时刻发生的事情,则需要知道在 T 时刻之前所有时刻发生的事情
红色表示先计算 xT 再依次算到 x1(也就是黄色的反方向,xi 的概率依赖于 x(i+1),...,xT 的概率,i <= T ),即反序,也就是已知未来 T 时刻发生的事情,反推出过去所有时刻所发生的事情(这种情况在某些时候是成立的,但是在物理上不一定可行,对于真实的事件,无法从未来的事件反推过去的事件,因为未来所发生的事件是根据过去所发生的事件所产生的)
序列模型
![](https://i-blog.csdnimg.cn/blog_migrate/7d6a8fffbef97720500a6a551dc6e238.png)
核心思想
如何计算 f(x1,x2...x(t-1)):在过去t-1个数据上训练一个模型然后来预测下一个模型
给定f(x1,x2...x(t-1)) 后如何计算p(xt|f(x1,x2...x(t-1)))
自回归模型:对见过的数据建模
解决方案
方案A马尔可夫模型
在自回归模型的近似法中,使用 x(t-1) , ... , x(t-τ),而不是 x(t-1) , ... , x1 来估计 xt ,如果这种假设是成立的,也就是近似是精确的,可以称为满足马尔科夫条件
![](https://i-blog.csdnimg.cn/blog_migrate/b7ce8258040bc5fffbaea5f17e24d8f7.png)
假设当前数据只跟 τ 个过去数据点相关(每一次预测一个新的数据,只需要看过去 τ 个数据就可以了,τ 可以自由选择,τ 越小模型越简单,τ 越大模型越复杂),这样假设的好处是 τ 的值是固定的,不会随着时间的增大而增大(这样做也比较符合现实的逻辑,过去事件距离预测事件的时间越长,他们之间的关联程度就越小)
可以在过去数据上训练一个 MLP 模型就可以了:假设 x 是一个标量,f 的作用就是每次给定一个 τ 层的特征(这个特征是一个向量),然后再去预测一个标量
给定 τ ,使得数据由变长数据变成了定长数据
方案B潜变量模型
![](https://i-blog.csdnimg.cn/blog_migrate/86824ef1bd7641df6387838d042005a7.png)
引入一个潜变量 ht 表示过去信息 ht = f( x1 , x2 , ... , x(t-1) ),这样的话, xt = p( xt | ht )
一旦引入了潜变量 h ,h 是可以不断更新的,h 与前一个时刻的潜变量和前一个时刻的 x 相关,等价于建立了两个模型:一个模型是根据前一个时刻的潜变量 h 和 x,计算新的潜变量 h' ;第二个模型是根据新的潜变量 h' 和前一个时刻的 x ,计算新的 x。这样就拆分成了两个新的模型,每个模型只和 1 个 或者 2 个模型相关,使得计算更加容易
自回归模型
为了实现对 t 时刻的 x 值的预测,可以使用回归模型
问题:
输入数据的数量,输入 x(t-1) , ... , x1 本身因 t 而异,输入数据的数量会随着数据量的增加而增加
如何使这个计算变得容易处理
如何有效估计
![](https://i-blog.csdnimg.cn/blog_migrate/6783ab5d0b2db0948cf140fa8a7c98af.png)
展开。简单地说,它归结为以下两种策略。
第一种策略:自回归模型
假设在现实情况下相当长的序列 x(t-1) , ... , x1 可能是不必要的,因此只需要考虑满足某个长度为 τ 的时间跨度即可,即使用观测序列 x(t-1) , ... , x(t-τ)
这样做的好处是保证了在 t > τ 时,参数的数量是固定的
之所以叫做自回归模型是因为该模型是对自己执行回归
第二种策略:隐变量自回归模型
![](https://i-blog.csdnimg.cn/blog_migrate/85482689b4e8df5992e855aef197091f.png)
隐变量自回归模型中保留了对过去观测的总结 ht ,并且同时更新预测 xt_hat 和总结 ht
xt_hat = P( xt | ht )
ht = g( h(t - 1) , x(t - 1) )
因为 ht 从未被观测到,所以这类模型也被称为隐变量自回归模型
以上两种情况都存在一个问题:如何生成训练数据?
经典方法:使用历史观测预测下一个未来观测
但是时间并不是停滞不前的,总会有未来的观测所对应的时间变成历史时刻
常用假设:虽然特定值 xt 可能会改变,但是序列本身的动力学不会改变
新的动力学一定受新的数据影响,不可能用目前所掌握的数据来预测新的动力学(统计学家成不变的动力学为静止的( stationary ))
整个序列的估计值计算如下
![](https://i-blog.csdnimg.cn/blog_migrate/7519c7f9f5c2d70e2b82fd38543c81bd.png)
注意处理的对象是离散对象,对于离散的对象,需要使用分类器来估计 P( xt | x(t-1) , ... , x1 )
补充
如果将一个序列转换为模型的“特征-标签”(feature-label)对,如果将时间跨度固定为 τ ,将数据映射为数据对 yt = xt 和 xt = [ x(t-τ) , ... , x(t-1) ],这时候会发现原有的数据样本少了 τ 个(因为按照这种映射关系,序列中的前 τ 个样本并没有足够的历史数据作为 xt 中的元素),一般所采用的办法有两种:
在序列足够长的情况下,可以直接将前面的 τ 项丢弃(这里的丢弃指的是不再作为 yt ,也就是说 t > τ;这些项还是可以作为 xt 中的元素)
用零填充序列
总结
时序模型中,当前数据跟之前观察到的数据相关
自回归模型使用自身过去数据来预测未来
马尔科夫模型假设当前只跟当前少数数据相关,每次都使用固定长度的过去信息来预测现在,从而简化模型
潜变量模型使用潜变量来概括历史信息,使得模型拆分成两块:一块是根据现在观测到的数据来更新潜变量;另一块是根据更新后的潜变量和过去的数据来更新将来要观测到的数据
内插法(在现有观测值之间进行估计)和外推法(对超出已知观测范围进行预测)在实践的难度上差别很大。因此对于已有的序列数据,在训练时始终要尊重其时间顺序,最好不要基于未来的数据进行训练
序列模型的估计需要专门的统计工具,两种比较流行的是自回归模型和隐变量自回归模型
对于时间是向前推进的因果模型,正向估计通常比反向估计更容易
对于直到时间步 t 的观测,其在时间步 t+k 的预测输出是“ k 步预测”。随着时间 k 值的增加,会造成误差的快速累积和预测质量的急速下降