时序相似性方法盘点:DTW、矩阵轮廓与学习表示该怎么选

从比较对象、数学假设到 Python 工具。 核查日期:2026 年 10 月 29 日。English

想逐步查看一种方法如何计算,可以打开方法动图详解:现有方法页的 137 个条目均配有 GIF、静态总结、四步说明、明确的示例输入和解释边界,可按方法名称查找。

两条曲线可以形状一致,实际能耗相差很大;两段记录可以包含相同的短事件,整体变化却完全不同;两个数据集也可以具有相近的频谱,却来自不同的生成机制。选择相似性方法,首先需要说明我们关心其中哪一种关系。

本文采用一个明确的选型顺序:先确定比较对象,再决定哪些差异必须保留,最后选择表示、比较规则与实现。 这是本文提出的决策框架。下文的方法介绍依据原始论文与官方文档,本文没有开展新的速度或精度排行榜实验。

一、先把“匹配”定义清楚

你要回答的问题 实际比较对象 应当评价的输出
哪段完整记录与这段记录相似? 整条序列,或事先明确切分的完整过程 候选记录排序及其相关性
这个短模式在哪里再次出现? 查询片段与候选子序列 匹配位置、持续时间和距离
哪些数据集具有可比较的时间结构? 序列集合的分布或结构摘要 具体哪些性质相近、哪些性质不同
模型应当最小化什么误差? 预测与观测,或学习到的表示 优化行为及下游任务表现

整段平均得分可能掩盖一个很短的事件;子序列搜索可能在整体差异很大的记录中找到局部匹配;数据集画像能够支持探索性分组,但单凭画像无法证明具体轨迹一一对应。把输出区分清楚,才能解释算法回答了什么。aeon 的相似性搜索接口也明确区分整序列搜索与子序列搜索。

一个可操作的需求可以写成:“检索同一种设备运行周期,允许适度的速度变化,同时保留正常振动与过强振动之间的区别。”这句话同时给出了需要容忍的变化,以及预处理必须保留的差异。

二、每一种不变性都会舍弃信息

对非常数序列 $x$,正比例缩放和平移满足 $z(3x+7)=z(x)$。这是减去均值、除以标准差的直接结果。如果传感器增益和零点偏移与任务无关,这个性质很有用;如果目标是比较绝对负荷,它恰好丢失了需要保留的信息。

处理或比较方式 可能弱化的信息 使用前需要回答的问题
每条序列分别做 z 标准化 平均水平、正比例幅度差异 绝对水平或波动幅度是否决定匹配?
全局位移匹配 整个波形共同提前或延后 事件发生时间本身是否重要?
局部时间规整 部分局部持续时间和速度差异 哪些时间变形在物理上可以接受?
幅值频谱比较 傅里叶相位 事件顺序和准确发生时刻是否重要?
统计特征比较 特征没有保留的细节 关键反例能否具有相同的这些摘要?
学习表示 训练与池化压缩掉的差异 本次检索要区分的信息是否还存在?

这里还有一个容易忽略的数学边界:若表示映射 $\phi$ 把两条不同序列映成同一个向量,它们在特征空间的欧氏距离就是零。欧氏距离仍然是特征空间上的度量,但无法分开原序列空间中的所有对象。这个性质限定了结果能够支持的结论。

三、主要方法家族分别比较什么

逐点距离与相关系数

当观测位于共同时间网格时,欧氏距离或绝对误差保留每个对应位置上的数值差异。相关系数描述中心化与尺度处理后的关联程度,不能直接衡量绝对数值的一致性。

对于等长、非常数、采用总体方差进行标准化的两个向量,有 $|z(x)-z(y)|^2=2n(1-r)$。因此在这些条件下,标准化欧氏距离与 Pearson 相关系数给出的排序等价。缺失值处理和标准化约定发生变化时,需要重新核对条件。

DTW 与受约束 DTW

DTW 在允许的单调对齐路径中搜索较小的匹配代价。局部代价、起止点规则和路径约束共同定义计算结果;规整窗口限制允许的时间变形。标准 DTW 不满足全部度量公理,依赖度量性质的下游算法需要额外论证。tslearn 的 DTW 文档给出了公式和常用约束。

