时序数据的表征学习方法(三)——signal2vec,基于连续数据的word2vec嵌入

  • 2020 年 12 月 16 日
  • AI

连续数据的word2vec

在时间序列问题中,模型的性能会受到数据表示的严重影响。 表示的类别可分为

1、数据自适应;

2、非数据自适应;

3、基于模型

4、数据表示。

第一种方法包括自适应分段常数逼近[13]、奇异值分解[15]、符号自然语言[23]、符号聚合逼近模拟[16](???我都没了解过)

第二种方法包括:离散小波变换[5],谱DFT[9],分段聚合逼近[14]和可指数分段线性逼近[6];

第三种方法,基于模型的表示包括了基于马尔可夫模型、隐马尔可夫模型[19]和自回归移动平均[7]等统计数据。

最流行的数据表示方法是裁剪[24]。

考虑到这里的翻译可能不是很准确,还是贴一下原文吧:

In time series problems, regardless the approach, the performance of the solution is heavily affffected by the representation of the data. The categories of representations can be classifified into data adaptive, non-data adaptive, model-based and data dictated. The fifirst one includes techniques such as Adaptive Piecewise Constant Approximation [13], Singular Value Decomposition [15], Symbolic Natural Language [23], Symbolic Aggregate ApproXimation [16]. Approaches, which belong to the second representation, are: Discrete Wavelet Transform [5], spectral DFT [9], Piecewise Aggregate Approximation [14] and Indexable Piecewise Linear Approximation [6]. Model based representations are based on statistics such as Markov Models and Hidden Markov Model [19] and Auto-Regressive Moving Average [7]. Finally, the most popular data dictated approach is Clipped [24]

signal2vec借鉴了word2vec的思想,是word2vec的第一次向连续型的数据进行embedding的尝试。

signal2vec的思想如上,就是:

1、对连续数据进行离散化;

2、离散化之后做skip-gram的word2vec。

离散化的方法,使用kmeans进行时间序列数据的聚类,kmeans的聚类数根据轮廓系数(silhouette score),在一定的k的范围内寻找最优值,

原论文写的不是很清楚,代码也没开源。。真的服了。

下面是看了两遍之后的理解,我们以原论文中的基于时间序列的多分类问题为例来阐述:

我们的任务是识别了12种不同的器具:烤箱、微波炉、洗碗机、冰箱冰箱、水壶、洗衣机烘干机、烤面包机、锅炉、电视、吹风机、吸尘器和灯,数据是这些家用电器的电信号,作者上面说过,将信号进行离散化之后大致复合zipf’s law,

齐夫定律可以表述为:在自然语言语料库里,一个单词出现的频率与它在频率表里的排名成反比。所以,频率最高的单词出现的频率大约是出现频率第二位的单词的2倍,而出现频率第二位的单词则是 出现频率第四位的单词的2倍。这个定律被作为任何与power lawprobability distributions有关的事物的参考。 这个“定律”是哈佛大学语言学家George Kingsley ZipfIPA[zɪf])发表的。

这个和word2vec的基本假设是比较吻合的,大部分的电信号都是在一个较小正常的频率范围内波动,离散化之后其分布遵循zipf’ law。


看到这边,发现这个问题涉及到另外一个比较复杂的领域,即——时间序列聚类,我们要先通过一些合理的方法对时间序列进行聚类,从而实现离散化,离散化之后,就和word2vec的场景一样了,一段序列数据被离散化之后就变成了一个句子,然后剩下的过程就和文本分类基本一样了。

关键是时间序列的聚类,我没怎么研究过,所以,pass。

理解signal2vec的思想就行,先离散化,然后剩下的就交给nlp吧。。。。