时间序列分类几种方法解读

主要挑战:

KPI 通常是周期性的,取决于应用程序和系统,它们的周期可以从数天到数周。因此, 每个 KPI 通常有数千个点需要完全捕捉才能刻画它在一段时间内的行为。但是因为一些不可避免的因素会导致时间序列有一些显著的形状变化,从而影响时间序列的分类。

噪音和异常:噪音和异常在 KPI 中很常见。噪音通常是指小围绕 KPI 中预期值的随机波动,而异常是显着的波动,通常更大超过 2 个标准差 。噪音和异常可能会误导聚类方法,因为它们会扭曲KPI 之间的相似性。我们通过滑动平均,分段聚合(PAA)以及压缩聚合等一些手段可以有效降低噪音的影响,而对于异常值的处理我们可以通过4分位,3sgima等方式进行解决。

幅度差异:KPI 可以采用不同的尺度。例如,对两个密切相关但又不同的同一服务的模块可能看起来像(下图幅度变化1),但如果我们去除幅度差异这些 KPI 具有相似的模式并且可以作为一个组进行分析(下图幅度变化2)。而通过Z-score等标准化数据的方式可以有效解决这个问题。

相位偏移:相移是指在两个 KPI 之间全局水平的便宜。例如,同一系统上的一组 KPI调用链可能具有相似的形状,但具有时滞性。相位偏移可能使找到类似的 KPI 变得困难。为了解决这个问题,我们从距离度量和算法两个维度上解决这个问题:例如替代传统的欧式距离,改用NCC-SBD,DTW距离度量的方式,使用DBSCAN算法进行聚类等等。

高纬诅咒:高维诅咒是指随着数据维度的提升,很多我们在低纬度认为相当然的现象,在高纬度空间里面都不成立了,例如我们这相邻之间的点全部都变得很远。这在有数千个点的时间序列里是十分常见的问题。我们可以通过设置L1的距离度量替换L3及以上的距离度量解决这个问题。

​​                                                   图 1 时序数据分类的挑战

几种方式:

1. 基于统计的时间序列分类:在对数据做一定的时间差分后,如果方差很小,可以判定为有时间周期性。否则为无时间周期性。该方法实现简单,缺点是只能分成2类。

               watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlhb19XZW56aGU=,size_20,color_FFFFFF,t_70,g_se,x_16               watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlhb19XZW56aGU=,size_20,color_FFFFFF,t_70,g_se,x_16

                          图3.1 时间差分前                              图3.2 时间差分后

2. 无监督的聚类:Yading[1]是一种大规模的时序聚类方法,有别于K-Means和K-Shape采用互相关统计方法,它采用PAA降维和基于密度聚类的方法实现快速聚类,且在计算距离时尽量保留了时间序列的形状。Rocka[2]是另一种大规模的时序聚类方法,在Yading的基础上,Rocka提出通过滑动平均+NCC-SBD的方式进行噪声提出和距离度量。无监督的聚类方法无需标签数据即可进行多个类别的分类,但是相对于监督学习准确度会稍低。

                      watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlhb19XZW56aGU=,size_20,color_FFFFFF,t_70,g_se,x_16

                                                             图4: 无监督聚类

3. 监督学习的分类方法:主要包括Logistics、SVM,CNN[3]等。监督学习的分类方法准确度会比无监督的聚类方法跟高,但是需要大量的标签数据。

  watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlhb19XZW56aGU=,size_20,color_FFFFFF,t_70,g_se,x_16

                                                    图3: CNN时间序列分类

参考论文:

[1] Ding R, Wang Q, Dang Y, et al. Yading: fast clustering of large-scale time series data[J]. Proceedings of the VLDB Endowment, 2015, 8(5): 473-484.

[2] Robust and rapid clustering of kpis for large-scale anomaly detection. 2018

[3] Tom Brander. Time series classification with Tensorflow[EB/OL]. https://burakhimmetoglu.com/2017/08/22/time-series-classification-with-tensorflow, 2017-08-22.

[4] Metis is a learnware platform in the field of AIOps[EB/OL]. https://github.com/Tencent/Metis, 2018-10-12.

### 时间序列分类的深度学习方法及其应用 #### 转移学习提升模型性能 为了提高深度学习模型的效果,研究者们经常采用批量标准化来正则化模型并防止梯度消失现象的发生[^1]。这种方法不仅有助于加速训练过程,还能增强模型泛化能力。 #### 单变量时间序列中的异常检测 随着深度学习技术的发展,在处理单变量时间序列数据时能够提取到更为复杂的特征表示形式,从而显著改进离群点识别效果[^2]。通过利用GitHub上的资源库可以获得多种经典的异常检测算法实现以及相应的评估指标体系,便于研究人员对比不同方案之间的优劣之处。 #### 类激活映射解释模型决策 针对一维信号的时间序列分类任务,有学者提出了类激活映射(Class Activation Map, CAM)的概念,并将其应用于图像领域之外的一维场景下。具体而言,Wang等人开发了一种适用于TSC的任务框架——即一维CAM,它可以通过高亮显示那些对于特定类别预测贡献最大的子序列片段来帮助理解神经网络内部的工作机制[^3]。 ```python import numpy as np from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Conv1D, GlobalAveragePooling1D, Dense def create_cam_model(input_shape=(None, 1), num_classes=2): inputs = Input(shape=input_shape) conv_layer = Conv1D(filters=64, kernel_size=5, strides=1, padding='same', activation='relu')(inputs) gap_layer = GlobalAveragePooling1D()(conv_layer) output = Dense(num_classes, activation='softmax')(gap_layer) model = Model(inputs=[inputs], outputs=[output]) return model model = create_cam_model() ``` 此代码段展示了一个简单的卷积神经网络架构设计实例,该架构可用于构建支持CAM功能的时间序列分类器。其中包含了输入层、卷积层、全局平均池化层及全连接输出层等基本组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值