时序数据分析:时序分割

news2024/11/5 20:42:15

目录

0 工况的定义

1 Changepoint

2 TreeSplit

3 Autoplait 

4 应用示例 

5.分析结论


0 工况的定义

工业设备系统在不同的外部条件(即工况)下,往往有多种运行模式,工业生产也往往会分阶段进行,在不同工况下,数据特点可能明显不同。有的阶段划分存在明确的规则(如设备设计的运行规律)​,有的则是自然发生的,对其规律没有显式认知。对于第二种情况,我们希望能从数据中找到一定的规律,自动挖掘出其阶段变化的分割点。

时序分割对于有监督学习任务来说很重要,在某种程度上与聚类相似,不同工况下不同变量间的关系模型差别很大,若不能很好地提前区别,就需要后续的回归、分类算法做隐式处理,这对算法的稳定性、业务可解释性都提出了很大挑战。另外,分割也可以达到降维效果,简化后续模型,如分割后可以利用有限状态的HMM而不是连续状态的状态方程。3种典型的时序分割示例如图1所示,本节将分别进行介绍。

1 Changepoint

一个最简单的时序分割假设是:时间序列的基础统计量(均值、方差)是分段稳定的。此类算法的重点是寻找统计量的变化点(Change Point)。主要有AMOC(At Most One Change)、PELT(Pruned Exact Linear Time)、BinSeg(Binary Segmentation)、SegNeigh(Segment Neighborhood)等算法,其中AMOC是单变化点检测算法,其他3个算法为多变化点检测算法。

图1

 AMOC基于假设检验,对于一个时序{yn:n=1,…,N},原假设H0为无分割点,备择假设H1为有一个分割点τ∈{1,…,N}。采用AMOC构建统计量:

 式中,p(·)为概率分布函数(根据数据分布选择)​,目标是寻找ML(τ)取极大值参数τ,检验统计量为

 检验过程包括选择一个阈值c,当λ>c时拒绝原假设,使ML(τ)取得极大值的τ就是找到的分割点位置。c值的选择可以查阅参考文献[22]。

多变化点检测问题的表达与上面类似,但需要增加结构约束(否则,极端情况下,每个点都是分割点)​,结构惩罚可以选择标准的AIC、BIC、SIC等准则,也可以采用CROPS、Hannan-Quinn等Changepoint特定准则[23] ,甚至个性化惩罚函数。与点变化点检测问题相比,该优化问题计算复杂度是分割点数目的指数倍,计算法复杂度为O(2N)。为降低复杂度,有很多近优化算法。BinSeg是一种贪婪的迭代算法,采用AMOC算法在整体时序上中找到一个分割点,然后在分段中迭代采用AMOC,直到找不到新的分割,计算复杂度为O(NlogN)。SegNeigh算法采用动态规划获得新的分割点,在计算m+1变化点时会利用m个变化点的信息,计算复杂度为O(QN2),其中Q是最大变化点数目。在SegNeigh算法基础上,PELT[24] 基于“分割点数量随数据总量线性增长,而不是集中在某个局部区域”的假设,将计算复杂度降低为线性搜索复杂度.

R里面有changepoint包[23] ,有cpt.mean()、cpt.var()、cpt.meanvar()三个函数分别针对均值、方差、均值/方差发生变化的情形。下述代码用4段仿真正态分布数据(真实的分割点在第100、200、300个点)​,演示PELT、BigSeg在缺省的MBIC、AIC下的表现。假设分割点的个数为q,第i段的长度为li,AIC惩罚为2q,而MBIC的惩罚为

2/3qlog(N)+,可以看出AIC对MBIC来说惩罚小很多,因此,如图2所示,AIC出来的分段更多。

图2

2 TreeSplit

梯度直方图(Histogram of Oriented Gradients,HOG)是图像识别中较为流行的特征提取方法,具有旋转不变性、位移不变性等良好性质,形状表达能力非常好。单变量时间序列也可以借用此类技术[25] ,用HOG可以将数据符号化,再用树状结构对符号序列进行分割。采用滑动窗口方式提取每个子窗口的HOG特征,然后将HOG特征聚类,即可将原始的时间序列转化为符号序列,如图3所示。

