#TSer#

SAX(Symbolic Aggregate approXimation,符号集合近似)算法是将时间序列转换为字符串的一种方法,于2007年首次发表于数据挖掘领域的顶级期刊《Data Mining and knowledge discovery》,论文题为:Experiencing sax:a novel symbolic representation of time series

这是一种符号表示,展示了它在时间序列任务上的实用性,表示的独特之处在于它允许降维,它还允许在符号表示上定义距离度量。该符号表示下界对应于原始数据上定义的流行距离度量。它允许人们在有效操作的符号表示上运行某些数据挖掘算法,同时产生与对原始数据进行操作的算法相同的结果。

列表转化为字符串_unicode字符列表怎么输入_串是字符的有限序列

01

SAX的特性

1. 可以进行数据降维。

2. 可以在符号表示上定义距离度量,并且满足下界定理。

3. 可以进行数据压缩

4. SAX保留了原始时间序列的大体形状。SAX是一种符号表示法,因此字母表可以存储为位(bits)而不是双精度浮点数,从而节省了大量空间。

02

SAX算法

表示方法

1

SAX将任意长度n的时间序列缩减为任意长度w的字符串。其中w通过SAX方法可将时间序列表示结果保存在一个字母表中。字母表大小是任意整数a。a>2.

列表转化为字符串_unicode字符列表怎么输入_串是字符的有限序列

图 | 文章使用的代号

表示过程及要点

2

首先将数据转换为分段聚合近似(PAA)表示,然后将PAA表示符号化为离散字符串。

先转换为PAA,再将PAA符号化,由此可以利用PAA的降维能力列表转化为字符串,满足下界定理(Lower Bounding)。时间序列之间由PAA表示的距离小于欧氏距离,由SAX表示的距离又小于由PAA的距离。

03

数据降维

将n维时间序列

转换为w维的向量

。其中,第i个

是按照下式计算:

unicode字符列表怎么输入_串是字符的有限序列_列表转化为字符串

为了将n维原始的时间序列向量降到w维,将原始时间序列向量划分为w个片段,

是第i个片段的均值。将时间序列从n维减少到w维,也就是说数据被分成w个相等大小的 “帧”。

其中,将n/w称为压缩率,必须保证为整数。

图 | 降维成8帧

04

离散化

将每个时间序列归一化,然后将其转换为PAA表示。归一化时间序列具有高斯分布,因此方便实现时间序列的离散化。

通过求取使得高斯分布被划分成任意数量等概率区间的断点序列B,然后通过断点列表B和PAA近似序列值完成符号化。断点列表的a-1个值对应标准正态分布的随机变量值。可在统计表中查询。任意相邻两个断点之间对应的高斯分布概率值相等。

串是字符的有限序列_unicode字符列表怎么输入_列表转化为字符串

图 | 高斯分布形成断点

断点列表(Breakpoints):断点列表是有序的数字序列

,其中

之间对应的高斯分布的概率值相对间隔为1/a 。

列表转化为字符串_unicode字符列表怎么输入_串是字符的有限序列

分别表示-∞和+∞。

获得断点后,可以对时间序列进行离散化。首先得到时间序列的PAA,小于最小断点的所有PAA系数被映射到符号“a”,大于或等于最小断点并且小于第二小断点的所有系数被映射到符号“b”,以此类推。

图 | 符号表示

单词(word)列表:将表示一个子序列的符号的连接称为单词。长度为n的子列C可以表示为一个

,用alphai代表字母表中的第i个元素,从PAA近似C ̅到单词C ̂的映射满足下式:

列表转化为字符串_串是字符的有限序列_unicode字符列表怎么输入

05

距离度量

时间序列常用的距离度量是欧几里德距离:

列表转化为字符串_unicode字符列表怎么输入_串是字符的有限序列

对时间序列降维后,特征空间查询中容易出现漏报(false dismissals)的问题。漏报指原始空间中两点小于阈值δ,但降维后两点距离大于δ,导致没有报告查询结果。Faloutsos等人提出了下界(Lower Bounding)定理来保证无漏报(false dismissals):

unicode字符列表怎么输入_列表转化为字符串_串是字符的有限序列

unicode字符列表怎么输入_列表转化为字符串_串是字符的有限序列

即降维后的特征向量之间的距离小于等于原始序列之间的距离。

引申到SAX中,即PAA表示的距离小于传统的欧氏距离,SAX表示的距离小于PAA表示的距离。将n维时间序列C列表转化为字符串,Q转换为w维的向量,得到PAA表示,将数据降维的公式代换到欧氏距离中得到PAA的距离度量公式:

列表转化为字符串_unicode字符列表怎么输入_串是字符的有限序列

进一步将数据转换为符号表示,这里定义了一个MINDIST函数,该函数返回两个单词(word)的原始时间序列之间的最小距离:

列表转化为字符串_unicode字符列表怎么输入_串是字符的有限序列

MINDIST即SAX的距离度量,就是用dist()函数进行了替换。该函数可由查找表实现。

图 | 三种距离

1. 两个时间序列之间的欧几里得距离可以表示为每对相应点的平方差之和的平方根。

2. PAA近似定义的距离度量可以看作是每对相应的PAA系数之间的平方差之和乘以压缩率的平方根的平方根。

3. 时间序列的两个SAX表示之间的距离需要查找每对符号之间的距离,将它们平方,求和,取平方根,最后乘以压缩率的平方根。

通过严谨的证明得到:欧氏大于PAA

列表转化为字符串_串是字符的有限序列_unicode字符列表怎么输入

PAA大于MINDIST

串是字符的有限序列_列表转化为字符串_unicode字符列表怎么输入

因此满足下界定理,不会发生漏报的情况。

这里存在一个优化的方向,即提高下界的紧密性(Tightness of Lower Bound,TLB)其通用表示为:

unicode字符列表怎么输入_列表转化为字符串_串是字符的有限序列

文中表示为:

串是字符的有限序列_unicode字符列表怎么输入_列表转化为字符串

显然TLB取值介于0和1之间,值越接近1,说明下界距离越接近真实距离度量,误差越小。

06

数据压缩

对于一个很长的时间序列T, 使用长度为n的滑动窗口去提取子序列。使用SAX方法提取时,如果第一次提取到序列aabbcc,那么就不再存储后续提取的序列aabbcc,而是将其映射到第一次出现该序列的索引位置处。这样就实现了数据压缩。

07

一些问题及解决方法

1. 对相对平稳的区域子序列进行归一化可能会放大噪声。

噪声

处理这个问题的方法为:如果归一化前序列的标准差低于ε,我们只需将整个单词分配给中间字母表(例如,如果a=5,则为cccccc)。

2. 假设n必须被w整除,这限制了对w的选择,如果n是质数,则是有问题的。

如果n不能被w整除,可以把不知道放在哪的那些点的一部分放在一起,而不是把整个点放在一个片段中。

点分成两部分