机器学习之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预测”图比较,两者数据基本是准确的。

本章有很多待完善地方,希望自己可继续改进。另外在选择算法之前需要优先考量数据质量,数据如果污染则严重影响检测方法。

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