Splunk機器學習應用(Machine Learning Toolkit)

本文主要從 Splunk內置的命令和應用兩個部分介紹了一些實用的機器學習的小訣竅,拋磚引玉,希望能和大家一起探討如何讓Splunk變得更加聰明。


1.概覽

機器學習可以簡單地看作一個從數據中自動分析獲得規律,並利用規律對未知數據進行預測的過程。按照訓練數據類型的不同,可以分爲監督學習、無監督學習、半監督學習和增強學習。通常機器學習分爲六步, 分別是前期的業務分析、數據理解、數據預處理、模型訓練、模型優化和模型部署。這是個不斷迭代不斷優化的過程。

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

衆所周知,在機器學習中起到重要作用的並不是模型,而是數據科學家對業務問題的理解和數據的分析準備。Splunk做爲機器數據採集、分析和展示領域的領導者,極大地方便了這一過程,除此之外,Splunk還提供了多樣的機器學習應用來實現模型訓練、優化、部署的步驟,幫助用戶輕鬆實現優化IT、安全和業務運營,異常檢測等機器學習的功能。


 2.內置的命令

Splunk提供了20多個和機器學習相關的命令,可以很方便的直接在數據上進行分析、報警或預測。按照命令的功能可以大致分爲兩類:分別是時序分析和異常檢測。


時序分析

現實生活中大多數的機器數據都會自然的帶上時間戳,這種時間序列數據可以看做三個部分的簡單相加或者相乘。


Additive:

Time Series=Seasonal+Trend+Random

 

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章