← 返回栏目

matrixprofiler 0.1.12 与 tsmp 0.5.1 发布:R 中的时间序列对比剖面工具更新

灰白方格纸上的十二导联心电图,各导联分四行排列,宽大而规则的波形反复出现,底部是一条贯穿全幅的长节律条

一份室性心动过速的十二导联心电图,宽大的波形在各导联中规律重复。心电图是对比剖面论文的案例领域之一。作者:Ksheka(英文维基百科);来源:Wikimedia Commons;许可:CC BY-SA 2.5。

2026 年 10 月中旬,R 包 matrixprofiler 0.1.12 与 tsmp 0.5.1 先后登上 CRAN:重计算交给 C++17 多线程引擎,并新增相对频率对比剖面(RFCP),用来在弱标注时间序列中找出“正类常见、负类少见”的片段。开发者自报部分算法提速约 200 倍,尚无独立基准;原论文显示 RFCP 在标准分类基准上多数不及 fast shapelets,优势在弱标注场景。

两次发布与分工调整

matrixprofiler 0.1.12 于 2026 年 10 月 14 日在 CRAN 发布,tsmp 0.5.1 于 10 月 16 日发布,两者均由 Francisco Bischoff 维护,代码托管在 Matrix Profile Foundation 的 GitHub 组织下。10 月 16 日,Bischoff 在个人博客发表《tsmp Is Back》介绍这次重组,R-bloggers 随后转载。矩阵剖面(Matrix Profile)是加州大学河滨分校 Eamonn Keogh 团队提出的时间序列分析框架:对每个长度为 m 的滑动窗口,记录它与序列中最相似片段之间的距离,据此寻找反复出现的模式(motif)和孤立的异常片段(discord)。

这次更新的核心是分工。matrixprofiler 承担 STOMP、MPX、MASS、MPdist 等底层计算,以 C++17 编写并通过 RcppThread 原生多线程;tsmp 保留 motif、链、语义分割、snippet 与绘图等面向分析者的接口,日常写法 tsmp(series, window_size = 80) 不变。tsmp 的 NEWS 写明新版改为纯 R 实现(NeedsCompilation: no),但截至 10 月 17 日,CRAN 页面的元数据仍显示 NeedsCompilation: yes,Windows r-release 二进制也仍是 tsmp 0.4.16 和 matrixprofiler 0.1.10,各平台构建尚未完全同步。

对比剖面与 RFCP 的思路

对比剖面(Contrast Profile)来自 Ryan Mercer、Eamonn Keogh 等人在 ICDM 2021 发表的短文,2022 年扩展发表于 Data Mining and Knowledge Discovery。它针对一类常见的弱标注问题:分析者只知道某段记录里“有”目标行为(正类 T⁺),另一段里“没有”(负类 T⁻),却说不清行为具体发生在哪几秒。算法对 T⁺ 中每个子序列算两个最近邻距离,用它到 T⁻ 的最近距离减去它在 T⁺ 内部(排除与自身重叠的平凡匹配)的最近距离,再除以 √(2m) 归一化。差值最大的子序列称为 Plato,可作为目标行为的候选模板。

经典对比剖面要求 T⁺ 至少包含两次目标行为、T⁻ 一次也没有;论文明确指出,只要 T⁻ 里混入一次目标行为,它就找不到有意义的 Plato。相对频率对比剖面(RFCP)把条件放宽为“目标行为在 T⁺ 中比在 T⁻ 中更频繁”:它不只看第 1 近邻,而是比较两边第 K 个互不重叠的近邻距离,K 的上限由 max_freq 设定。打个比方,经典方法问的是“这个动作是否只在实验组出现”,RFCP 问的是“这个动作是否在实验组反复出现,而在对照组只是偶尔出现”。

matrixprofiler 此次提供 RFCP 的原生实现 rfcp(),以及迭代发现多个模式的 rfcp_top_k():每找到一个 Plato,就把它和它在 T⁺ 中的近邻并入负类并设置排除区,再搜索下一个,避免 Top-K 结果只是同一形态的几个重叠峰值;长任务还可分块计算并通过回调保存断点。需要说明,经典对比剖面函数 contrast() 早在 matrixprofiler 0.1.8 就已加入,并非本次新增;目前也没有对应的 contrast_top_k(),需要多个经典 Plato 时要由用户自己写循环。

上方灰线中三段橙色高亮的相同尖峰波形,中间灰线没有该波形,下方青色曲线在三处对应位置隆起,最右侧峰值标注 Plato

对比剖面示意:同一波形在正类序列 T⁺ 中反复出现、在负类序列 T⁻ 中缺失时,对比剖面在对应位置取得峰值,得分最高的子序列即 Plato。示意图根据 Mercer 等人 2022 年论文的定义绘制,并非论文原图。AI 生成示意图。

速度、正确性与分类效果的证据