图3

按照符号序列的纯度,按二分法切分符号序列,直到一定的终止条件(例如对应的层数、纯度或最小的子序列长度)​,形成如图4所示的数状分割的结构。TreeSplit算法基于HOG的相似性对数据进行分段,其优点在于无统计假设、对参数不太敏感、时间复杂度低、通用性强,适用于连续型和离散型序列。这样的分段也可以较容易地扩展到多变量上来。

图4

3 Autoplait 

Autoplait算法[26] 使用HMM和最小描述长度准则(Minimum Description Length,MDL)自动决定分割的段数和每段的起始点。将时间序列描述为多层链模型(Multi-Level Chain Model,MLCM),如图5所示。在计算时采用3层循环,最内层循环在给定聚类与模型参数的条件下,找到好的分割点;中层循环在给定聚类的条件下,找到好的模型参数;外层循环是搜寻最佳聚类数,优化目标是似然度与描述复杂度的折中。

图5

Autoplait的核心思想有两点:多层链模型(MLCM)、模型表示成本及数据压缩。在HMM的基础上,提出了MLCM来表达多个体系与其过渡之间的时间序列模式。MLCM扩展了HMM,除了常规HMM转移概率,还引入了上层状态(超级状态)的概念“领域(regime)”​,将隐状态分为多个组,同一领域内的隐状态的关系更加密切,领域之间有一个整体的转移概率。在模型表示成本和数据压缩方面,为了找到合适的细分和制度,算法使用MDL的概念。MDL是基于信息理论的模型选择标准之一,可以用于无损压缩。另外,还定义了一种新的编码方案,以找到能充分表达给定束X的模型,即:定义成本函数,以估计最优参数集C;提出一种能找到最优解的有效算法。从原理上讲,在Autoplait算法对多变量时间序列进行自动分割时,不需要设定超参数。但笔者在使用过程中发现,Autoplait的鲁棒性不好,对原始数据稍做干扰,切分的结果就会发生很大变化。

4 应用示例 

本小节以风电分析中风速序列分割为例,来演示分割算法在应用中需要注意的地方以及与其他算法的结合。该数据集是某台风机2个多月的秒级风速数据(采样周期大约为7s)​,长度约为100万个点,分析目标是总结归纳典型的风速的时序模式。采用Changepoint算法进行切片,形成了3509个时间切片,然后对每个切片加工平均风速、标准差和湍流强度等3个特征,最后用GMM进行聚类,形成6种典型模式,在审查结果时,发现高风速与中风速分在一类,而没有形成单独一类,这有悖常识。经过仔细分析,证实了是由于数据集中高风速样本太少造成的,Changepoint划分很好地逼近了时间序列趋势,但若要进行明确分割,应该提高风速样本的均衡度,或者应给出明确的业务指导原则。

1.样本分布

100万条数据集中风速的密度函数如图6所示。

图6

从图中可以看出,风速主要分布在5m/s左右,风速大于10.7m/s的样本只有3.88%。从数据驱动的角度来讲,除非认为强行干预(强行指定,或在距离定义中隐形干预)​,否则,任何算法都很难将高风速样本自动聚为单独一类。

2.Changepoint的切分结果

这里利用mean和variance进行切分,将100万个数据点切分为3509个切片。图7和图8展示了原始风速(深色曲线)和切片风速平均值(浅色曲线,每段为一个切片)的对比,横坐标为原始数据中的行数,这里每2万个点画一幅图。

图7

图 8

对于每个切片,加工平均风速、标准差和湍流强度(即标准差/平均值)等3个特征。为降低对聚类算法的影响,对于低风速切片(平均值在1m/s以下)​,湍流强度做适当缩小。湍流强度较高的切片可分为两种情况:第1种情况如图9所示,在一个均值附近大幅度震荡(类似正弦波)​;第2种情况如图10所示,有明显上升或下降趋势,这里表现为下降。

