本文地址为:http://www.cnblogs.com/kemaswill/,作者联系方式为kemaswill@163.com,转载请注明出处。

关于DTW算法的简介请见我的上一篇博客:时间序列挖掘-动态时间归整算法原理和实现。

DTW采用动态规划来计算两个时间序列之间的相似性,算法复杂度为O(N2)。当两个时间序列都比较长时,DTW算法效率比较慢,不能满足需求,为此,有许多对DTW进行加速的算法:FastDTW,SparseDTW,LB_Keogh,LB_Improved等。在这里我们介绍FastDTW。

1. 标准DTW算法

在DTW中,我们要寻找的是一个归整路径(详见时间序列挖掘-动态时间归整算法原理和实现),如下图所示:

最终我们想要得到的是这条路径经过的所有点的坐标(i,j)对应的X和Y两个时间序列的点Xi和Yj的距离(比如欧几里得距离)之和,亦即我们需要求得代价矩阵最右上角的元素D(i,j)。而根据动态规划的思想:

要求得D(i,j)必须要知道D(i-1,j), D(i-1,j-1), D(i,j-1)等,以此类推,我们需要求得整个D矩阵,才能得到最终的D(i,j),亦即算法的时间复杂度为O(N2)。

2. DTW常用加速手段

常用的DTW加速手段有:

(1). 限制。亦即减少D的搜索空间,下图中阴影部分为实际的探索空间,空白的部分不进行探索。

(2). 数据抽象。亦即把之前长度为N的时间序列规约成长度为M(M<N)表述方式:

(3). 索引。索引是在进行分类和聚类时减少需要运行的DTW的次数的方法,并不能加速一次的DTW计算。

3. FastDTW

FastDTW综合使用限制和数据抽象两种方法来加速DTW的计算,主要分为三个步骤:

(1). 粗粒度化。亦即首先对原始的时间序列进行数据抽象,数据抽象可以迭代执行多次1/1->1/2->1/4->1/16,粗粒度数据点是其对应的多个细粒度数据点的平均值。

(2). 投影。在较粗粒度上对时间序列运行DTW算法。

(3). 细粒度化。将在较粗粒度上得到的归整路径经过的方格进一步细粒度化到较细粒度的时间序列上。除了进行细粒度化之外,我们还额外的在较细粒度的空间内额外向外(横向,竖向,斜向)扩展K个粒度,K为半径参数,一般取为1或者2.

FastDTW算法的具体执行流程如下图所示:

第一个图表示在较粗粒度空间(1/8)内执行DTW算法。第二个图表示将较粗粒度空间(1/8)内求得的归整路径经过的方格细粒度化,并且向外(横向,竖向,斜向)扩展一个(由半径参数确定)细粒度单位后,再执行DTW得到的归整路径。第三个图和第四个图也是这样。

由于采取了减少搜索空间的策略,FastDTW并不一定能够求得准确的DTW距离,但是FastDTW算法的时间复杂度比较低,为O(N)。

参考文献:

[1]. FastDTW: Toward Accurate Dynamic Time Warping in Linear Time and Space. Stan Salvador, Philip Chan.

[2]. Wikipedia: Dynamic Time Warping

转载于:https://www.cnblogs.com/kemaswill/archive/2013/04/18/3029078.html

时间序列挖掘-DTW加速算法FastDTW简介相关推荐

  1. java dtw_时间序列挖掘-DTW加速算法FastDTW简介

    本文地址为:http://www.cnblogs.com/kemaswill/,作者联系方式为kemaswill@163.com,转载请注明出处. 关于DTW算法的简介请见我的上一篇博客:时间序列挖掘 ...

  2. java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)

    所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...

  3. DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 ShuffleNetV2算法的简介(论文介绍) 1.论文特点 2.基于硬件 ...

  4. DL之ShuffleNet:ShuffleNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之ShuffleNet:ShuffleNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 相关文章 DL之ShuffleNet:ShuffleNet算法的简介(论文介绍).架构详 ...

  5. DL之InceptionV4/ResNet:InceptionV4/Inception-ResNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之InceptionV4/ResNet:InceptionV4/Inception-ResNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 InceptionV4/Inc ...

  6. DL之FastR-CNN:Fast R-CNN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之FastR-CNN:Fast R-CNN算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Fast R-CNN算法的简介(论文介绍) 1.实验结果 2.Fast R-CNN算 ...

  7. 【GNN】谷歌、阿里、腾讯等在大规模图神经网络上必用的GNN加速算法

    点击上方,选择星标或置顶,每天给你送上干货 作者 | 对白 出品 | 对白的算法屋 今天我们来聊一聊在大规模图神经网络上必用的GNN加速算法.GNN在图结构的任务上取得了很好的结果,但由于需要将图加载 ...

  8. DL之RefineNet:RefineNet和Light-Weight RefineNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之RefineNet:RefineNet和Light-Weight RefineNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 RefineNet和Light-Weig ...

  9. Nesterov加速算法

    Nesterov加速算法 上一届分析了近似点梯度法的收敛速度:如果光华部分的梯度是利普西茨连续的,则目标函数的收敛速度可以达到O1kO{\frac{1}{k}}Ok1​,一个自然的问题是如果仅用梯度信 ...

最新文章

  1. 最新综述:关于自动驾驶的可解释性(牛津大学)
  2. 干活干累了,刷一道题,一天保底两道,一年也就差不多刷完了 ----------7. Reverse Integer...
  3. 前端开发周边(js版页内锚点跳转方法)
  4. XCTF-高手进阶区:baby_web
  5. Quartz 2D编程笔记
  6. ql的python学习之路-day9
  7. Apache常见配置及问题
  8. 传统KTV打入冷宫,全民K歌和唱吧谁是“K歌之王”?
  9. 1.3 可移植性和标准
  10. 初中计算机竞赛面试题目及答案,2019上半年初中信息技术教师资格面试真题及答案(第一批)...
  11. 一个优秀的网站首页是如何设计的?
  12. ttkefu如何修改手机聊天窗口的背景颜色?
  13. “限时分享“ 本地80个小游戏 HTML+CSS+JS源码分享
  14. CC00056.bigdatajava——|Java分支结构.V06|——|Java.v06|ifelseifelse.v02|个人所得税计算方式一|
  15. 驱动学习(十)poll机制
  16. QT下的几种透明效果
  17. MOS管寄生电容是如何形成的?
  18. python拼音怎么写-[编程心得]用Python给汉字加上带音调的拼音
  19. 基于BLG7289的数码管可调时钟
  20. Mac家谱制作软件MacFamilyTree 9好用吗?如何在MacFamilyTree 9中创建数据库的备份?

热门文章

  1. zabbix 监控项自动发现过滤_Zabbix监控之配置Linux自动发现与自动注册报警
  2. c int最小值的宏_C语言宏定义的妙用!用完软硬件效率蹭蹭涨!
  3. i3wm amxier toggle只关闭不开启问题解决
  4. 开发日记-20190626 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)
  5. (传送门) IDEA 控制台输出JVM的GC日志
  6. 递归神经网络——就是解决AST这样的问题
  7. vim 按照字段排序文件
  8. MongoDB C++ gridfs worked example
  9. python 装饰器中的@wraps
  10. 极客Web前端开发资源大荟萃#017