时序变点检测

变点检测的定义

变点检测(Change point detection, CPD)是指在时间序列中发现统计特性发生重大变化的点

变点检测示例(斯匹次卑尔根岛的年均气温趋势):

变点检测的分类:

  • 按照是否回顾整个历史数据集,分为离线检测和在线/实时检测
  • 按照预测目标可以分为变点识别(分类)、变化度预测、变点时间预测
  • 按照训练过程是否使用数据集标签,分为有监督方法和无监督方法

常见变点检测算法

变点检测的有监督方法:

  • 常见分类器:决策树、朴素贝叶斯、贝叶斯网络、SVM、KNN、HMM、CRF 等
  • 虚拟分类器:定义第一个窗口内的所有连续样本的标注为 1,第一个窗口内的所有连续样本的标注为 -1;通过构建分类器预测标注结果的变化来判断是否存在变点检测

变点检测的无监督方法:

  • 似然比法:两个连续窗口内的状态相同时,它们的概率分布也相同;这种概率差异的评估,可以依赖距离函数(比如协方差变动、Hellinger 距离)或异质性度量(比如 KL 散度、PE 散度)
  • 子空间建模:使用状态空间来表示时序,通过预测状态空间参数来检测变点
  • 概率方法:根据一个候选变点依赖的观测序列来估计新区间的概率分布;该方法假设同一状态内的时序是独立同分布(iid)的,常见方法为在线贝叶斯变点检测、高斯过程
  • 核方法:将观察结果映射到高维的特征空间,通过比较每个子序列的同质性(核 Fisher 判别比,KFDR)来检测变点;缺点是严重依赖核函数及其参数的选择
  • 图方法:将时序表示为图,应用统计检验方法来检测其中的变点
  • 聚类方法:将时序数据进行分组,通过识别状态特征间的差异来发现变点

常见的变点检测方法

  • 误差累积法 - 最经典的一种似然比法,当累积误差超过指定阈值时提示变点
  • Change Finder(似然比法) - 用自回归(AR)将变点检测简化为时序异常检测
  • 在线贝叶斯变点检测(概率方法) - Online Bayesian Changepoint Detection

变点检测的应用

工具和软件包:Python 中的“ruptures”库和 R 中的“changepoint”包

应用领域:

  • 在金融领域,它用于识别市场趋势的变化,帮助交易者做出明智的决策
  • 在医疗保健领域,CPD 可以监测患者的生命体征,提醒需要关注的重大变化
  • 在环境科学领域,有助于检测气候模式的变化,有助于制定更有效的保护策略

变点检测的局限性:

  • 在线的变点检测可能存在延迟问题,需要在算法延迟和检测质量之间平衡
  • 虽然非参数方法一般鲁棒性由于参数方法,但关于变点检测的鲁棒性分析较少
  • 变点检测方法依赖窗口大小的设定,需要为每个子序列寻找到最佳的窗口大小
  • 大部分变点检测需要通过阈值来确定变点,而最佳阈值的选择是困难的
  • 非平稳的时间序列可能存在概念漂移的问题,这也可能会影响到变点检测

参考:A Survey of Methods for Time Series Change Point Detection

往年同期文章