图9
图 10

3.聚类算法

 通过比对发现,采用GMM算法进行聚类比K-means、DBSCAN更合适。采用平均风速、标准差和湍流强度3个特征,GMM算法的聚类结果如图11所示。

图11

5.分析结论

时序分割和聚类都属于无监督学习,聚类结果依赖于样本分布和距离函数定义。若要产生有意义的结果,通常有5种做法。

1)提供手工标记:针对一个典型数据集合,人工标记典型模式。

2)制作典型模式的样本库:机器学习算法根据相似度进行典型模式的匹配发掘。

3)改变样本分布:多提供感兴趣区域的样本。

4)用业务知识进行粗的分区,在每个分区内进行细分聚类。比如,图12对10m/s以上的进行聚类,算法可以将其聚成2类,分割线在10.6m/s左右。

5)另外一条路,就是采用信号分解算法,将原始进行趋势性/周期项/干扰项或低/中/高频的分解,然后对主要成分进行模式聚类。例如,经STL分解后,风速的趋势项就可以很明显地被分解出来,如图13所示。

在一些长时序的挖掘中,对长时序进行分割是必要的,本节给出了三种常用的方法。数据分割可以与其他算法结合,例如,在分割之前利用滤波算法进行过滤,或者利用分解算法针对感兴趣的组分进行分割。但需要注意,时序分割算法是无监督学习算法,不存在完美的算法,需要不断调整参数取得一个相对合理的结果。另外,分割点也不可能完全符合业务语义,但在初期探索时,如果不影响大面,通常也不必化太多时间去子修正分割点。

图12
图13

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2229255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云开源 AI 应用开发框架:Spring AI Alibaba

作者:刘军,Spring AI Alibaba 发起人,Apache Member 编者按: 6 年前,2018 年 10 月,阿里巴巴开源 Spring Cloud Alibaba,旨在帮助 Java 开发者通过 Spring Cloud 编程模型轻松开发微服务应用。…

一年期免费HTTPS证书:网络安全新选择

HTTPS证书的重要性 HTTPS证书,全称为安全套接字层/传输层安全协议证书,是一种在互联网上建立安全连接的数字证书。它通过公钥加密技术,对网站和用户之间的数据传输进行加密,有效防止数据被窃取或篡改,保障用户信息的安…

网络搜索引擎Shodan(7)完结

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。 感谢泷…

Web-高校教务考试管理系统

目录 一、前言 1.1 实践目的和要求 1.2 实践项目背景及意义 二、实践内容 2.1 实践过程 2.2 实践内容 2.2.1 项目介绍 2.2.2项目开发环境 2.2.3系统组成与功能 2.2.4 开发工作 2.3 主要成果 三、总结 3.1 个人心得 3.2 其它意见 一、前言 1.1 实践目的和…

顺序表排序相关算法题|负数移到正数前面|奇数移到偶数前面|小于x的数移到大于x的数前面|快排思想(C)

负数移到正数前面 已知顺序表 ( a 1 , … , a n ) (a_{1},\dots,a_{n}) (a1​,…,an​),每个元素都是整数,把所有值为负数的元素移到全部正数值元素前边 算法思想 快排的前后指针版本 排序|冒泡排序|快速排序|霍尔版本|挖坑版本|前后指针版本|非递归版…

预览 PDF 文档

引言 在现代Web应用中,文件预览功能是非常常见的需求之一。特别是在企业级应用中,用户经常需要查看各种类型的文件,如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…

蚁剑的介绍和使用

蚁剑介绍 蚁剑(AntSword)是一个开源的跨平台网站管理工具,主要用于渗透测试和安全研究。它提供了一个图形化界面,方便用户管理和操作被攻陷的网站。 安装教程: github官网:https://github.com/AntSwordPro…

AppInventor2能否用网络摄像头画面作为屏幕的背景?

