ruptures库介绍

ruptures库介绍

环境配置可以直接pip安装,但在github链接中有对其的user-guide介绍,其中包括:

  • ruptures.base: base classes;
  • ruptures.detection: search methods;
  • ruptures.costs: costs functions;
  • ruptures.datasets: data set generating utilities;
  • ruptures.metrics: evaluation metrics;
  • ruptures.show: display functions.
    其中search methods采用的算法,有binseg,bottomup,dynp,kernelcpd,pelt,window6种。

binseg

二进制变化点检测用于执行快速信号分割,并在[Binseg]中实现。它是一种顺序方法:首先,在完整的输入信号中检测一个变化点,然后围绕该变化点分割级数,然后对生成的两个子信号重复该操作。关于[Binseg][breakees.detection.Binseg.Binseg]的理论和算法分析,例如参见[Bai1997]和[Flyzlewicz2014]。二进制分割的好处包括低复杂度(O(Cnlogn)的数量级),其中n是样本数量C在一个子信号上调用所考虑的成本函数的复杂性),它可以扩展任何单个变化点检测方法来检测多个变化点,并且无论状态的数量是否事先已知,它都可以工作

Bottom-up segmentation

自下而上的变化点检测用于执行快速信号分割,并以顺序的方式在[BottomUp][breakuses.detection.BottomUp.BottomUp]中实现。与二进制分割(这是一种贪婪的过程)相反,自下而上的分割是慷慨的:它从许多变化点开始,然后依次删除不太重要的变化点。首先,将信号沿着规则网格划分为许多子信号。然后,根据它们的相似程度,连续的段被依次合并。例如,参见[Keogh2001]或[Freyzlewicz2007],以获得[BottomUp][breakees.detection.BottomUp.BottomUp]的算法分析。自下而上分割的好处包括低复杂性(O(nlogn)的阶数,其中n是样本数),事实上,它可以扩展任何单个变化点检测方法来检测多个变化点,并且无论状态的数量是否事先已知,它都可以工作

Dynamic programming

该方法在[Dynp][tructures.detection.Dynp.Dynp]中实现,这是一个完整的本地python实现,用户可以选择在tructures.costs中定义的任何成本函数
它通过计算给定信号的所有子序列的成本来找到成本总和的(精确的)最小值。它被称为“动态编程”,因为使用动态编程方法对所有可能的分段进行搜索。
为了工作,用户必须提前指定要检测的更改数量。(当这个数字未知时,考虑使用惩罚方法。)
动态编程方法的复杂性为O(CKn2)阶,其中K是要检测的变化点的数量,n是样本的数量,C是在一个子信号上调用所考虑的代价函数的复杂性。因此,分段常数模型(模型=l2)明显快于线性或自回归模型。

Kernel change point detection

把时间序列信号使用一个核函数映射至一个空间,核变化点检测在于找到映射信号中的平均偏移,变点检测被建模为带惩罚的优化问题。 论文参考[Killick2012]

Linearly penalized segmentation

因为枚举所有可能的分区是不可能的,所以该算法依赖于修剪规则。许多索引被丢弃,大大降低了计算成本,同时保留了找到最优分割的能力。实施遵循【Killick2012】。此外,在变化点重新划分的某些条件下,平均计算复杂度为O(CKn)阶,其中K是要检测的变化点的数量,n是样本的数量,C是在一个子信号上调用所考虑的代价函数的复杂度。因此,分段常数模型(模型=l2)明显快于线性或自回归模型

Window-based change point detection

该算法使用两个沿数据流滑动的窗口。将每个窗口内的信号的统计特性与差异度量进行比较。如果滑动窗口属于同一分段,它们的统计特性相似,并且第一窗口和第二窗口之间的差异很低。如果滑动窗口分为两个不同的部分,则差异明显更大,这表明窗口之间的边界是一个变化点。形成差异曲线,并在差异曲线上执行顺序峰值搜索,以检测变化点。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值