建议同时检查路径和分数。一个低代价路径可能反复拉伸某段具有研究意义的过程,这种匹配是否合理,需要依据任务判断。还应记录输出到底是绝对代价之和、平方代价之和、开平方后的值,还是经过长度归一化的转换分数。仅写“采用 DTW”不足以复现数值。

全局形状匹配与局部形状描述

k-Shape 使用的 SBD 基于归一化互相关寻找整体位移,k-Shape 算法本身还定义了聚类中心更新方法。原始定义见 Paparrizos 与 Gravano(2015)。shapeDTW先构建局部描述子,再对描述子序列进行对齐。整体位移与局部非线性对齐允许的变化不同;局部描述子的邻域大小也需要明确设置。

编辑式距离与带惩罚的对齐

LCSS、EDR、ERP、MSM、TWE 对匹配、插入删除、分裂合并或时间惩罚采用不同规定,鲁棒性和数学性质不能仅凭家族名称判断。阈值与代价参数需要结合观测单位确定。文献地图提供了各方法的原始来源。

一个较新的例子是 ADTW(2023),它为时间规整步骤加入加性惩罚。惩罚反映对时间变形的容忍程度,其量级、选择方式以及调参是否使用标签,都应进入实验协议。

特征、频谱与符号比较

特征映射可以突出自相关、频率成分、趋势或符号模式等性质。探索性分析中,应当直接说明比较了什么:“归一化频谱相近”是可核对的具体判断,“来自同一种时间过程”则需要更多证据。频率比较还需要兼容的物理采样尺度,数组下标本身不能定义赫兹。

对于多变量序列,还要说明通道对应关系,以及各通道是否共享同一条时间对齐路径。共享路径约束通道一起移动;逐通道路径允许它们分别调整。d'Hondt 等(2025)把距离家族、标准化和通道依赖假设纳入统一比较,支持我们把这些因素明确列入协议。该研究的结论仍受其数据集和设置范围约束。

四、矩阵轮廓回答的是局部搜索问题

标准矩阵轮廓记录每个固定长度子序列与最近合格邻居之间的距离,常见定义采用 z 标准化欧氏距离。自连接需要排除平凡的邻近匹配;跨记录连接则在另一条序列中寻找邻居。STUMPY 的矩阵轮廓介绍和 AB-join 教程说明了这些操作。

这种表示适合寻找重复模式或相对孤立的片段。较大的轮廓值表示:在给定窗口、距离和候选集合下,该片段缺少近邻。要进一步把它解释为临床异常、设备故障或其他具有领域含义的事件,还需要相应证据。

窗口长度直接参与定义任务。持续五个采样点的事件和持续五百个采样点的周期,不能在未说明的情况下作为同一个搜索问题处理。可复现的报告至少应交代窗口、归一化、排除区、常数窗口约定以及连接方向。若同时搜索多种长度,还需说明跨长度结果如何筛选和比较。

五、学习表示与训练损失分别解决什么

Soft-DTW对路径代价进行平滑聚合,在合适的局部代价和正平滑参数下支持求导,因此可以作为模型优化的一部分。原始 soft-DTW 可能为负,相同输入处也未必达到最小值。Blondel、Mensch 与 Vert(2021)提出了校正散度,并在明确条件下证明相关性质。平滑损失、非负散度和数学度量各有不同要求。

学习嵌入提供了另一种比较空间。TS2Vec通过层次化对比学习构建时间点及子序列表示;MOMENT提供面向多种时序任务的预训练表示。它们构成测试学习表示的依据,但新的检索任务仍需要独立定义“什么结果算相关”。

近期的检索增强研究进一步体现了这个区别。TS-RAG(NeurIPS 2025)检索片段以支持时序预测。预测精度衡量组合系统的最终任务表现;若进一步主张检索质量更高,还需要相关性目标与检索评价。

采用嵌入比较时,建议记录检查点、训练数据暴露情况、输入长度、预处理、池化方式和潜空间距离,并检查任务要求保留的差异是否仍可区分。例如,将小幅和大幅波动放在一起的表示,可能适用于形状检索,却不符合幅度敏感的匹配要求。

六、Python 工具应该按输出选择

这些库的能力存在交集。下表依据核查当日的官方文档列出实用入口,不构成速度排名。

