機器學習之CPU利用率預測

利用上篇運維指令不用記,會用SQL就可以,可對CPU信息進行採集並結合機器學習算法對CPU的利用率進行預測,從而讓運維人員及時瞭解CPU未來運轉情況,從容應對突發問題。

一、預測方法簡述

預測算法屬於監督式機器學習領域,因爲他需要對歷史數據進行訓練並建立基於時間序列的迴歸模型。

一般情況下時間序列主要分爲:趨勢、季節、週期三個方面。

  • 趨勢:爲變化的長期方向,不受相對較小波動和擾動影響;
  • 季節:與數據性質密切相關,如:晝夜,春、夏、秋、冬等;
  • 週期:數據中有相似模式但週期性不同的一般變化,如股市的週期(股票上漲下跌的一個循環)、房價週期等。

預測是執行異常檢測的有效方法,特別是其時間序列相對穩定,相對兩種算法,ARIMA可以可靠地進行預測。LSTM網絡對於更復雜的時間序列數據有更好的包容性。預測不適合離羣點檢測。

ARIMA:自迴歸模型是一種統計模型,其輸出結果線性依賴與先前值,是一種強大靈活的時間序列預測方法。

LSTM:遞歸神經網絡的變體,特別適合學習基於時間序列的分類和預測。

如果時間序列不穩定,沒有遵循任何可觀察的趨勢,或者波動幅度變化很大,那麼預測效果將不會表現良好,預測對一維數據效果最好,如果需要預測多維數據,最好使用其他檢測方法。

二、代碼解讀

基礎環境

本文基於python實現,所以讀者需要具備python環境。

具體使用類。如下圖:

項目使用類

語料集信息共分爲測試集(cpu-test-a.csv)、訓練集(cpu-train-a.csv)、全部集(cpu-full-a.csv)三個方面。測試集主要用戶CPU利用率預測驗證,訓練集用戶CPU利用率訓練,全部集=測試集+訓練集。具體語料內容如下圖:

CPU語料集

讀取信息

通過分析結構化數據的工具集pandas獲取全部集、訓練集與測試集的文件內容。

讀取語料信息

訓練數據圖形化輸出

通過matplotlib.pyplot將訓練集內容輸出,輸出代碼如下:

圖形化輸出-代碼

其中第一行爲定義圖形化的高度與寬度;第二行爲定義製作圖形,X軸爲日期,Y軸爲CPU,顏色爲黑色;第三行顯示Y軸的lable信息。第四行顯示圖形化的title信息。輸出效果如下:

圖形化輸出-效果

建立簡單的ARIMAX模型

ARIMA模型

第一行爲定義模型。已經穩定的序列具有0階差分;向上或向下穩定趨勢(恆定平穩)應具有1階差分,最高爲2階。差分其主要爲讓序列平穩化。第二行爲使用Metropolis-Hastings算法進行推理。第三行爲繪製ARIMA模型的擬合圖。

通過繪製後的模擬擬合圖,我們可直觀瞭解在基於訓練集的模型擬合效果不錯。

擬合圖

測試集樣本預測

我們選擇60個預測值及其置信區間來繪製最近100個觀測點。

預測

輸出效果如下(顏色越深代表置信度越高):

測試集-ARIMA預測

測試集樣輸出

將整體數據集輸出,在測試數據中加入背景方便與圖“測試集-ARIMA預測”進行數值比對。

測試樣本輸出

輸出效果如下(全部集樣本輸出,背景灰色爲測試集數據。):

樣本輸出

通過“樣本輸出”圖片與“測試集-ARIMA預測”圖比較,兩者數據基本是準確的。

本章有很多待完善地方,希望自己可繼續改進。另外在選擇算法之前需要優先考量數據質量,數據如果污染則嚴重影響檢測方法。

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