【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现

简介: 【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现

原文链接:http://tecdat.cn/?p=22945


动态时间扭曲算法何时、如何以及为什么可以有力地取代常见的欧几里得距离,以更好地对时间序列数据进行分类点击文末“阅读原文”获取完整代码数据


时间序列分类的动态时间扭曲


使用机器学习算法对时间序列进行分类需要一定的熟悉程度。


时间序列分类(TSC)任务通常由监督算法解决,它旨在创建分类器,将输入时间序列映射到描述时间序列本身的一个或多个特征的离散变量(类)中。

可以在语音识别或手势和运动识别中找到时序分类任务的有趣示例。

图 — 移动识别示例

用于其他类型的数据(例如表格数据)的标准分类算法不能直接应用,因为它们将每个样本与其他样本分开处理。

对于时间序列,不能忽略数据的时间顺序,因此,不能考虑时间序列的每个样本而考虑其他样本,但必须保留时间顺序

出于这个原因,在文献中,有几种类型的时间序列分类技术,将在下一段中简要解释。


时间序列分类方法


作为TSC不同类型方法的简要概述。

  • 基于区间的方法:从不同的区间中提取时间序列的特征和信息,并将标准分类器应用于特征本身。算法的一个示例是时序森林分类器
  • 基于字典 的方法:将时间序列的特征转换为代表类的单词。标准分类器应用于提取单词的分布。算法的一个例子是模式袋
  • 基于频率的方法:在频谱水平上提取时间序列的特征,通过频率分析和连续的标准分类器。算法的一个示例是随机间隔频谱集成
  • 基于形状的方法:形状是代表类的时间序列的子序列。提取时间序列中k个最具特征的形状,然后使用标准分类器。算法的一个示例是 Shapelet 变换分类器
  • 集成方法:对于一般问题非常有竞争力,它们结合了几个估计器,例如HIVE-COTE算法。


基于距离的方法


在本文中,我们将重点介绍基于距离的方法

它是一种将距离度量分类器混合以确定类成员的非参数方法。分类器通常是 k 最近邻 (KNN)  算法,用于了解要标记的时间序列是否与训练数据集中的某些时间序列相似。根据邻域,最近的类或最近类的聚合与所分析的时间序列相关联。动态时间扭曲(DTW)是基于距离的方法的一个示例。


图  — 基于距离的方法


距离指标


在时间序列分类中,我们需要计算两个序列之间的距离,同时牢记每个序列内样本之间的时间关系依赖性。选择正确的指标是这种方法的基础。


欧几里得距离

让我们开始考虑常见的欧几里得距离

鉴于时间序列分类,欧几里得距离是不合适的,因为即使它保留了时间顺序,它也以逐点的方式测量距离。实际上,与两个时间序列的欧几里得距离的相似性是通过考虑它们的振幅来计算的,而与相移、时移和失真无关。

以图中的示例为例。我们有树时间序列:ts1、ts2 和 ts3。我们希望检测两条正弦曲线彼此相似,因为它们具有相同的形状和上下趋势,即使它们的相位和频率略有不同。但是,如果我们计算欧几里得指标,直线 ts3 的结果更接近 ts1。


图 — 要比较的时间序列示例

之所以出现这种现象,是因为欧几里得距离正在比较曲线的振幅,而不允许任何时间拉伸。


图 — 欧几里得匹配


动态时间扭曲

引入了动态时间扭曲以避免欧几里得距离的问题。

从历史上看,它是为语音识别而引入的。如图所示,以不同的速度重复相同的句子,有必要将时间序列与相同的单词相关联,从而管理不同的速度。


图 — DTW 的语音识别应用

DTW 允许您通过确定时间序列之间的最佳对齐方式并最大程度地减少时间失真和偏移的影响来衡量时间序列之间的相似性

不同相的相似形状,及时匹配弹性翘曲。

图 — 动态时间扭曲匹配


算法

让我们考虑两个时间序列 X = (x₁, x₂, ..., xn)Y = (y₁, y₂, ..., ym), 在等距时间点采样,长度相等或不同。

我们的目标是找到对齐时间序列的最小距离


图 — 要对齐的时间序列示例

定义局部成本矩阵,该矩阵将被最小化以找到最佳对齐方式。成本矩阵 C 定义为所有时间序列点的成对距离:


图 — 当地成本矩阵 C

目的是通过遵循成本最低的路线,在局部成本矩阵上找到对齐时间序列的翘曲路径

翘曲路径 p 是局部成本矩阵上的点序列,因此是两个时间序列上的几个点序列:


必须满足一些条件:

  • 边界条件:


翘曲路径的起点和终点必须是序列的第一个和最后一个点。

  • 单调性条件:


以保留时间顺序。

  • 步长条件:


以限制跳跃和时间偏移,同时对齐序列。

每个翘曲路径都有相关的成本:

  • 与翘曲路径 p 相关的成本函数



图 — 翘曲路径示例(非最佳)

目的是找到最佳的翘曲路径:


DTW 通过递归实现解决,为此可以找到成本最低的翘曲路径:


图 — 最佳翘曲路径

找到最佳翘曲路径后,将计算出相关的最优成本,并将其用作 DTW 距离。

递归实现达到最优,但计算成本为 O(NM), 其中 N 和 M 是两个时间序列的长度。


k-最近邻


回到对感兴趣的时间序列进行分类的原始问题,距离度量可以与k-最近邻(k-nn)算法耦合。这意味着您可以计算时间序列到训练数据集中所有其他时间序列的 DTW 距离。然后,如果您正在考虑使用 1-nn 方法,则可以将最近邻的类与时间序列相关联,或者,同样,您可以将 k 最近类中最常用的类与 k-nn 方法相关联。

