时间序列数据通常会在不同的时间范围内反复进行聚类,以挖掘不同时期的频繁子序列模式,这可以进一步支持下游应用。现有的最先进(SOTA)时间序列聚类方法,如K-Shape,能够熟练地根据时间序列的形状对其进行聚类。然而,数据库内时间序列聚类问题一直被忽视,尤其是在数据量大且效率要求高的物联网(IoT)场景中。大多数时间序列数据库采用基于日志结构合并树(LSM-Tree)的存储来支持大量写入操作,但这会导致底层数据点的时间戳无序。因此,应用现有的数据库外方法时,必须将所有数据点完全加载到内存中并按时间顺序排序。此外,数据库外方法每次都必须从头开始聚类,在处理不同时间范围的查询时效率低下。
本文介绍一篇来自清华大学的研究团队的工作,该工作已被SIGMOD 2025接收。研究者提出了将 SOTA 时间序列聚类方法 K-Shape 适应于数据库内环境。此外,为了解决 K-Shape 无法高效处理长时间序列的问题,提出了 Medoid-Shape 及其数据库内适应版本,以进一步加速处理。研究者进行了大量实验,证明了所提方法的高效性,同时保持了相当的有效性。
【论文标题】
In-Database Time Series Clustering
论文背景
时间序列聚类是一种重要的数据分析技术,广泛应用于多个领域,如金融、气象学和生物医学领域等。现有的最先进的(SOTA)时间序列聚类方法是 K-Shape,它能够高效地根据时间序列的形状进行聚类,并且比其他现有方法具有更高的准确性。然而,K-Shape 在物联网(IoT)场景中面临挑战,因为物联网数据具有以下特点:
- 数据到达无序:由于传输问题或传感器故障,IoT 数据的到达常常是无序的。
- 大量数据存储:为了处理这种无序到达的数据,大多数商业时间序列数据库采用日志结构合并树(LSM-Tree)作为存储结构。数据点被批量写入磁盘上的文件中,这些文件可能具有重叠的时间间隔。
考虑到具有时间序列数据库的物联网场景,数据库内时间序列聚类的挑战如下:
- 数据无序问题:时间序列通常由于延迟到达而无序存储在 LSM-Tree 数据库中,而现有的聚类方法需要按时间顺序排列的数据。按时间顺序对数据进行排序会带来额外的预处理时间开销。
- 多次聚类问题:聚类可能需要针对不同任务使用不同的时间过滤器多次执行。K-Shape 每次都需要从头开始聚类,这使得它效率低下。
- 长子序列问题:K-Shape 在处理长子序列时效率低下,因为其复杂度与子序列长度有关。
为了解决上述挑战,研究者做出以下贡献:
- 数据库内K-Shape:提出了对现有聚类方法K-Shape的数据库内适应版本,利用数据库中预计算的页面级元数据进行加速。
- Medoid-Shape:提出了一种新的聚类方法Medoid-Shape,通过用近似的中心点(medoid)代替K-Shape中的形状提取步骤,避免了耗时的特征向量分解。
- 数据库内Medoid-Shape:将 Medoid-Shape方法适应到数据库内场景,进一步提高了聚类效率。
- 实验验证:通过广泛的实验验证了所提方法的高效性和有效性。
图1:数据库内K-Shape算法的工作流程
研究方法
01
In-Database K-Shape Clustering
核心思路:利用数据库存储特性(LSM-Tree的分页结构)预计算聚类元数据,避免全量数据加载和重复计算。
(1)单页元数据:
- 对每页内的完整子序列运行 K-Shape,存储聚类中心、成员子序列的和矩阵(用于形状提取)、平均类内距离。
- 不完整子序列单独存储,留待后续拼接。
(2)多页聚合:
- 相邻页:直接合并相似聚类中心,更新和矩阵(无需重新计算形状)。
- 互补页:将不完整子序列拼接为完整子序列,视为新页后合并。
- 重叠页:加载冲突数据点更新和矩阵,重新提取中心形状。
**(3)最终聚类:**所有页聚合后,从全局和矩阵一次性提取最终聚类中心。
**优势:**减少I/O和计算开销,尤其适合重复查询不同时间范围
02
Medoid-Shape
核心思路:用实际子序列(而非计算出的中心)代表聚类,避免 K-Shape 中耗时的特征分解。
关键步骤:
**(1)问题转化:**将聚类目标改为从子序列集合中选出一组代表序列(Medoids),最大化整体形状相似性。
(2)贪心算法:
- 迭代选择样本子序列,每次选择能使目标函数提升最大的子序列加入中心集。
- 通过采样降低计算量(如每次随机评估部分候选)。
(3)近似评估:
- 先对子序列做快速近似聚类(如K-Means),用聚类中心近似代表全体子序列。
- 计算目标函数时,仅需比较中心与候选 Medoids,大幅减少计算量。
优势:避免O(l3)的特征分解,适合长序列;理论证明近似误差有界。
03
In-Database Medoid-Shape
**核心思路:**将 Medoid-Shape 与数据库存储结合,进一步利用预计算加速。
关键步骤:
(1)单页元数据:
- 每页预计算近似聚类中心(如 K-Means 结果)、类内平均距离、类大小。
- 不存储和矩阵,节省空间。
(2)多页聚合:
- 相邻/互补页:按距离合并相似聚类中心,加权更新类内距离。
- 重叠页:直接更新冲突子序列所属的聚类中心。
**(3)最终聚类:**将所有页的近似中心作为候选,运行贪心算法选出最终 Medoids。
**优势:**空间复杂度更低(无需存和矩阵),适合大规模数据。
图2:In-Database Medoid-Shape的工作流程
实验分析
研究者在实中对比了四种方法,包括传统的 K-Shape 算法、提出的 Medoid-Shape 算法以及它们的数据库内适应版本(in-database K-Shape和in-database Medoid-Shape)。所有方法均在 Apache IoTDB(一个开源的 LSM-Tree 基础的时间序列数据库)上实现。
01
不同数据负载下的可扩展性
(1)子序列数量变化
图3:在不同子序列数量下的时间成本
in-database K-Shape 和 in-database Medoid-Shape在所有数据规模下均优于传统方法(K-Shape 和 Medoid-Shape),因为它们避免了从头开始聚类的低效性。
在某些数据集(如 TY-Vehicle 和 UCR-ECG)中,in-database K-Shape 的性能优于 in-database Medoid-Shape,这主要是由于这些数据集的子序列长度较短或聚类数量较多,导致 Medoid-Shape 的循环次数增加。
(2)子序列长度变化
图4:在不同子序列长度下的时间成本
随着子序列长度的增加,K-Shape 和 in-database K-Shape 的时间成本迅速增加,因为它们需要进行耗时的形状提取。
Medoid-Shape 和 in-database Medoid-Shape 在处理长子序列时表现出显著的效率提升,尤其是在子序列长度达到5l时,它们的时间成本比 K-Shape 低1到2个数量级。
03
不同配置下的效率
(1)补充页面数量变化
图5:在不同补充页面数量下的时间成本
数据表明,随着补充页面数量的增加,数据库内方法的时间成本略有增加,因为需要额外处理新形成的子序列。然而,这些方法仍然优于传统方法。
(2)重叠页面数量变化
图6:在不同重叠页面数量下的时间成本
数据表明,in-database K-Shape 的时间成本随着重叠页面数量的增加而迅速增加,因为每次处理重叠页面都需要进行形状提取。相比之下,in-database Medoid-Shape 的时间成本增加较少,因为它可以在线性时间内处理重叠页面。
(3)重叠长度变化
图7:在不同重叠长度下的时间成本
数据表明,随着重叠长度的增加,数据库内方法的时间成本略有增加,因为需要更多时间来处理重叠部分。即使在极端情况下(所有页面都重叠,且重叠长度达到10,000个数据点),数据库内方法仍然优于传统方法。
实验总结:
- *效率*:In-Database 方法比 K-Shape 快2个数量级,Medoid-Shape 在长序列下优势显著。**
** - *扩展性*:随数据量、页重叠率、序列长度增长保持高效。
- *跨平台验证*:在 RocksDB 和 PostgreSQL 上同样有效
总结
本文研究了数据库内时间序列聚类,以支持在基于 LSM-Tree 的时间序列数据库中对不同时间段数据进行重复聚类。现有的数据库外方法在处理大规模数据和频繁的聚类查询时效率低下,尤其是在物联网(IoT)场景下。因此,研究者提出了一种利用数据库特性的高效聚类方法。
具体而言,研究者设计了最先进的时间序列聚类方法 K-Shape 的数据库内适应版本。为了解决 K-Shape 在处理长子序列时效率低下的问题,进一步提出了 Medoid-Shape 及其数据库内适应版本,以加速聚类过程。研究者推导了若干命题,以确保数据库内方法在多页数据中的聚合正确性,并为 Medoid-Shape 提供了理论上的误差界限保证,以确保其有效性。
此外,研究者已在 Apache IoTDB 中实现了所有提议的方法。广泛的实验表明,本文所提方法在保持与现有方法相当的有效性的同时,显著提高了聚类效率。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。