时间序列:change point detection
Posted JSong的数据科学小站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间序列:change point detection相关的知识,希望对你有一定的参考价值。
首先感谢 范先生 的供稿,这是他花了两个礼拜看了 n 篇文献整理出来的干货~ change point detection 是一个非常有用的课题,比如金融里某只股票开始非正常下跌,互联网中某些特殊事件引起的订单量变化等。
change point detection,被称为 变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然性因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。
change point detection 的类型
online 与 offline
前者指连续观察某一随机过程,监测到变点时停止检验,不运用到未来数据,主要用于事件预警,后者指线下探测,从已获得的时序数列中检测过去的变点位置,主要用作历史检验。
one change point 与 multiple change point
前者指连续观察某一随机过程,监测到变点时停止检验,不运用到未来数据,主要用于事件预警,后者从已获得的时序数列中检测过去的变点位置,主要用作历史检验。
1. 控制图 方法 CUSUM
原理与介绍
根据累计 数据 微小的偏差,来探测 数据分布是否发生了变化。
最老最原始,被业界广泛使用 于 工业质量检测,自动监测,金融方面。比如被阿里用于全景业务平台的监控解决方案。
基本模型流程 (参数:threshold)
(1)input:time series
(2) for 0 —-〉n,计算 累计偏差量
(3)如果累计偏差量 大于 阈值 threshold,则视为 这段time series 与 前段 time series 有明显不同 ——〉 分割出两个 区间 windows,从开始出现偏差的点,可以推出change point
(4)output: windows,change points
优缺点
需要调参 threshold,太小模型太敏感,太大模型太粗糙。
解决方案:
是存在自适应的方案
动态阈值预测: 样本选择 ——〉异常样本筛除 ——〉 样本截取 ——〉 预测基准值
(一阶导数的状态值 )
比较简单的方案,比较容易实施。
业界研究与应用比较多,可以找到很多相关材料与优化方法。
2. probability density estimation
想法与原理
对于一组时间序列,出现change point前与出现change point后的概率密度分布会不同。
基本模型流程
用前n个点, probability density models —-〉estimate probability density function
然后用 score来衡量, 加入 这个点后, 概率密度分布的差异(加入这个点后,概率密度分布 的变化大小)
score越高,这个点是change point的概率越高。
优缺点
概率密度估计模型 的确立,带参数
probability density function 很难 做的准确, —- 数据量
所以引入了下面的方法。
3. direct compute
想法
因为概率密度分布很难做的准确,因此 衍生出了,不计算评估概率密度分布,而是直接 一个point前后的 概率目的分布的差异 对于一个点前的数据和之后的数据,用一些模型/算法可以衡量他前后 分布的差异:
可以比较多种差异:
mean
var
mean and var
等等
相关的模型: 量化两种概率分布P和Q之间差异
Kernel Mean
non-parametric Gaussian kernel model
Kullback-Leibler Importance Estimation Procedure
kernel FDA
如何分割time series:
穷举任何 可能的分割,进行运算是不可能的。
BinSegment
bottom-up
Window-based
Segment Neighbourhood
等等
优缺点:
这部分方法很容易受 data noise的影响 —- 高维度可能效果很差
4. Probability Method
和前面对比 change point 前后分布的不同,
这部分 侧重于 直接 预测 某个点是否是 change point。
(1)GP gaussian process
想法:用t之前的N点 构建一个 time series prediction的模型 (这里就是GP模型),然后如果t点的值 和 预测的值偏差很大,就记一个potential Alarm,当连续几个值偏差很大,potential Alarm 超过某个阈值时,就Raise Alarm,说明出现 新的分布。
优缺点:
这个方法对 one-day-event 不敏感
(2)bayesian
一开始也和GP差不多
想法
对于一个点,给定他 在上个 change point 之后的信息,估计这个点是change point的概率。详细算法可见paper,比较难解释。
优缺点
先验函数很难定义,定的不好,结果不准。
一般来说offline的方法比online的更准确。
然后GP会比 Bayesian更准确。
5. clustering method
想法
把 change point detection看成,我们将 time series 分成很多的 clusters。
(1)层次聚类
将许多 time series 进行聚类,在同一类中,如果有一个 time series 的行为与同聚类内其他成员差异较大,则视作发生了change
(2)图形聚类
(3)基于局部图形聚类与分割
6. 其他
基于 图论
graph-based change point detection
基于 控制论, 系统辨识 方法
subspace-based change point detection
7. 参考文献
[1]. Aminikhanghahi, Samaneh and Diane J. Cook. “A survey of methods for time series change point detection.” Knowledge and Information Systems 51 (2016): 339-367.
[2]. Liu, Song, Makoto Yamada, Nigel Collier and Masashi Sugiyama. “Change-Point Detection in Time-Series Data by Relative Density-Ratio Estimation.” Neural networks : the official journal of the International Neural Network Society 43 (2012): 72-83.
[3]. Itoh, Naoki and Juergen Kurths. “Change-Point Detection of Climate Time Series by Nonparametric Method.” (2010).
[4]. Cho, Haeran and Piotr Fryzlewicz. “Multiple change-point detection for high-dimensional time series via Sparsified Binary Segmentation.” (2013).
[5]. Saatci, Yunus, Ryan D. Turner and Carl E. Rasmussen. “Gaussian Process Change Point Models.” ICML (2010).
[6]. Lacasa, Lucas, Bartolo Luque, Fernando J Ballesteros, Jordi Luque and Juan Carlos Nuño. “From time series to complex networks: the visibility graph.” Proceedings of the National Academy of Sciences of the United States of America 105 13 (2008): 4972-5.
[7]. Harchaoui, Zaïd, Francis R. Bach and Eric Moulines. “Kernel Change-point Analysis.” NIPS (2008).
[8]. Jeske, Daniel R., Veronica Montes De Oca, Wolfgang Bischoff and Mazda Marvasti. “Cusum techniques for timeslot sequences with applications to network surveillance.” Computational Statistics & Data Analysis 53 (2009): 4332-4344.
[9]. Chib, Siddhartha and John M. Olin. “Estimation and comparison of multiple change-point models.” (1997).
以上是关于时间序列:change point detection的主要内容,如果未能解决你的问题,请参考以下文章
python使用matplotlib可视化使用scatter函数可视化散点图并使用s参数设置数据点的大小(change size of points)
css 更改导航栏响应断点。来自https://coderwall.com/p/wpjw4w/change-the-bootstrap-navbar-breakpoint
css 更改导航栏响应断点。来自https://coderwall.com/p/wpjw4w/change-the-bootstrap-navbar-breakpoint