摘要: 在大型互联网企业中,对海量KPI(关键性能指标)进行监控和异常检测是确保服务质量和可靠性的重要手段。基于互联网的服务型企业(如线上购物、社交网络、搜索引擎等)经过监控各类系统及应用的数以万计的KPI(如CPU利用率、每秒请求量等)来确保服务可靠性。php
第一篇文章SLS机器学习介绍(01):时序统计建模上周更新完,一会儿炸出了不少潜伏的业内高手,忽的发现集团内部各个业务线都针对时序分析存在必定的需求。你们私信问我业务线上的具体方法,在此针对遇到的通用问题予以陈述(权且抛砖引玉,但愿各位大牛提供更好的建议和方法):html
数据的高频抖动如何处理?node
历史训练数据如何选择?算法
这么多方法该如何选择?数据库
在大型互联网企业中,对海量KPI(关键性能指标)进行监控和异常检测是确保服务质量和可靠性的重要手段。基于互联网的服务型企业(如线上购物、社交网络、搜索引擎等)经过监控各类系统及应用的数以万计的KPI(如CPU利用率、每秒请求量等)来确保服务可靠性。KPI上的异常一般反映了其相关应用上可能出现故障,如服务器故障、网络负载太高、外部攻击等。于是,异常检测技术被普遍用于及时检测异常事件以达到快速止损的目的。服务器
大多数异常检测算法(如雅虎的EDAGS,Twitter的BreakoutDetection,FaceBook的prophet)都须要为每条KPI单独创建异常检测模型,在面对海量KPI时,会产生极大的模型选择、参数调优、模型训练及异常标注开销。幸运的是,因为许多KPI之间存在隐含的关联性,它们是较为类似的。若是咱们可以找到这些类似的KPI(例如在一个负载均衡的服务器集群中每一个服务器上的每秒请求量KPI是类似的),将它们划分为若干聚类簇,则能够在每一个聚类簇中应用相同的异常检测模型,从而大大下降各项开销。网络
在同一个业务指标的前提下:数据结构
本文主要从时间对齐的多条时序KPI中进行类似性度量,时间点上的指标的类似性和时序曲线形态的类似性并发
和
负载均衡
当
时,表示曼哈顿距离;
时,表示欧几里得距离;当p趋近于无穷大时,该距离转换为切比雪夫距离,具体以下式所式:
闵可夫斯基距离比较直观,可是它与数据的分布无关,具备必定的局限性,若是x方向的幅值远远大于y方向的幅值,这个距离公式就会过分方法x维度的做用。所以在加算前,须要对数据进行变换(去均值,除以标准差)。这种方法在假设数据各个维度不相关的状况下,利用数据分布的特性计算出不一样的距离。若是数据维度之间数据相关,这时该类距离就不合适了!
1.2 马氏距离:若不一样维度之间存在相关性和尺度变换等关系,须要使用一种变化规则,将当前空间中的向量变换到另外一个能够简单度量的空间中去测量。假设样本之间的协方差矩阵是
,利用矩阵分解(LU分解)能够转换为下三角矩阵和上三角矩阵的乘积:
。消除不一样维度之间的相关性和尺度变换,须要对样本x作以下处理:
,通过处理的向量就能够利用欧式距离进行度量。
如何去比较两个不一样长度的字符串的类似性?给定两个字符串,由一个转成另外一个所须要的最小编辑操做,其中须要有三个操做,相同位置字符的替换、对字符串中某个位置进行插入与删除。具体的递归表达式以下:
2.2 DTW(Dynamic Time Warpping)距离
动态时间规整(Dynamic Time Warping;DTW)是一种将时间规整和距离测度相结合的一种非线性规整技术。主要思想是把未知量均匀地伸长或者缩短,直到与参考模式的长度一致,在这一过程当中,未知量的时间轴要不均匀地扭曲或弯折,以使其特征与参考模式特征对正。
DTW(Dynamic Time Warping)距离的计算过程以下:
假设,两个时间序列Q和C,Q={
,
,…,
},C={
,
,…,
}。构造一个(n, m)的矩阵,第(i, j)单元记录两个点
之间的欧氏距离,
。一条弯折的路径W,由若干个彼此相连的矩阵单元构成,这条路径描述了Q和C之间的一种映射。设第k个单元定义为
,则
。
这条弯折的路径知足以下的条件:
1. 边界条件:$w_1=(1,1)$,且$w_k=(n,m)$ 2. 连续性:设$w_k=(a, b)$,$w_{k-1}=(a^{'}, b^{'})$,那么$a-a^{'}<= 1$,$b-b^{'}<=1$ 3. 单调性:设$w_k=(a,b)$,$w_{k-1}=(a^{'}, b^{'})$,那么$a-a^{'}>=0, b-b^{'} >=0$
在知足上述条件的多条路径中,最短的,花费最少的一条路径是:
DTW距离的计算过程是一个DP过程,先用欧式距离初始化矩阵,而后使用以下递推公式进行求解:
数据源:集群中全部集群的多指标度量值(秒级数据)
基本的预处理
* and metric_name : machine_022_cpu | select stamp, metric_val order by stamp limit 2000
集群中有相同属性的机器大约为5K台,那么咱们就会有通过处理的5K条NET:Tcp的曲线,如今须要对该集合进行聚类,找到其中类似形态的曲线,并发现形态不一致的曲线形态。
![image.png]()
本实验中将时序序列将高维度数据下降到长度为300的PAA策略。
DBSCAN(Density-BasedSpatial Clustering of Applications with Noise),一种基于密度的聚类方法,即找到被低密度区域分离的稠密区域,要求聚类空间中的必定区域内所包含对象(点或其余空间对象)的数目不小于某一给定阈值。
其中几个关键术语:
上图是通常DBSCAN的聚类过程,其中有两个地方能够进行较好的优化:
两个参数
3.1 KD Tree构造
KD(K-Dimensional) Tree,是一种分割K维度数据空间的数据结构。主要应用与多维空间关键数据的搜索(如:范围搜索和近邻搜索)。
function kdtree(list of points pointList, int depth) { // select axis based on depth so that axis cycles through all valid values var int axis := depth % k; // sort point list and choose median as pivot element select median by axis from pointList; // create node and construct subtree node.location := median; node.leftChild := kdtree(points in pointList before median, depth + 1); node.rightChild := kdtree(points in pointList before median, depth + 1); return node; }
上述算法模型中,最大的问题在于轴点的选择,选择好轴点以后,就能够递归去建立这颗树了。
建树必须遵循的两个准则:
选择轴点的策略
邻近搜索策略
3.2 参数自动化估计
具体的成分以下图所示:
这里咱们假设
的坐在成分为 左右,所以咱们假设最小的近邻集合中所含有的样本数量为
。
具体的参数估计流程以下:
3.3 DBSCAN具体流程
直观的理解下本节开头关于聚类指标的说明:
DBSCAN算法描述中经常使用的概念
密度直达,若它知足 且
首先,将数据集D中的全部对象标记为为处理状态 for 样本p in 数据集D do if p 属于某个簇 或者 被标记为噪声 then continue; else 检查p的Eps邻域 Neighbor(Eps, p) if |Neighbor(Eps, p)| < MinPts then 标记对象p为边界点或噪声点 else 标记样本p为核心点,并创建新的簇C,并将p邻域的全部点加入C for 样本q in Neighbor(Eps, p)中全部未被处理的对象 do 按照邻域样本数量进行判断 end for end if end if end for
层次聚类是一种很直观的算法,就是一层一层的对数据进行聚类操做,能够自低向上进行合并聚类、也能够自顶向下进行分裂聚类。
repeat
* | select ts_dencity_cluster(stamp, metric_val, metric_name)
上述输出结果说明
* | select ts_hierarchical_cluster(stamp, metric_val, metric_name, 2)
* | select ts_hierarchical_cluster(stamp, metric_val, metric_name, 8)
上述输出结果说明
* | select ts_similar_instance(stamp, metric_val, metric_name, 'machine_008_cpu')
返回结果
阿里云日志服务针对日志提供了完整的解决方案,如下相关功能是日志进阶的必备良药:
更多日志进阶内容能够参考:日志服务学习路径。
纠错或者帮助文档以及最佳实践贡献,请联系:悟冥
问题咨询请加钉钉群:11775223
双十一广告:阿里云双十一1折拼团活动:已满6人,都是最低折扣了
【满6人】1核2G云服务器99.5元一年298.5元三年 2核4G云服务器545元一年 1227元三年
【满6人】1核1G MySQL数据库 119.5元一年
【满6人】3000条国内短信包 60元每6月
参团地址:http://click.aliyun.com/m/1000020293/
做者: fight_ucas
原文连接 本文为云栖社区原创内容,未经容许不得转载。