通过这种方式,您已经达到了为时间序列分配类的目标,该方法考虑了时间序列的时移。


传统 DTW 的替代方法可加快速度


快速 DTW

提出了一种多级方法来加快FastDTW算法中的算法速度。

它需要不同的步骤:

  • 粗化: 将时间序列缩小为较粗的时间序列。这通过对相邻点对求平均值来减小时间序列的大小。
  • 投影: 找到最小距离的翘曲路径,用作更高分辨率翘曲路径的初始猜测。
  • 优雅: 通过局部调整将翘曲路径从较低分辨率细化到较高分辨率。此步骤在投影路径的邻域中查找最佳翘曲路径,半径 r 参数控制邻域的大小。


图 — 快速 DTW

FastDTW允许快速分辨率,复杂度为O(Nr), 具有良好的次优解决方案。


R语言实现


在这篇文章中,我们将学习如何找到两个数字序列数据的排列。


创建序列数据


首先,我们生成序列数据,并在一个图中将其可视化。

plot(a, type = "l")
lines(b, col = "blue")

点击标题查阅往期内容


Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化


01

02

03

04


计算规整方式


dtw()函数计算出一个最佳规整方式。

align(a, b)

返回以下项目。你可以参考str()函数来了解更多信息。

现在,我们可以绘制组合。


用双向的方法作图


动态时间规整结果的绘图:点比较

显示查询和参考时间序列以及它们的排列方式,进行可视化检查。

Plot(align)

用密度作图

显示叠加了规整路径的累积成本密度 。

该图是基于累积成本矩阵的。它将最优路径显示为全局成本密度图中的 "山脊"。

PlotDensity(align)

小结


总而言之, DTW是一种非常有用的计算序列最小距离的方法, 不论是在语音序列匹配, 股市交易曲线匹配, 还是DNA碱基序列匹配等等场景, 都有其大展身手的地方. 它的最大特点是在匹配时允许时间上的伸缩, 因此可以更好的在一堆序列集合中找到最佳匹配的序列.

  1. Eamonn Keogh, Chotirat Ann Ratanamahatana, Exact indexing of dynamic time warping, Knowledge and Information Systems, 2005.
相关文章
|
10月前
|
机器学习/深度学习 Dragonfly 人工智能
基于蜻蜓算法优化支持向量机(DA-SVM)的数据多特征分类预测研究(Matlab代码实现)
基于蜻蜓算法优化支持向量机(DA-SVM)的数据多特征分类预测研究(Matlab代码实现)
219 1
|
9月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
648 0
|
10月前
|
机器学习/深度学习 传感器 数据采集
【23年新算法】基于鱼鹰算法OOA-Transformer-BiLSTM多特征分类预测附Matlab代码 (多输入单输出)(Matlab代码实现)
【23年新算法】基于鱼鹰算法OOA-Transformer-BiLSTM多特征分类预测附Matlab代码 (多输入单输出)(Matlab代码实现)
557 0
|
11月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
374 0
|
机器学习/深度学习 算法 数据可视化
利用SVM(支持向量机)分类算法对鸢尾花数据集进行分类
本文介绍了如何使用支持向量机(SVM)算法对鸢尾花数据集进行分类。作者通过Python的sklearn库加载数据,并利用pandas、matplotlib等工具进行数据分析和可视化。
1383 70
|
机器学习/深度学习 数据采集 算法
短视频到底如何推荐的?深度剖析视频算法推送原理详细且专业的解读-优雅草卓伊凡-【01】短视频算法推荐之数据收集
短视频到底如何推荐的?深度剖析视频算法推送原理详细且专业的解读-优雅草卓伊凡-【01】短视频算法推荐之数据收集
1888 12
短视频到底如何推荐的?深度剖析视频算法推送原理详细且专业的解读-优雅草卓伊凡-【01】短视频算法推荐之数据收集
|
人工智能 算法 语音技术
Video-T1:视频生成实时手术刀!清华腾讯「帧树算法」终结闪烁抖动
清华大学与腾讯联合推出的Video-T1技术,通过测试时扩展(TTS)和Tree-of-Frames方法,显著提升视频生成的连贯性与文本匹配度,为影视制作、游戏开发等领域带来突破性解决方案。
518 4
Video-T1:视频生成实时手术刀!清华腾讯「帧树算法」终结闪烁抖动
|
机器学习/深度学习 资源调度 算法
基于入侵野草算法的KNN分类优化matlab仿真
本程序基于入侵野草算法(IWO)优化KNN分类器,通过模拟自然界中野草的扩散与竞争过程,寻找最优特征组合和超参数。核心步骤包括初始化、繁殖、变异和选择,以提升KNN分类效果。程序在MATLAB2022A上运行,展示了优化后的分类性能。该方法适用于高维数据和复杂分类任务,显著提高了分类准确性。
|
机器学习/深度学习 人工智能 算法
Enhance-A-Video:上海 AI Lab 推出视频生成质量增强算法,显著提升 AI 视频生成的真实度和细节表现
Enhance-A-Video 是由上海人工智能实验室、新加坡国立大学和德克萨斯大学奥斯汀分校联合推出的视频生成质量增强算法,能够显著提升视频的对比度、清晰度和细节真实性。
866 8
Enhance-A-Video:上海 AI Lab 推出视频生成质量增强算法,显著提升 AI 视频生成的真实度和细节表现
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
645 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台