拓端tecdat|R语言DTW(Dynamic Time Warping) 动态时间规整算法分析序列数据和可视化
原文链接:http://tecdat.cn/?p=22945
原文出处:拓端数据部落公众号
动态时间规整(DTW,Dynamic time warping,动态时间归整/规整/弯曲)是一种衡量两个序列之间最佳排列的算法。线性序列数据如时间序列、音频、视频都可以用这种方法进行分析。DTW通过局部拉伸和压缩,找出两个数字序列数据的最佳匹配,同时也可以计算这些序列之间的距离。
DTW是干什么的?
动态时间规整算法,故名思议,就是把两个代表同一个类型的事物的不同长度序列进行时间上的“对齐”。比如DTW最常用的地方,语音识别中,同一个字母,由不同人发音,长短肯定不一样,把声音记录下来以后,它的信号肯定是很相似的,只是在时间上不太对整齐而已。所以我们需要用一个函数拉长或者缩短其中一个信号,使得它们之间的误差达到最小。
DTW怎么计算?
因此,动态时间规整要解决的问题就是:找到一条最优的规整路径 W = {\varpi _1},{\varpi _2}...{\varpi _k} W=ϖ1,ϖ2...ϖk,其中 {w_k} = (i,j) wk=(i,j),即认为时间序列1的第i个点和时间序列2的第j个点是类似的。全部类似点的距离之和做为规整路径距离,用规整路径距离来衡量两个时间序列的类似性。规整路径距离越小,类似度越高。
下面我们来总结一下DTW动态时间规整算法的简单的步骤:
1. 首先肯定是已知两个或者多个序列,但是都是两个两个的比较,所以我们假设有两个序列A={a1,a2,a3,...,am} B={b1,b2,b3,....,bn},维度m>n
2. 然后用欧式距离计算出每序列的每两点之间的距离,D(ai,bj) 其中1≤i≤m,1≤j≤n
画出下表:
3. 接下来就是根据上图将最短路径找出来。从D(a1,a2)沿着某条路径到达D(am,bn)。找路径满足:假如当前节点是D(ai,bj),那么下一个节点必须是在D(i+1,j),D(i,j+1),D(i+1,j+1)之间选择,并且路径必须是最短的。计算的时候是按照动态规划的思想计算,也就是说在计算到达第(i,j)个节点的最短路径时候,考虑的是左上角也即第(i-1,j)、(i-1,j-1)、(i,j-1)这三个点到(i,j)的最短距离。
4. 接下来从最终的最短距离往回找到那条最佳的输出路径, 从D(a1,b1)到D(am,bn)。他们的总和就是就是所需要的DTW距离
【注】如果不回溯路径,直接在第3步的时候将左上角三个节点到下一个节点最短的点作为最优路径节点,就是贪婪算法了。DTW是先计算起点到终点的最小值,然后从这个最小值回溯回去看看这个最小值都经过了哪些节点。
R语言实现
在这篇文章中,我们将学习如何找到两个数字序列数据的排列。
创建序列数据
首先,我们生成序列数据,并在一个图中将其可视化。
plot(a, type = "l")
lines(b, col = "blue")
计算规整方式
dtw()函数计算出一个最佳规整方式。
align(a, b)
返回以下项目。你可以参考str()函数来了解更多信息。
现在,我们可以绘制组合。
用双向的方法作图
动态时间规整结果的绘图:点比较
显示查询和参考时间序列以及它们的排列方式,进行可视化检查。
Plot(align)
用密度作图
显示叠加了规整路径的累积成本密度 。
该图是基于累积成本矩阵的。它将最优路径显示为全局成本密度图中的 "山脊"。
PlotDensity(align)
小结
总而言之, DTW是一种非常有用的计算序列最小距离的方法, 不论是在语音序列匹配, 股市交易曲线匹配, 还是DNA碱基序列匹配等等场景, 都有其大展身手的地方. 它的最大特点是在匹配时允许时间上的伸缩, 因此可以更好的在一堆序列集合中找到最佳匹配的序列.
- Eamonn Keogh, Chotirat Ann Ratanamahatana, Exact indexing of dynamic time warping, Knowledge and Information Systems, 2005.
最受欢迎的见解
1.在python中使用lstm和pytorch进行时间序列预测
2.python中利用长短期记忆模型lstm进行时间序列预测分析
3.使用r语言进行时间序列(arima,指数平滑)分析
4.r语言多元copula-garch-模型时间序列预测
5.r语言copulas和金融时间序列案例
6.使用r语言随机波动模型sv处理时间序列中的随机波动
7.r语言时间序列tar阈值自回归模型
8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类
9.python3用arima模型进行时间序列预测
拓端tecdat|R语言DTW(Dynamic Time Warping) 动态时间规整算法分析序列数据和可视化相关推荐
- DTW(Dynamic Time Warping)动态时间规整——简单易懂
DTW可以用来干什么呢? DWT可以计算两个时间序列的相似度,尤其适用于不同长度.不同节奏的时间序列(比如不同的人读同一个词的音频序列).距离越近,相似度越高. DTW在语音中的运用: 在实际应用中, ...
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- DTW 笔记: Dynamic Time Warping 动态时间规整 (DTW的python实现) 【DDTW,WDTW】
0 总述 DTW可以计算两个时间序列的相似度,尤其适用于不同长度.不同节奏的时间序列(比如不同的人读同一个词的音频序列) DTW将自动扭曲(warping)时间序列(即在时间轴上进行局部的缩放),使得 ...
- dynamic time warping matlab,Dynamic Time Warping 动态时间规整算法
Dynamic Time Warping(DTW)是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词. 1. DTW方法原理 在时间序列中,需要比较相似性 ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- r语言 append_Python爬取近十年TIOBE编程语言热度数据并可视化可视化
本文介绍如何利用requests+正则表达式爬取TIOBE编程语言热度数据,并使用?openpyxl写入数据与?pyecharts时间轮播图进行可视化. 一.数据获取 我们需要爬取的目标url为h ...
- 动态时间规整DWT(Dynamic Time Warping)
1. DTW作用 动态时间规整算法,能够将两个代表同一个类型的事物的不同长度序列进行时间上的"对齐". 比如在语音识别中,同一个字母,由不同人发音,时间长短不一,但信号相似.故需要 ...
- 数据分享|R语言因子分析、相关性分析大学生兼职现状调查问卷数据可视化报告...
全文链接:http://tecdat.cn/?p=31765 随着大学的普及教育,大学生就业形势变得更加困难,很多学生都意识到这个问题(点击文末"阅读原文"获取完整代码数据). 相 ...
最新文章
- ORB-SLAM2安装
- SAP HUM 使用HU02将几个HU打包到一个外层新的HU号码里
- HDOJ HDU 1106 排序 ACM 1106 IN HDU
- 如何采用简化方法进行需求分析
- Http:Get、Post、Put、Delete、Head、Options详解
- [转载] 中华典故故事(孙刚)——24 嫁鸡随鸡_嫁狗随狗
- Arduino笔记-外部中断实验(震动传感器实时亮灯)
- [Python] zip
- 关于推荐系统中的特征工程
- 【转】完美解除Windows7的驱动程序强制签名限制
- PCL点云参数估计算法之RANSAC和LMEDS
- 前端性能优化分析(雅虎军规)
- 《基于LSTM长短时神经网络的电机旋转振动单步预测》
- .NET 语音转文字 文字转语音
- 长沙理工大学第十二届ACM大赛【9/12】
- wps怎么打包图片_wps如何压缩图片
- —— GPS测量原理及应用复习-4 ——
- 我的第一个hbulider项目
- emoji 表情包全套手机端pc都支持
- 动态拨号主机多IP随机分配拨号自动分配
热门文章
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
- hadoop作业引用第三方jar文件原理解析
- COCOS2D-X 不反复随机数
- xp如何修改SID.
- Flash研究(一)——本地通讯
- ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
- netcore里使用jwt做登陆授权
- 第二季-专题11-世界一下变大了-MMU
- 封装一个Automapper单例
- 多线程编程中锁的种类与应用举例