主要挑战:
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类。
图3.1 时间差分前 图3.2 时间差分后
2. 无监督的聚类:Yading[1]是一种大规模的时序聚类方法,有别于K-Means和K-Shape采用互相关统计方法,它采用PAA降维和基于密度聚类的方法实现快速聚类,且在计算距离时尽量保留了时间序列的形状。Rocka[2]是另一种大规模的时序聚类方法,在Yading的基础上,Rocka提出通过滑动平均+NCC-SBD的方式进行噪声提出和距离度量。无监督的聚类方法无需标签数据即可进行多个类别的分类,但是相对于监督学习准确度会稍低。
图4: 无监督聚类
3. 监督学习的分类方法:主要包括Logistics、SVM,CNN[3]等。监督学习的分类方法准确度会比无监督的聚类方法跟高,但是需要大量的标签数据。
图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. 背景时序数据的监控在安全风险发现过程中扮演着不可忽视的角色,我们可以通过自定义一些KPI(关键风险指标),刻画这些KPI的时间序列基线,通过时间基线进行安全风险的异常检测。然而从海量的时序数据指标中可以发现,指标种类繁多、关系复杂(如下图5所示)。在指标本身的特点上,有周期性、规律突刺、整体抬升和下降、低峰期等特点,在影响因素上,有节假日、临时活动、天气、疫情等因素。想要覆盖上述种种场景 ,并且精准的进行安全风险的发现十分困难。若在海量指标监控上,能根据指标自动适配合适的策略,不需要人为参
本章节直接跳过了BOSSVS算法,因为BOSSVS和SAX-VSM的区别也就只在于前面
数据
预处理的方式了,SAX-VSM用的是分箱的字词转换,而BOSSVS用的是Symbolic Fourier Approximation(详见第一节,本文不再赘述)也就是使用傅里叶变换的提取特征
方法
,所以与其介绍一遍差不多的,不如留给读者自行探索。
那么本节我将给各位介绍pyts中的LearningShapelets算法,来自于14年的“Learning Time-Series Shapelets”这篇文章,本算法过
时间序列
的
分类
算法逐渐接近尾声,本节将介绍TimeSeriesForest算法,即应用在
时间序列
上的随机森林算法,同时下一节也就是最后一节将介绍建立在它基础上的TSBF算法。在学习本节之前呢,需要各位将Pyts升级至最新版本(到本文发表时为0.12.0),因为0.11.0(去年10月我安装的版本)是没有这两种算法的:
pip install --upgrade pyts
TimeSeriesForest的算法步骤分为以下两步:
1.从一系列随机窗口序列中提取三个特征:平均值,标准差,和简单线性回归的
时间序列
分类
总结(time-series classification)一、传统
方法
(需要手工设计)1、DTW(dynamic time warping)& KNN2、基于特征的
方法
二、深度学习1、MLP、FCN、ResNet2、LSTM_FCN、
BiG
RU-CNN3、MC-CNN(multi-channel CNN)、MCNN(multi-scale CNN)参考文献
&nb...
多变量
时间序列
具有一个以上的时间依赖变量。每个变量不仅取决于其过去的值,而且还对其他变量有一定的依赖性
假设我们的
数据
集包括过去两年的汗水百分比、露点、风速、云层覆盖率等,以及温度值。在这种情况下,有多个变量被认为是最佳预测温度。像这样的系列将属于多元
时间序列
的范畴
1. 线性模型,如线性回归、自回归、升水平自回归、自回归偏差和自回归分数。
2. 统计模型,如自动回归(AR)、自动平稳(AS)、自动平稳自回归(ARMA)和自动平稳自回归平方(ARIMA)。
3. 非参数模型,如移动平均、误差调整指数平滑(Holt-Winters)和神经网络。
4. 基于对数似然的模型,如状态空间模型(SSM)和非参数自动回归(NP-AR)。
5. 其他模型,如指数平滑(ES)、贝叶斯
时间序列
模型(BTSM)和高斯过程
时间序列
模型(GP-TSM)。
CSDN-Ada助手:
一文读懂常用机器学习解释性算法:特征权重,feature_importance, lime,shap
Dapiu410:
机器学习中离散特征的聚类方法
H_dream_D:
liaowenzhe的算法/研发工程师工作5年2017-2021复盘总结
liaowenzhe的算法/研发工程师工作5年2017-2021复盘总结
Liao_Wenzhe: