多变量时间序列相似度量

单变量时间序列可以看成是向量,其相似度量最常用的两种方法是欧式距离和DTW,将其应用到多元时间序列(可用矩阵存储表达)。
令Q为多元时间序列矩阵,该时间序列共有n个变量,即有n列,每一列维度为m。再令C为另一个多元时间序列,有n个变量,每一列维度为l,m和l不一定相等。

1、矩阵DTW的两种原始方法DTWi和DTWd

根据论文On the Non-Trivial Generalization of Dynamic Time Warping to the Multi-Dimensional Case,之前有如下两种方法求矩阵间的DTW值。(途中Q和C分别只有两个变量x,y)

在这里插入图片描述
(a)python实现代码

def matrix_DTW_horizon(X,Y):
    m = X.shape[0]
    n = Y.shape[0]
    matrix_DTW = {}
    for i in range(m):
        matrix_DTW[(i,-1)] = float('inf')
    for i in range(n):
        matrix_DTW[(-1,i)] = float('inf')
    matrix_DTW[(-1,-1)] = 0
    for i in range(m):
        for j in range(n):
            matrix_DTW[(i,j)] = dist(X[i,:],Y[j,:]) + min(matrix_DTW[(i-1,j)],matrix_DTW[(i,j-1)],matrix_DTW[(i-1,j-1)])
    return np.sqrt(matrix_DTW[(m-1,n-1)])
def dist(a,b):
return np.sqrt(sum(np.power(a-b,2)))

(b)python实现代码

def matrix_DTW_vertical(X,Y):
    distance = 0
    n = X.shape[1]
    for i in range(n):
        temp = DTW(X[:,i],Y[:,i])
        distance = distance + temp # 简单求和?
    return distance

2、本论文基于两种原始方法的思考和改进

该论文认为以上两种方法在不同数据集下表现效果不一样,并且实验证明了这一点。于是提出一种算法,硬根据实际情况,通过筛选判断后选择相应的方法来作为DTW相似衡量。

具体算法及它的判断方法如下:
在这里插入图片描述

分别用上述两种矩阵形似度量的方法,求得一次查询,Q的最近邻,设置得分函数S,即两个方法得出的最近邻值之比(epsilon值是为了防止分母为0)。当S大于threshold,则选用(b)方法,反之选用(a)方法。

对于设置threshold值,用了以下算法:
在这里插入图片描述
S_iSuccess:使用(a)方法预测正确,但是使用(b)方法预测错误时,将此时得分函数的值添加到S_iSuccess;
S_dSuccess:使用(b)方法预测正确,但是使用(a)方法预测错误时,将此时得分函数的值添加到S_dSuccess;
find_scores函数就是为了得到上述两个集合。

Learn_Threshold中Decision_tree的具体细节要去看论文中的参考文献[17][12]

在这里插入图片描述

3、思考

此外,方法(b)跟单变量时间序列求DTW值几乎一样,除了将两点之间的欧氏距离即(X[I]-Y[j])**2(X,Y此时是向量)改成了两向量之间的欧式距离即dist(X[i,:],Y[j,:]) ,其他的思路几乎一样,由此可见,近些年对单变量时间序列DTW的改进方法low_bound,如Lb_keogh,Lb_Enhanced等同样适用。

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值