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很容易地應用到生產數據中。

相關文章
相關標籤/搜索