【视频】时间序列分类方法:动态时间规整算法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.
目录
打赏
0
0
0
0
111
分享
相关文章
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
226 6
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
基于WOA鲸鱼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB 2022a实现时间序列预测,采用CNN-GRU-SAM网络结构,结合鲸鱼优化算法(WOA)优化网络参数。核心代码含操作视频,运行效果无水印。算法通过卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征,全连接层整合输出。数据预处理后,使用WOA迭代优化,最终输出最优预测结果。
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
233 80
基于GA遗传优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目使用MATLAB 2022a实现时间序列预测算法,完整程序无水印。核心代码包含详细中文注释和操作视频。算法基于CNN-LSTM-SAM网络,融合卷积层、LSTM层与自注意力机制,适用于金融市场、气象预报等领域。通过数据归一化、种群初始化、适应度计算及参数优化等步骤,有效处理非线性时间序列,输出精准预测结果。
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
421 13
机器学习算法的优化与改进:提升模型性能的策略与方法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。