我们讨论过有关时间序列的分段压缩表示的基本概念,本文将讨论前面对振幅波动较大的时间序列进行相似性查询时,现有的下界算法往往难以很好地拟合时间序列。针对这一问题,本文提出一种基于信息熵的动态时间弯曲下界算法 。
方法首先求原序列的差值符号化序列,将差值符号序列分为等宽度时间窗口的子序列,在子序列段内求信息熵。通过信息熵在整个序列中的比例确定序列中分段点数量的分布情况,其次查找子序列段内距离首尾端点距离最远的点即重要点作为分段点,最后将所有分段点依次直线连接,将连接成的折线拟合原序列曲线,即达到拟合的目的。
序列段内信息熵 序列点的值之间差值符号化:
为了求得序列信息熵,需要将原序列差值序列符号化处理。在时间序列 W 中,对于某一序列点值 vi ( 除首序列点和尾序列点外) ,用该序列点的后序列点的值 vi + 1 减去该序列点的值 vi 所得的值,即 vi + 1 - vi = Q。该序列点值 vi 减去前序列点值 vi - 1所得的值,即 vi - vi - 1 = P。比较 Q 与 P 两值的符号,具体操作如下所示:
a) 如果符号相异( P × Q < 0) ,在该点相应位置置为“1”;
b) 如果符号相同( P × Q > 0) ,比较 Q 和 P 的比值是否大于 R1 或小于 1 /R1,则在该序列点位置处置为“1”;
c) 若其中 P 或 Q 为零,另一个 Q 或 P 的绝对值大于 R2 或小于 1 /R2,则在该序列点位置处置为“1”;
d) 否则,置为“0”。依次检查序列中所有序列点,将会产生“1”和“0”组成的符号化序列 S。
求各序列段的信息熵 :
将时间序列 S 中的序列点划分为 k 段等宽度的时间序列窗口。设时间序列长度为 L,则子序列段的长度均为 L /k。在这些等宽度的子序列窗口中,根据 1) 产生的新序列 S,计算子序列段中“1”的数量之和 C1 和“0”的数量之和 C0,利用各子序列段内“1”的数量之和、“0”的数量之和、子序列段的长度,求得子序列段的信息熵。
信息熵能对系统有序化程度进行度量,当系统越有序时信息熵就越低,反之亦然。因此针对时间序