工具 相关公开能力 可以从哪类任务入手
aeon 多种距离、对齐路径、成对计算,以及相似性搜索接口 比较距离选择,构建整序列或子序列搜索
tslearn DTW、soft-DTW、重心计算与时序学习 将对齐几何用于聚类或学习
DTAIDistance DTW 实现、路径、剪枝与成对距离矩阵 计算并检查 DTW 距离和对齐
STUMPY 矩阵轮廓与子序列连接 定位重复或孤立的固定长度模式
sktime 多类时序学习任务的接口及组合 整合变换、估计器与评价流程
EchoTime 序列综合报告、结构画像比较、HTML 与 JSON 输出 同时检查并交流多个结构视角

比较数值前,需要阅读具体函数的定义。例如 DTAIDistance 的 distance_fast 选择 C 实现及相应剪枝默认值;EchoTime 的底层弹性方法 mode="fast" 采用有分辨率上限的筛选计算。函数名称都带有“fast”,并不说明近似策略一致。DTAIDistance API · EchoTime 实现。

七、一套便于团队审查的比较协议

以下是本文建议的执行步骤,不是关于某个方法优越性的实证结论。

  1. 固定匹配定义。 明确查询对象、候选范围、物理单位、持续时间、允许变化和相关性标签。类别标签可以是一种相关性定义,但未必涵盖所有具有研究意义的匹配。
  2. 保护评价边界。 根据实际应用,先按独立个体、设备或时间段等单位划分,再生成重叠窗口。若近重复窗口或未来观测会使评价变得平凡,或在实际使用时不可获得,就应从候选池中排除。
  3. 公开预处理。 记录标准化、时间戳、缺口、通道顺序和重采样。如果要隔离距离函数的影响,应保持其他处理一致;若比较完整流程,则明确报告各流程的差异。
  4. 调参不使用测试结果。 对齐窗口、编辑阈值、池化及模型检查点都属于协议的一部分。若选择过程使用标签,应明确报告监督信息。
  5. 评价所需输出。 检索采用相关性排序评价;对齐采用对应关系证据;聚类评价聚类结果;预测系统评价预测终点。计算开销也应针对实际工作负载测量。
  6. 检查有解释力的失败案例。 依据任务加入同形异幅、事件平移、持续时间变化、缺失观测等情境。将这些受控示例与真实数据证据分别报告。

对于近似搜索,应在明确的评价集合上,以精确参考结果测量近邻召回率。对筛选出的候选重新计算精确距离,可以修正这些候选的分数,但无法找回第一阶段已经遗漏的对象。

八、用 EchoTime 同时检查多个结构视角

EchoTime 可以生成组件级比较,并输出便于分享的报告。当前 compare_series 会把输入重采样到共同点数,对通道进行标准化,再组合形状、DTW 相关、趋势、一阶变化与频谱组件。默认重采样点数为 256。传入时间戳时,两条输入的时间跨度分别归一化,因此绝对持续时间和真实时钟对齐仍需单独检查。具体行为见本次检查的实现。

python -m pip install echotime
from pathlib import Path
import numpy as np
from echotime import compare_series

# 合成数据用于演示报告接口,不作为性能比较证据。
t = np.linspace(0, 4 * np.pi, 128)
x = np.sin(t)
y = np.sin(t + 0.2)

report = compare_series(x, y, left_name="reference", right_name="shifted")
print(report.to_summary_card_markdown())
Path("similarity_report.html").write_text(
    report.to_html_report(), encoding="utf-8"
)

解读时应同时查看组件和处理约定。综合分数是探索性摘要,目前没有证据将它解释为经过校准的概率。画像层面的比较也只描述所选结构轴的接近程度,不能据此确认共同因果机制或模型迁移一定成功。

一个具体的起点是:选一对团队能够解释其相似关系的序列,检查报告各组件是否符合这个解释。需要完整对齐路径或子序列搜索结果时,再使用相应工具的接口。方法图谱区分 EchoTime 当前覆盖与更广的方法,文献地图提供进一步扩展的原始依据。


范围与来源。 本文是面向选型的叙述性比较,核查了原始论文、官方软件文档和仓库源码;不主张文献穷尽、不代表已独立复现所引论文,也不宣称 EchoTime 具有已测量的普遍优势。证据表与编辑检查。


Built from the versioned Markdown source. Share questions, corrections and reproducible examples in GitHub Discussions.