Splunk机器学习应用(Machine Learning Toolkit)

本文主要从 Splunk内置的命令和应用两个部分介绍了一些实用的机器学习的小诀窍,抛砖引玉,但愿能和你们一块儿探讨如何让Splunk变得更加聪明。python


1.概览web

机器学习能够简单地看做一个从数据中自动分析得到规律,并利用规律对未知数据进行预测的过程。按照训练数据类型的不一样,能够分为监督学习、无监督学习、半监督学习和加强学习。一般机器学习分为六步, 分别是前期的业务分析、数据理解、数据预处理、模型训练、模型优化和模型部署。这是个不断迭代不断优化的过程。算法

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

众所周知,在机器学习中起到重要做用的并非模型,而是数据科学家对业务问题的理解和数据的分析准备。Splunk作为机器数据采集、分析和展现领域的领导者,极大地方便了这一过程,除此以外,Splunk还提供了多样的机器学习应用来实现模型训练、优化、部署的步骤,帮助用户轻松实现优化IT、安全和业务运营,异常检测等机器学习的功能。安全


 2.内置的命令网络

Splunk提供了20多个和机器学习相关的命令,能够很方便的直接在数据上进行分析、报警或预测。按照命令的功能能够大体分为两类:分别是时序分析和异常检测。app


时序分析运维

现实生活中大多数的机器数据都会天然的带上时间戳,这种时间序列数据能够看作三个部分的简单相加或者相乘。dom


Additive:机器学习

Time Series=Seasonal+Trend+Randomide

 

Multiplicative:

Time Series=Seasonal x Trend x Random


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

经常使用的时序分析命令有三个,分别是:

时序分析命令

 命令

   算法

   适用的场景

  

 

trendline


经过移动平均值观察和分析时序数据中的trend趋势。

算法提供sma,ema和wma三种选择。

   适用于分析单个numerical字段

  


 x11


经过x11算法观察和分析时序数据中的seasonality趋势。

算法提供additive和multiplicative两种分解选择。

   适用于分析单个numerical字段

  


 predict


经过分析数据中的trend和seasonality趋势从而实现预测的功能。

提供LL,LLT,LLP,LLP5,LLB和BiLL五种选择。

   适用于分析单个numerical字段


案例:

利用predict命令根据已经产生的费用对下月的成本进行预测,从而更好的控制成本,制定预算方案。其中, 蓝色的线段是当月已经产生的费用,×××的线段是预测值。

SPL以下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

会返回这样的图表:


异常检测

异常检测一般是对数据中不匹配预期模式或数据集中其余值的事件的识别。在网络***、银行欺诈、结构缺陷等问题中有大量的应用。

经常使用的异常检测命令有五个,分别是:

   经常使用的异常检测命令

命令

方法

适用的场景

   anomalousvalue

对于numerical字段,经过计算偏离均值的标准差个数判断;对于category字段,经过计算出现的几率值判断。

   适用于分析单个字段

   


anomalies



计算某个事件的异常值。

unexpectedness = [s(P   and X) - s(P)] / [s(P) + s(X)]

其中, s( ) 表示事件间的类似性。

   适用于同时分析多个字段

  



 cluster




… | cluster ...   | sort cluster_count

将较小的聚类看作异常事件。

将事件看做原始字符串,经过生成字符串的字向量从而计算事件与事件之间的距离。

   适用于分析文本数据,好比“05-04-2017 14:40:40 PST vm_mcp_uk kernel[0]: Kernel request now disabled. ”

   


outlier


箱型图算法(BPrule)。

异常点被定义为值大于QU+1.5IQR或小于QL-1.5IQE的点。

   适用于分析单个numerical字段

   anomalydetection

对anomalousvalue和outlier命令进行封装。

   适用于分析单个字段


案例:

利用anomalousvalue命令监控异常的aws EC2实例建立。其中×××的点是异常点。 

SPL以下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

会返回这样的图表:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=细心的读者可能已经发现上述的命令都是基于简单的统计分析,没法很好地检测复杂的时间序列数据中的异常。经过结合时序分析命令能够较好地解决这个问题。


案例:

利用anomalousvalue和predict命令发现周期性数据中的异常点 。其中×××的点是异常点。

SPL以下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

会返回这样的图表:


若是上述异常检测的技巧都不能知足你的业务需求,你能够试试最近IT Service Intelligence (ITSI) 推出的大杀器——Metric Anomaly Detection (MAD)算法。该算法对数据的分布不作假设,不须要特定的训练集,可以动态调整阈值减小误报率,同时几乎实时检测。若是你要使用这个内置命令,别忘了先安装ITSI应用,相关算法配置可经过mad.conf实现。

案例:

利用mad命令发现平常登入事件中的异常点。其中,当该算法计算出的anomalyscore(蓝色)大于threshold(×××)时,就能够认为此时有异常发生。

SPL以下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=会返回这样的图表:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


3.机器学习相关的应用

Splunk提供了多个和机器学习相关的应用,从覆盖智能运维的ITSI到关注用户分析的User Behavior Analytics(UBA)。而本节将会着重介绍Machine Learning Toolkit,该应用给予了用户更多的自由性,经过其包装了300多种来自sci-kit learn、pandas、statsmodel、numpy和scipy库的python开源算法,用户能够方便地在Splunk上建立和运行自定义的机器学习模块,下载以下

https://splunkbase.splunk.com/app/2890/

在机器学习的大多数步骤中,该应用都提供了相关功能方便用户实现自定义模块。


数据预处理

因为真实世界中的数据来源复杂、体积巨大,每每难以免地存在缺失、噪声、不一致等问题。当数据的维度太高时还会存在所谓的“维数诅咒”问题,太高的维度不只增长了计算量,反而会下降算法的效果。除此以外,有些算法对数据存在特殊的要求,好比Neural Networks、KNN等算法在数据进行normalize以后效果会提高。


该应用提供三种算法进行数据预处理,分别是StandardScaler,PCA和KernelPCA,同时提供了sample命令对数据集进行采样。

 

模型训练

该应用提供了fit命令对模型训练的过程进行简化。

 

[training data] | fit LinearRegression cost from feature1 feature2 into my_model

 

上述的SPL表示以搜索结果中的feature1,feature2字段对cost字段进行线性拟合,将生成的模型保存为my_model。

用fit命令能够训练26种常见的模型,具体见

http://docs.splunk.com/Documentation/MLApp/2.2.0/User/Algorithms


模型优化

当发现模型对数据的拟合不尽如人意时,该应用提供了简单明了的UI界面方便用户对模型参数进行调整。


好比下图表示对随机森林算法常见的参数进行调整:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


模型部署

该应用提供了apply命令对模型部署的过程进行简化。

 

[production data] | apply my_model

 

上述的SPL将 my_model很容易地应用到生产数据中。

相关文章
相关标签/搜索