共计 3406 个字符,预计需要花费 9 分钟才能阅读完成。
背景
目前,日志异样检测算法采纳基于工夫序列的办法检测异样,具体为:日志结构化 -> 日志模式识别 -> 工夫序列转换 -> 异样检测。异样检测算法依据日志指标时序数据的周期性检测出历史新增、时段新增、时段突增、时段突降等多种异样。
然而,在理论中,日志指标时序数据并不都具备周期性,或具备其余散布特色,因而仅依据周期性进行异样检测会导致误报率高、准确率低等问题。因而如果在日志异样检测之前,首先对日志指标时序数据进行分类,不同类型数据采纳不同办法检测异样,能够无效进步准确率,并升高误报率。
日志指标序列的类型
日志指标序列分为时序数据与日志指标数据两大类:
- 时序数据: 蕴含安稳型、周期型、趋势型、阶跃型。
- 日志指标数据: 蕴含周期型、非周期型。
工夫序列分类算法
工夫序列分类是一项在多个畛域均有利用的通用工作,指标是利用标记好的训练数据,确定一个工夫序列属于事后定义的哪一个类别。工夫序列分类不同于惯例分类问题,因为时序数据是具备程序属性的序列。
工夫序列分为传统工夫序列分类算法与基于深度学习的工夫序列分类算法。传统办法又依据算法采纳的用于分类的特色类型不同,分为全局特色、部分特色、基于模型以及组合办法 4 大类。基于深度学习的工夫序列算法分为生成式模型与判别式模型两大类。本文次要对传统工夫序列分类算法进行介绍。
传统工夫序列分类算法
基于全局特色的分类算法
全局特色分类是将残缺工夫序列作为特色,计算工夫序列间的相似性来进行分类。分类办法有通过计算不同序列之间间隔的远近来表白工夫序列的相似性以及不同间隔度量办法 + 1-NN(1- 近邻)。次要钻研序列相似性的度量办法。
- 工夫域间隔
问题场景形容:
如下图所示,问题场景是一个语音辨认工作。该工作用数字示意音调高下,例如某个单词发音的音调为 1 -3-2-4。两个人说同一单词时,因为音节的发音拖长,会造成不同的发音序列
前半部分拖长,发音:1-1-3-3-2-4
后半局部拖长,发音:1-3-2-2-4-4
在采纳传统欧式间隔,即点对点的形式计算发音序列间隔时,间隔之和如下:欧式间隔 = |A(1)-B(1)| + |A(2)-B(2)| + |A(3)-B(3)| + |A(4)-B(4)| + |A(5)-B(5)| + |A(6)-B(6)| =6_x0001_
算法原理:
如果咱们容许序列的点与另一序列的多个间断的点绝对应(即,将这个点所代表的音调的发音工夫缩短),而后再计算对应点之间的间隔之和,这就是 dtw 算法。dtw 算法容许序列某个时刻的点与另一序列多个间断时刻的点绝对应,称为工夫规整(Time Warping)。如下图所示,语音辨认工作的 dtw 间隔如下:
dtw 间隔 = |1-1| + |1-1| + |3-3| + |3-3| + |2-2| + |2-2| + |4-4| + |4-4| = 0
dtw 计算出的间隔为 0,由此代表两个单词发音统一,与理论状况相符。
算法实现:
dtw 算法实现包含计算两个序列各点之间间隔形成矩阵以及寻找一条从矩阵左上角到右下角的门路,使得门路上的元素和最小两个次要步骤。间隔矩阵如下图所示,矩阵中每个元素的值为两个序列对应点之间的间隔。DTW 算法将计算两个序列之间的间隔,转化为寻找一条从间隔矩阵。左上角到右下角的门路,使得门路上的元素和最小。实现要点如下:
- 转化为动静布局的问题(DP);
<!—->
- 因为寻找所有门路太耗时,须要增加门路数量限度条件(能够等效为寻找矩阵横纵坐标的差的容许范畴,即 warping window)。
- 差分间隔法
差分间隔法是计算原始工夫序列的一阶微分,而后度量两个工夫序列的微分序列的间隔,即微分间隔。差分法将微分间隔作为原始序列间隔的补充,是最终间隔计算函数的重要组成部分。
对于一个工夫序列 t =(t1, t2, …,tm),其一阶微分计算公式如(2-1)所示,二阶微分计算公式如(2-2)所示,更高阶的微分计算形式顺次类推。差分间隔法将位于工夫域的原工夫序列和位于差分域的一阶差分序列相结合,晋升分类成果。钻研方向次要是如何将原序列和差分序列正当联合。
基于部分特色的分类算法
将单条工夫序列中的一部分子序列作为特色,用于工夫序列分类。次要有以下特点:
- 关键在于寻找可能辨别不同类的部分特色;
- 因为子序列更短,因而构建的分类器速度更快;
- 但因为须要寻找部分特色,须要肯定的训练工夫。
- 基于距离(interval)的分类算法
基于距离(interval)的分类算法分类办法是将工夫序列划分为几个距离,从每个距离中提取特色。过程中需思考以下关键问题:
- 须要找到最具备区分度特色的区间;
- 区间划分办法很多,如果解决大量的候选区间;
- 如何在每个区间上正当提取特色。
关键问题解决办法如下(TSF-Time Series Forest):
- 采纳随机森林的办法解决序列区间数量大的问题,采纳统计值作为特色;
- 长度为 m 的序列,提取 sqrt(m) 个区间,每个区间上提取均值、标准差和斜率三个特色,共 3 *sqrt(m) 个特色用于训练;
- 分类后果由集成的所有树的少数投票决定;
- 基于 shapelets 的分类算法
shapelet 分类算法通过在序列中查找最具分别性的子序列用于分类,其中 shapelet 指一个与地位无关的最佳匹配子序列。该类算法实用于能够通过序列中的一种模式定义一个类,然而与模式的地位无关的分类问题。次要有以下两个钻研方向:
- shapelet 寻找:枚举所有可能的 shapelet,筛选最好的;
- shapelet 用法:将 shapelet 用于决策树的结点决裂准则。
shapelet 分类算法通过在序列中查找最具分别性的子序列用于分类,其中 shapelet 指一个与地位无关。
- 基于词典的分类算法
因为 shapelet 分类算法须要破费大量工夫搜寻子序列,因而更实用于短序列。对于长序列,更实用于在高级构造上掂量类似度。此外,shapelet 只应用一个最佳匹配进行分类,无奈解决区别在模式反复数量上的分类问题。因而,对于长序列中一种模式重复呈现的工夫序列,更实用于一种叫做 dict 词典类的分类算法。
基于词典的分类算法原理是以序列中的子序列的反复频率作为特色进行分类。首先对序列进行降维和符号化示意,造成单词序列,而后依据单词序列中的单词散布状况进行分类。特点是通过给每个序列传入一个长度为 w 的滑动窗构建单词,每一个窗产生 l 个近似值,将每个值离散化,对应到一个字母表中的符号。
BOP – Bag of Patterns 采纳了相似“bag of words”的思路,将工夫序列示意成一系列模式的向量。存在问题如下:
- 须要构建“模式词汇表 -> SAX
- 工夫序列没有显著分隔符进行宰割。- 滑动窗口
操作步骤如下:
- BOP 算法采纳滑动窗口在原始序列上取子序列;
- 再利用 SAX 办法将子序列转化为单词,并记录每个单词数量,所有的单词汇总为词汇表;
- 最初构建“单词 - 句子”向量矩阵,行是词汇表,列是每个工夫序列,点的值是词汇在序列中的呈现频率。
_x0008_SAX(Symbolic Aggregate Approximation) 对序列进行正则化,在横轴方向,将工夫序列等长划分为 w 段,计算每一段的均值,并将 w 个系数汇集在一起,这个过程称为分段汇集近似(Piecewise Aggregate Approximation,PAA)。
钻研表明正则化的工夫序列的子序列遵从高斯分布,在纵轴方向,将均值从高斯分布等概率划分为三块区域,位于每个区域的系数别离用 a,b,c 示意,此时序列已转化为字符串。
开源我的项目举荐
云智慧已开源数据可视化编排平台 FlyFish。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现合乎本人业务需要的炫酷可视化大屏。同时,飞鱼也提供了灵便的拓展能力,反对组件开发、自定义函数与全局事件等配置,面向简单需要场景可能保障高效开发与交付。
如果喜爱咱们的我的项目,请不要遗记点击下方代码仓库地址,在 GitHub / Gitee 仓库上点个 Star,咱们须要您的激励与反对。此外,即刻参加 FlyFish 我的项目奉献成为 FlyFish Contributor 的同时更有万元现金等你来拿。
GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish
Gitee 地址: https://gitee.com/CloudWise/f…
微信扫描辨认下方二维码,备注【飞鱼】退出 AIOps 社区飞鱼开发者交换群,与 FlyFish 我的项目 PMC 面对面交换~