速度方面的证据全部来自开发者在 NEWS 中的自述,属于自测而非独立基准。matrixprofiler 0.1.12 称原生多变量 STOMP 比旧版纯 R 实现快约 197 倍(tsmp 的 NEWS 写作约 200 倍),滑动窗口最小值等环节改用线性时间算法后提速 10 到 100 倍以上;开发版 0.1.11.9009 记录 RFCP 的 CUDA 后端比单线程 CPU 快 12 倍以上。NEWS 没有给出测试硬件、数据规模和重复次数,这些倍数只能当作量级参考,用户应在自己的数据和机器上复测。

正确性方面,NEWS 记录了几类回归测试:CUDA 版 RFCP 与 CPU 实现对照,在真实数据上 Plato 位置一致,距离剖面差异在 10⁻¹⁴ 量级;含缺失值的 MPX 路径与 STAMP 及一个独立的暴力实现做随机压力测试。这类测试说明不同实现之间结果一致,并不评价方法本身的好坏。

方法效果要回到 2022 年的期刊论文。在 UCR 档案的 Trace 数据集上,经典对比剖面用单一窗口长度时错误率为 0.17,改用多窗口长度和多近邻后降到 0.02;作为对照,论文引用的 logical shapelets 与 fast shapelets 错误率分别为 0.01 和 0.09。在 24 个 UCR 数据集上比较 RFCP Plato 与 fast shapelets 的准确率时,作者坦言多数数据点偏向 fast shapelets,并说明这项对比的目的不是证明更优,而是显示 Plato 的类别描述能力与 shapelets 相当。运行时间方面,Trace 数据集(100 条样本、每条长 275)单核完整运行,fast shapelets 用时 158 秒,经典对比剖面 17 秒,RFCP 673 秒。

因此,RFCP 的价值不在标注干净的数据上拼分类精度,而在 shapelets 难以处理的弱标注、未切分的长序列。论文用昆虫取食、鸡只行为、心电图和地震事件等案例展示了这类用途,但在标准基准上的结论是“相当”而不是“更好”;作者认为 UCR 档案标注噪声低、未能体现对比剖面的优势,这一判断在文中没有配套的对照实验。

适用边界与迁移成本

  • 数据条件:需要能拼出 T⁺ 和 T⁻ 两段序列。经典版对 T⁻ 的“纯净”要求严格,RFCP 放宽了这一条件,但要设定 max_freq。多个类别共享部分特征时(论文以 MALLAT 数据集为例),按最相似 Plato 分类容易混淆,基于信息增益的 shapelets 决策树更占优势。
  • 计算成本:论文给出的复杂度是经典对比剖面 O((nm)²),RFCP 再多一个 log(nm) 因子,长序列需要依赖多线程或 GPU。CUDA 后端须从 GitHub 源码手动编译,CRAN 版不会自动启用,安装后可用 matrixprofiler::has_cuda() 检查。
  • 并行方式:0.1.12 的 NEWS 提示,基于 fork 的并行 worker 与原生线程存在冲突风险,跨多条序列并行时建议使用 PSOCK 集群、每个进程设 n_workers = 1。
  • 旧代码迁移:旧脚本如果创建 doSNOW 集群,或把无效索引当作 -1,需要改用 n_workers 参数和 R 的 NA_integer_;JSON 读写函数也已改名为 write_json() 和 read_json()。

参考文献

  1. Bischoff, F. (2026-10-16). tsmp Is Back: A Faster, Friendlier Matrix Profile Workflow for R. https://franzbischoff.rbind.io/posts/matrixprofiler-and-tsmp-major-updates/

  2. CRAN. tsmp: Time Series with Matrix Profile, version 0.5.1 (2026-10-16). https://CRAN.R-project.org/package=tsmp;NEWS:https://cran.r-project.org/web/packages/tsmp/news/news.html

  3. CRAN. matrixprofiler: Matrix Profile for R, version 0.1.12 (2026-10-14). https://CRAN.R-project.org/package=matrixprofiler;NEWS:https://cran.r-project.org/web/packages/matrixprofiler/news/news.html

  4. Mercer, R., Alaee, S., Abdoli, A., Singh, S., Murillo, A., & Keogh, E. (2021). Matrix Profile XXIII: Contrast Profile: A Novel Time Series Primitive that Allows Real World Classification. IEEE ICDM 2021, 1240–1245. https://doi.org/10.1109/ICDM51629.2021.00151

  5. Mercer, R., Alaee, S., Abdoli, A., Shakibay Senobari, N., Singh, S., Murillo, A., & Keogh, E. (2022). Introducing the contrast profile: a novel time series primitive that allows real world classification. Data Mining and Knowledge Discovery, 36, 877–915. https://doi.org/10.1007/s10618-022-00824-5

  6. 研究方法 · 仪式可以模仿,理解无法伪装

  7. 信息由 Scholay 学术一站式平台 整理并发表,如有侵权请反馈下架。

  8. 信息同步发表于恩特学术,智能时代的学者社区