时间序列分析 | 相似性度量基本方法

本文详细介绍了时间序列相似性度量的各种方法,包括时序相似性、形状相似性和变化相似性,以及相应的度量指标如闵可夫斯基距离、DTW动态时间规整距离和余弦相似度。这些度量方法在处理时间序列数据时,考虑了噪声、变形和不同长度序列的匹配问题。此外,还讨论了相关系数和互信息作为衡量时间序列相似性的方法,并提到了马氏距离在处理相关性和尺度变换中的作用。
摘要由CSDN通过智能技术生成

前言

时间序列相似性度量是时间序列相似性检索、时间序列无监督聚类、时间序列分类以及其他时间序列分析的基础。给定时间序列的模式表示之后,需要给出一个有效度量来衡量两个时间序列的相似性。时间序列的相似性可以分为如下三种:

1、 时序相似性

  • 时序相似性是指时间序列点的增减变化模式相同,即在同一时间点增加或者减少,两个时间序列呈现一定程度的相互平行。这个一般使用闵可夫斯基距离即可进行相似性度量。

2、 形状相似性

  • 形状相似性是指时间序列中具有共同的形状,它通常包含在不同时间点发生的共同的趋势形状或者数据中独立于时间点相同的子模式。两个时间序列整体上使用闵可夫斯基距离刻画可能不相似,但是他们具有共同相似的模式子序列,相似的模式子序列可能出现在不同的时间点。这个一般使用DTW动态时间规整距离来进行相似性刻画。

3、变化相似性

  • 变化相似性指的是时间序列从一个时间点到下一个时间点的变化规律相同,两个时间序列在形状上可能并不一致,但是可能来自于同一个模型。这个一般使用ARMA或者HMM等模型匹配方法进行评估。

时间序列相似性度量可能会受到如下因素影响:

  • 时间序列作为真实世界的系统输出或者测量结果,一般会夹杂着不同程度的 噪声扰动
  • 时间序列一般会呈现各种变形,如
    • 振幅平移
    • 振幅压缩
    • 时间轴伸缩
    • 线性漂移
    • 不连续点等
  • 时间序列之间可能存在不同程度的关联;

以上因素在衡量时间序列相似性度量的时候要根据具体情况进行具体分析。

闵可夫斯基距离