// 视频是否可以作为背景? // 有会员提问:能否用网络摄像头的实时画面作为屏幕的背景?就跟这个一样背景全覆盖: 摄像头画面是一个在线的网站链接视频流。 // 原先思路 // 1、目前原生组件无法直接实现这个功能,屏幕…

DBeaver如何查看ER图

前言 我们在使用DBeaver时,有时候需要查看某张表的ER图,这能帮助我们快速看到表的结构,那么,我们应该如何在DBeaver里面查看ER图呢? 如何查看 首先,我们点击下我们要查看的某张表,鼠标右击一…

pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误

一、问题现象: 执行seleniumpytest结束时报: INTERNALERROR> File "D:\workspace\pytestframe\.venv\Lib\site-packages\pytest_html\report_data.py", line 141, in add_test INTERNALERROR> test_data["log"] _handle_ansi(&q…

mysql8.0.32升级到8.0.40

上篇8.0.32库的准备:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc-CSDN博客 此篇测试升级到8.0.40 MySQL :: Download MySQL Community Server rootjyc:~# mysql -u root -pabcd1234 mysql: [Warning]…

【Spring】Spring 核心和设计思想

Spring 核心和设计思想 1.什么是 Spring1.1 传统程序开发1.2 控制反转程序开发 2.理解 Spring IoC 1.什么是 Spring 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃而庞大的社区&#x…

白盒测试基本概念(学习笔记)

1.1白盒测试基本概念 测试工作中我们经常遇到的两种测试,就是白盒测试和黑盒测试。基本概念区分如下: 软件的白盒测试是对软件的过程性细节做细致的检查。这一方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有…

Mybatis使用和原理

Mybatis使用和原理 1、ORM架构2、Spring整合MyBatis使用2.1 添加maven依赖2.2 配置数据源2.3 创建实体类2.4 创建 MyBatis Mapper2.4.1 使用MyBatis注解2.4.2 使用XML方式 2.5 Service 层 3、Spring整合Hibernate使用3.1 添加maven依赖3.2 配置数据源3.3 创建实体类3.4 创建 Re…

C++核心编程和桌面应用开发 第十七天(set和multiset容器 pair map和multimap容器)

目录 1.set和multiset容器 1.1构造和赋值 1.2交换和大小 1.3插入和删除 1.4统计和查找 1.5pair对组 1.6set和multiset的区别 1.7指定内置数据类型排序规则 1.8指定自定义数据类型排序规则 2.map和multimap容器 2.1构造和赋值 2.2交换和大小 2.3插入和删除 2.4统计…

Android中常用adb命令

目录 1.adb连接安卓模拟器 2.adb列出所有已经连接的设备 3.adb显示设备的日志信息 4.adb 电脑文件推送到安卓模拟器中 5.adb 手机传送文件到电脑 6.adb获取安卓应用的包名和Activity名 附录 1--命令 1)adb devices 2)adb install 路径> 3)…

机器学习算法之回归算法

一、回归算法思维导图 二、算法概念、原理、应用场景和实例代码 1、线性回归 1.1、概念 ‌‌线性回归算法是一种统计分析方法,用于确定两种或两种以上变量之间的定量关系。‌ 线性回归算法通过建立线性方程来预测因变量(y)和一个或多个自变量…

SpringBoot项目如何设置定时任务总开关

目录 方法一:使用Spring Profiles 1.1 步骤1 1.2 步骤2 1.3 步骤3 1.4 步骤4 方法二:使用ConditionalOnProperty 2.1 步骤1 2.2 步骤2 2.3 步骤3 方法三: 主启动类禁用EnableScheduling 定时任务原理剖析(选看&#xf…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21目录1. The Fair Language Model Paradox摘要研究背景问题与挑战如何解决创新点算法模型实验效果重要数据与结论推荐阅读指数&…

Python——实时域名通信状态监控

在互联网时代,网站和在线服务的可用性对于个人和企业都至关重要。域名的通信状态直接关系到服务的可达性,因此,实时监控域名的通信状态成为了一项基本需求。本文将详细介绍一个使用Python编写的简单域名通信状态监控工具,该工具能…