给定两条时间序列:
P = ( x 1 , x 2 , . . . x n ) ,    Q ( y 1 , y 2 , . . . y n ) P=(x_1,x_2,...x_n),\ \ Q(y_1,y_2,...y_n) P=(x1,x2,...xn),  Q(y1,y2,...yn)
闵可夫斯基距离的定义如下:
d i s t ( P , Q ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p dist(P,Q) = \left(\sum\limits_{i=1}^n|x_i-y_i|^p\right)^{\frac{1}{p}} dist(P,Q)=(i=1nxiyip)p1
注:

  1. p = 1 p=1 p=1时,闵可夫斯基距离又称为 曼哈顿距离
    d i s t ( P , Q ) = ∑ i = 1 n ∣ x i − y i ∣ dist(P,Q)=\sum\limits_{i=1}^n |x_i-y_i| dist(P,Q)=i=1nxiyi

  2. p = 2 p=2 p=2时,闵可夫斯基距离又称为 欧氏距离
    d i s t ( P , Q ) = ( ∑ i = 1 n ∣ x i − y i ∣ 2 ) 1 2 dist(P,Q) = \left(\sum\limits_{i=1}^n|x_i-y_i|^2\right)^{\frac{1}{2}} dist(P,Q)=(i=1nxiyi2)21

  3. p → ∞ p\rightarrow\infty p时,闵可夫斯基距离又称为 切比雪夫距离
    lim ⁡ p → ∞ ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p = max ⁡ i ∣ x i − y i ∣ \lim\limits_{p\rightarrow\infty}\left(\sum\limits_{i=1}^n|x_i-y_i|^p\right)^{\frac{1}{p}} = \max\limits_{i}|x_i-y_i| plim(i=1nxiyip)p1=imaxxiyi

  4. 闵可夫斯基距离模型简单,运算速度快。

  5. 闵可夫斯基距离比较直观,但是它与数据的分布无关,具有一定的局限性

    • 在时间轴伸缩和弯曲情况下无法给出确切的度量

    • 只能针对长度相等的时间序列

    • 如果时间序列 P P P 的幅值远远大于 Q Q Q 的幅值,那么得到的计算结果就会被时间序列 P P P 所过度作用。

    • 计算之前需要对数据进行尺度变化,例如减去均值并除以标准差,或者极大极小归一化

  6. 这种方法在假设数据各个维度不相关的情况下,利用数据分布的特性计算出不同的距离,如果数据维度之间数据相关,这时该类距离就不合适了!

余弦相似度

给定两个时间序列:
P = ( x 1 , x 2 , . . . x n ) ,    Q ( y 1 , y 2 , . . . y n ) P=(x_1,x_2,...x_n),\ \ Q(y_1,y_2,...y_n) P=(x1,x2,...xn),  Q(y1,y2,...yn)
余弦相似度如下:
D c o s ( P , Q ) = ∑ i = 1 n x i y i ∑ i = 1 n x i 2 ∑ i = 1 n y i 2 D_{cos}(P,Q) = \frac{\sum\limits_{i=1}^n x_iy_i}{\sqrt{\sum\limits_{i=1}^nx_i^2}\sqrt{\sum\limits_{i=1}^ny_i^2}} Dcos(P,Q)=i=1nxi2 i=1nyi2 i=1nxiyi

动态时间规整距离

动态时间规整距离是一种动态规划方法,通过寻找最小的对齐匹配路径使两序列之间距离最小,因而DTW可计算不同长度序列的距离,对时间序列偏移不敏感。

给定两个时间序列(两个时间序列并一定等长,即m和n不一定相等):
P = ( x 1 , x 2 , . . . x m ) ,    Q ( y 1 , y 2 , . . . y n ) P=(x_1,x_2,...x_m),\ \ Q(y_1,y_2,...y_n) P=(x1,x2,...xm),  Q(y1,y2,...yn)
A m × n = ( a i j ) m × n A_{m\times n}=(a_{ij})_{m\times n} Am×n=(aij)m×n 表示 P P P Q Q Q 的距离矩阵,其中 a i j a_{ij} aij 基于基距离方法进行计算,一般采用欧氏距离的平方:
a i j = ( x i − y j ) 2 a_{ij} = (x_i-y_j)^2 aij=(xiyj)2
然后在距离矩阵中,令 W = w 1 , w 2 , . . . , w k W=w_1,w_2,...,w_k W=w1,w2,...,wk为时间序列 P P P Q Q Q 的动态时间弯曲路径,其中 w k = ( a i j ) k w_k=(a_{ij})_k wk=(aij)k 是路径的第k个元素,且路径 W W W 需要满足以下条件:

1、 max ⁡ { m , n } ≤ K ≤ m + n − 1 \max\{m,n\}\leq K\leq m+n-1 max{m,n}Km+n1

2、 w 1 = a 11 , w k = a m n w_1=a_{11}, w_k=a_{mn} w1=a11,wk=amn

3、单调性:若 w k = a i j , w k + 1 = a k l w_k=a_{ij}, w_{k+1}=a_{kl} wk=aij,wk+1=akl,则需保证
0 ≤ k − i ≤ 1 ,    0 ≤ l − j ≤ 1 0\leq k-i\leq 1, \ \ 0\leq l-j\leq 1 0ki1,  0lj1
根据上述三个条件可知,动态时间弯曲路径并不唯一,在所有的动态时间弯曲路径中使得 ∑ i = 1 K w i \sqrt{\sum\limits_{i=1}^K w_i} i=1Kwi 的值最小的路径称为最佳动态时间弯曲路径,所对应的距离即为动态时间弯曲距离。记 D T W ( P , Q ) DTW (P,Q) DTW(P,Q) 为P和Q之间的DTW距离,则有:
D T W ( P , Q ) = min ⁡ ( ∑ i = 1 K w i ) DTW(P,Q) = \min\left(\sqrt{\sum\limits_{i=1}^{K}w_i}\right) DTW(P,Q)=mini=1Kwi
为什么称DTW为动态时间规整距离呢?

因为DTW距离的计算过程是一个 动态规划过程, 若令 P P P Q Q Q i i i j j j 处累积距离为 L ( i , j ) L(i,j) L(i,j),则由条件3可知,累积距离存在如下递归关系:
L ( i , j ) = min ⁡ [ L ( i − 1 , j − 1 ) , L ( i − 1 , j ) , L ( i , j − 1 ) ] + a i j L(i,j) = \min\left[L(i-1,j-1), L(i-1,j), L(i,j-1)\right]+a_{ij} L(i,j)=min[L(i1,j1),L(i1,j),L(i,j1)]+aij
易知: L ( 1 , 1 ) = a 11 L(1,1)=a_{11} L(1,1)=a11, 且 D T W ( P , Q ) = L ( m , n ) DTW(P,Q)=L(m,n) DTW(P,Q)=L(m,n),因此DTW的计算过程就是:

  • 先使用基距离,如欧式距离初始化距离矩阵 A m × n = ( a i j ) m × n A_{m\times n}=(a_{ij})_{m\times n} Am×n=(aij)m×n
  • 然后使用累积距离的递归公式求解得到 L ( m , n ) L(m,n) L(m,n) 即为DTW距离

注:

  1. DTW距离通过允许序列在时间轴上偏移,克服了闵可夫斯基距离不能度量不等长序列、对于噪声和振幅伸缩无法刻画的缺陷
  2. 可以度量任意两个长度时间序列间的距离,对时间轴上的扭曲不敏感,适用性、可靠性更强
  3. 计算复杂度高: O ( m n ) O(mn) O(mn) , 时间代价昂贵
  4. DTW距离不满足三角不等式
  5. 相应改进方案:下界函数、加权动态时间规整距离、微分动态时间规整距离、FastDTW

基于相关性的相似度度量方法

给定两个时间序列:
P = ( x 1 , x 2 , . . . x n ) ,    Q ( y 1 , y 2 , . . . y n ) P=(x_1,x_2,...x_n),\ \ Q(y_1,y_2,...y_n) P=(x1,x2,...xn),  Q(y1,y2,...yn)
相关系数定义如下:
C o r ( P , Q ) = C o v ( P , Q ) V a r ( P ) V a r ( Q ) Cor(P,Q) = \frac{Cov(P,Q)}{\sqrt{Var(P)\sqrt{Var(Q)}}} Cor(P,Q)=Var(P)Var(Q) Cov(P,Q)
相关系数为1,表示完全一致;相关系数为-1,表示完全负相关;相关系数为0,表示没有相关性

基于互信息的相似性度量方法

给定两个时间序列:
P = ( x 1 , x 2 , . . . x n ) ,    Q ( y 1 , y 2 , . . . y n ) P=(x_1,x_2,...x_n),\ \ Q(y_1,y_2,...y_n) P=(x1,x2,...xn),  Q(y1,y2,...yn)
互信息定义如下:
I ( P , Q ) = H ( P ) + H ( Q ) − H ( P , Q ) I(P,Q)=H(P)+H(Q)-H(P,Q) I(P,Q)=H(P)+H(Q)H(P,Q)
互信息取值范围为 [ 0 , ∞ ] [0,\infty] [0,],互信息为0表示两者之间没有公共信息,互信息为 ∞ \infty 表示相关性特别大,类似于相关系数的绝对值为1. 除此之外,可利用如下公式对互信息进行归一化:
Λ ( P , Q ) = 1 − e 2 I ( P , Q ) \Lambda(P,Q) = \sqrt{1-e^{2I(P,Q)}} Λ(P,Q)=1e2I(P,Q)

基于互信息的相似性度量方法(可能拓展)

上面基于互信息的相似性度量并没有考虑到不同时间序列之间的时间延迟关系,如果他们存在一定程度的时间延迟,那么可以考虑如下方式的拓展:

  • 计算延迟互信息,然后对不同的时间延迟所得互信息求最大值或者直接求和
  • 计算转移熵,然后求最大值或者直接求和

马氏距离

上面提到了基于相关性和基于互信息的距离,仅仅考虑到了变量之间的相关性,而马氏距离则是同时考虑到变量不同维度之间存在相关性和尺度变换的关系,它表示的是变量之间的协方差距离。

假设有两个n维空间中的点:
P = ( x 1 , x 2 , . . . x n ) ,    Q ( y 1 , y 2 , . . . y n ) P=(x_1,x_2,...x_n),\ \ Q(y_1,y_2,...y_n) P=(x1,x2,...xn),  Q(y1,y2,...yn)
那么马氏距离的定义为:
D M ( P , Q ) = ( P − Q ) T Σ − 1 ( P − Q ) D_M(P,Q) = \sqrt{(P-Q)^T\Sigma^{-1}(P-Q)} DM(P,Q)=(PQ)TΣ1(PQ)
其中 Σ \Sigma Σ 是个协方差矩阵,但是貌似跟 P P P Q Q Q 没啥关系,它应该是个 n × n n\times n n×n 的矩阵, 刻画了n个属性之间的关系,计算方式如下:

  • 对n维变量进行采样,采样得到样本集合: { P 1 , P 2 , . . . , P m } \{P_1,P_2,...,P_m\} {P1,P2,...,Pm},这个集合的规模可能比 n n n 大很多, 然后每个属性有一个时间序列,计算各个属性之间的协方差矩阵,以及各个属性的均值组成的均值向量 μ = [ μ 1 , μ 2 , . . . , μ n ] \mu=[\mu_1,\mu_2,...,\mu_n] μ=[μ1,μ2,...,μn]

如果利用矩阵分解,如LU分解对协方差矩阵 Σ \Sigma Σ 进行分解的话: Σ = L L T \Sigma=LL^T Σ=LLT,然后对 P − Q P-Q PQ做如下处理:
Z = L − 1 ( P − Q ) Z = L^{-1}(P-Q) Z=L1(PQ)
则马氏距离可以表示为:
D M ( P , Q ) = Z T Z D_M(P,Q) = Z^TZ DM(P,Q)=ZTZ
特别地,马氏距离可以用来衡量一个点 P 和样本集合 { P 1 , P 2 , . . . , P m } \{P_1,P_2,...,P_m\} {P1,P2,...,Pm} 之间的距离,这是通过比较 P 和均值向量 μ \mu μ 得到的:
D M ( P ) = ( P − μ ) Σ − 1 ( P − μ ) D_M(P) = \sqrt{(P-\mu)\Sigma^{-1}(P-\mu)} DM(P)=(Pμ)Σ1(Pμ)
注:

  • 马氏距离计算的不是时间序列之间的距离,而是对欧氏距离的推广,计算的是两个点之间的距离
    • 马氏距离需要一个样本集合来估算样本均值和协方差。
    • 马氏距离相当于将变量按照主成分进行旋转,让维度之间相互独立,然后进行标准化,让维度同分布
    • 主成分就是特征向量方向,每个方向的方差就是对应的特征值,所以其实就是按照特征向量的方向进行旋转,然后缩放特征值倍

优点:

  • 马氏距离不受量纲的影响,且由标准化数据和中心化数据计算出的两点之间的马氏距离相同
  • 马氏距离可以排除变量之间相关性的干扰

缺点:

  • 需要计算协方差矩阵,协方差矩阵还需要可逆
  • 涉及到矩阵求逆
  • 不能处理非线性流形上的问题

参考文献

时间序列聚类相关知识的总结与梳理: https://mp.weixin.qq.com/s/iusTb9UwKybwJBqd2kSvUA

机器学习基础 | 互相关系数和互信息异同探讨:https://www.cnblogs.com/fangsf/p/15000465.html

马氏距离:https://blog.csdn.net/qq_28087491/article/details/114370480?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162639931516780274116169%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162639931516780274116169&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-114370480.first_rank_v2_pc_rank_v29&utm_term=%E9%A9%AC%E6%B0%8F%E8%B7%9D%E7%A6%BB&spm=1018.2226.3001.4187

荣馨兵. 基于相似搜索的时间序列预测方法及其应用[D]. 大连海事大学, 2018.

张勇. 时间序列模式匹配技术研究[D]. 华中科技大学. 2012

### 回答1: 时间序列相似度是用来比较和度量不同时间序列之间的相似程度的一种方法。在MATLAB中,我们可以使用一些函数和方法来计算时间序列之间的相似度。 一种常用的方法是使用欧氏距离来度量时间序列之间的相似度。在MATLAB中,可以使用pdist函数来计算欧氏距离。它接受一个数据矩阵作为输入参数,其中每一行代表一个时间序列样本。通过使用'euclidean'参数,我们可以计算这些时间序列之间的欧氏距离。距离越小,表示时间序列越相似。 另一种常见的方法是使用动态时间规整(Dynamic Time Warping,DTW)来度量时间序列之间的相似度。在MATLAB中,可以使用dtw函数来计算两个时间序列之间的DTW距离。这个函数接受两个时间序列作为输入参数,并返回它们之间的DTW距离。距离越小,表示时间序列越相似。 除了这些方法,MATLAB还提供了其他一些函数和工具箱来处理时间序列相似度的计算和分析。例如,可以使用timeseries类来创建和处理时间序列对象,并使用相应的函数来计算它们之间的相似度。 总之,在MATLAB中,我们可以通过使用欧氏距离、动态时间规整等方法来计算时间序列之间的相似度。这些方法可以帮助我们了解和比较不同时间序列之间的关系,并为进一步的时间序列分析提供基础。 ### 回答2: 时间序列相似度是指对于给定的两个时间序列,通过一定的计算方法来度量它们之间的相似程度。在matlab中,我们可以使用一些常见的方法来计算时间序列相似度。 其中一个常用的方法是欧氏距离计算。欧氏距离是指两个向量之间的直线距离,可以用来度量时间序列之间的相似程度。在matlab中,我们可以使用函数`pdist`和`squareform`来计算欧氏距离。首先,我们需要将时间序列转换为矩阵形式,每行表示一个时间步,每列表示一个特征。然后,使用`pdist`函数计算距离矩阵,再使用`squareform`函数将距离矩阵转换为向量形式。 另一个常用的方法是动态时间规整(DTW)算法。DTW算法考虑到时间序列可能在时间轴上有一定的延时或者速度差异,通过将时间序列对齐来计算它们之间的相似程度。在matlab中,我们可以使用`dtw`函数来计算DTW距离。该函数将两个时间序列作为输入,返回一个距离度量值。 除了欧氏距离和DTW算法,还有一些其他的时间序列相似度计算方法,如皮尔逊相关系数、相位相关系数等。在matlab中,可以使用`corr`函数来计算皮尔逊相关系数,使用`crosscorr`函数来计算相位相关系数。 综上所述,时间序列相似度计算是一项重要的任务,matlab提供了多种方法来度量时间序列之间的相似程度。我们可以根据具体的应用场景选择适合的方法进行计算,并利用matlab的相关函数来实现。 ### 回答3: 时间序列相似度是指用于衡量两个时间序列之间的相似程度的度量方法。在MATLAB中,我们可以使用各种方法来计算时间序列相似度。 其中一种常见的方法是基于欧氏距离的相似度计算。欧氏距离是指两个时间序列数据点之间的直线距离。在MATLAB中,可以使用“pdist”函数来计算欧氏距离。该函数可以通过设置参数选择计算一对时间序列之间的相似度,或计算整个时间序列集合之间的相似度。 另一种常见的方法是基于相关性的相似度计算。相关性是衡量两个时间序列之间线性关系的度量。在MATLAB中,可以使用“corrcoef”函数来计算时间序列之间的相关性。该函数可以将两个时间序列作为输入,并返回相关性矩阵。较高的相关系数表示较高的相似度。 此外,还有一些其他的时间序列相似度计算方法,如动态时间规整(DTW)和相位相似性等。在MATLAB中,可以使用相关的工具箱来实现这些方法。例如,Signal Processing Toolbox中提供了一些用于处理时间序列的函数和工具。 总之,在MATLAB中计算时间序列相似度,可以根据具体的需求选择合适的相似度度量方法,并使用相应的函数和工具实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值