时间:2024-05-04
刘悦
(中国烟草总公司浙江省公司 浙江省杭州市 310001)
在大型数据中心,硬盘的数量通常达到数百万个。硬盘故障是引起服务器故障的最主要原因,据统计,硬盘故障占数据中心硬件故障的近80%。而硬盘故障通常是永久性的,难以恢复,其频繁发生将直接影响服务器乃至整个IT基础设施服务的稳定性和可靠性。因此,大型数据中心需要提前预测硬盘即将发生的故障,以提前采取数据备份、服务切换等措施,从而减少硬盘故障带来的损失[1]。
硬盘中已集成自我监测、分析和报告技术(S.M.A.R.T.),利用传感器采集到硬盘实时状态信息,以评估硬盘当前的健康状况。若检测到硬盘的异常情况,则会发出警告。然而,该技术的准确率较低,存在大量的误报和漏报。尽管该技术的性能不尽如人意,但其采集到的数据为后续进一步的分析、挖掘提供了强有力的支撑。
近年来,已有大量研究工作来提高硬盘故障预测的准确率。这些方法可分为基于统计理论、机器学习和深度学习的方法。基于统计理论的方法包括:多变量秩和检验技术[2]、贝叶斯方法[3]和RAIDShield方法[4]。随着数据量的不断增多,大量机器学习模型被应用到硬盘故障预测。[5]提出了提出一种基于自适应加权Bagging-GBDT算法的硬盘故障预测模型。[6,7]提出了基于分类和回归树的模型,并人工设计了基于时间窗口的时序特征以考虑数据中的时间依赖。为了进一步考虑时序特征,[8]设计了基于隐马尔可夫和隐半马尔可夫模型,其能有效建模短期的时间依赖。深度学习能自动从原始中提取特征,充分利用数据中隐含的信息,在各种应用领域展现出强大的建模能力。[9]将硬盘故障预测转化为时间序列建模问题,利用循环神经网络建模时间依赖,并取得了优异的性能。[10]利用生成对抗网络作数据增强,以提高模型的鲁棒性。[11]比较了时间卷积网络、自编码器网络、LightGBM模型的差异。尽管这些方法在模型设计和选择上取得了长足的进步,但在面对实际的数据时,仍然存在两方面的挑战。
首先,采集到的数据中正负样本极度不平衡。由于硬盘在很长一段时间都处于正常运行中,采集到大量表示硬盘在正常运行状态下的数据,而只有少量表示硬盘处于异常时的数据,即正负样本极度不平衡。而现有的机器学习模型通常假设数据中正负样本是平衡的。面对实际不平衡的数据,现有模型难以发挥其真正的价值。因此,如何让模型充分利用不平衡数据是一项挑战。
其次,不同指标数据的形态差异较大,如何构建有效的数据特征。S.M.A.R.T.采集到了近130个关键性能指标,这些指标数据在变化幅度、变化率、数值范围、均值、方差等方面存在较大的差异。一方面,这些指标数据是在时间维度上连续采集的,当硬盘发生故障时,这些指标在时序上的变化规律也不尽相同,可能会是突变、缓慢变化、不变等。另一方面,单一指标往往难以有效表征硬盘的运行状况,需对这些单一特征进行组合,以构建更具表征能力的特征。因此,如何对这些多样化的指标数据构建具备丰富表征能力的特征是又一大挑战。
针对上述挑战,我们提出了不平衡数据集下基于时序和高阶特征的硬盘故障预测模型,本文的贡献点如下:
(1)从两个维度构建有效的特征,以提高模型的表达能力。即在指标和指标之间做特征交叉,构建高阶特征;在时间维度上,构建多尺度、多维度的时序特征。
(2)将Focal loss、欠采样策略和LightGBM模型结合,使模型更关注于少量的、易错分的样本,有效解决了数据样本不平衡问题,并在实验结果中验证了模型的鲁棒性和有效性。
原始数据中包含近130个指标,这些指标从不同维度反应了硬盘的运行状态,表1给出了部分指标的含义。数据的采集粒度是以天为单位,并对每一天的数据打上了标签,表示硬盘在该天是属于正常/异常。
表1:部分指标的含义
对给定历史数据中各指标做定性分析(包括时序分析和统计分析),可为后续的特征设计和模型选择提供指导。
2.1.1 时序分析
由于硬盘故障一般是随着时间呈现逐渐衰变,分析各指标中数值随着时间变化情况有助于构建时序特征。如图1所示为某个硬盘中多个指标在2019年的10.1-12.31之间随着时间变化的情况,从图中可以看出:
图1:各指标时序变化
(1)对于smart_1_raw,其属于稳态时间序列,不需要提取时序特征;
(2)对于smart_9_normalized,其整体呈下降趋势,但又呈现平稳和跳跃两种情况,因此需要构建时序特征来判断当前处于哪种状态;
(3)对于smart_194_raw,其同时存在平稳和波动状态,数据中可能噪声较大,因此需要构建时序统计特征;
(4)对于smart_222_raw,其整体呈上升趋势,因此其数值本身的意义不大,需要考虑差分特征。
2.1.2 统计分析
分析各指标中数值的整体分布情况,有助于理解各指标的变化幅度、变化率、数值范围、均值、方差等。如图2所示为指标中数值的整体分布情况,从图中可以看出:
图2:各指标的数据分布
(1)对于smart_240_raw,其数值在几个局部范围内存在高峰,可近似为多个高斯分布;
(2)对于smart_190_normalized,其数值集中在某个范围内,且近似呈高斯分布。
因此,可考虑基于直方图优化的模型,将数据在区间内划分多个桶,每个桶用一个代表值表示,在体现值之间差异的同时,能提高模型的鲁棒性。
基于上述分析,在特征构建上,从两个维度出发,横向和纵向,横向即考虑指标和指标之间做特征交叉,构建高阶特征;纵向即时间维度,构建多尺度、多维度的时序特征。在模型选择上,LightGBM和因子分解机(FM)是两种性能优异的基于直方图优化的模型。LightGBM的优点在于其能自动构建最优桶,而FM需要人工构建桶,但其能自动对特征进行组合,形成更具有表征能力的高阶特征。因此,本方案采用LightGBM作为基础模型,通过人工构建并筛选有效的高阶特征,充分利用LightGBM和FM两者的优势。
方案整体框架如图3所示,可主要分为三部分:特征设计、模型优化和模型训练。特征设计包括原始特征、时序特征和高阶特征,其用于建立原始数据中蕴含的多维度、多尺度等多样化的特征。为了解决数据中正负样本不平衡的问题,在模型优化中引入了Focal loss和欠采样策略。在模型训练时,采用两阶段训练的策略,选择出最优的特征子集,以避免因模型参数过多导致的过拟合问题。
图3:整体框架
特征设计是从原始数据中找出具备高价值的特征,使得机器学习模型获得更好的性能。对于硬盘数据,其具有以下两方面的特点:一方面,这些指标数据是在时间维度上连续采集的,当硬盘发生故障时,这些指标在时序上具有显著的变化规律;另一方面,原始数据中不同指标数据的形态差异较大,单一指标往往难以有效表征硬盘的运行状况。针对上述问题,本文设计了包括时序特征、高阶特征等多样化的特征。
原始特征。去掉全为空值和数值不变的指标,对缺失值进行填充,得到原始特征;
时序特征。时序特征用于获取数据在时间维度上发生的变化,当硬盘发生故障时,不仅与当前时间的状态有关,最近一段时间范围内的数据均能反映出异常,因此,设计了三种类型的时序特征,如图4所示。
图4:时序特征构建
(1)多尺度特征:设计不同窗口大小以反映多尺度特征,小尺度的窗口能反映短期的波动,大尺度的窗口能反映更长期的变化规律。即Scale(x,t,w)=(xt-w,xt-w+1,…,xt),其中x表示某个原始指标,t为当前时刻,w为窗口大小;选取多个不同的w以构建多尺度特征。
(2)时序统计特征:在每一个尺度内,分别计算多种统计量,包括最大值、最小值、平均值、方差:
(3)差分特征:非平稳的序列通过差分得到平稳的特征,一阶差分即当前值减去前一个值,二阶差分即在一阶差分的结果上再进行一次差分:
高阶特征。单一指标有时无法准备判断是否发生了异常,需要结合多个指标来综合判断,受到因子分解机的影响,将多个特征进行组合
构建高阶特征。当某个指标发生变化时,存在两种情况:
(1)硬盘发生了异常,此时其他指标也会发生变化,高阶特征则能够对异常进行放大;
(2)数据中存在噪声,此时其他指标不会发生变化,高阶特征则能够减弱噪声对数据的影响。因此,高阶特征能够更有效的捕获异常。二阶特征即把两个特征进行组合,得到一个新的特征;三阶特征即把三个特征进行组合,得到一个新的特征:
其中x,y,z分别表示三种不同的指标。
由于采集到的数据中正负样本极度不平衡,即表示硬盘稳定运行的负样本多,表示硬盘异常的正样本少。在实际数据集中,正负样本比例接近1:2000。现有模型会平等对待每一个样本,但存在两方面的问题:
(1)正样本较少导致模型需要大量的迭代优化;
(2)每个样本被准确分类的难易程度不同,难以被准确分类的样本才是更有价值的样本,而现有模型无法有效挖掘出难分类样本中的信息。
针对上述两点问题,本文采用了欠采样策略和Focal loss。欠采样策略在构建训练集时,对所有的正样本进行保留,只采样一部分负样本,使得正负样本的比例更加平衡。Lin等[12]在目标检测领域提出了Focal loss以解决正负样本不平衡的问题,可表示为:
(1)引入平衡因子α,用来平衡正负样本本身的比例不均;
(2)引入因子γ,减少易分类样本的损失。使得模型更关注于困难的、错分的样本。基于此,本方案在现有的分类模型中引入了Focal loss,以解决正负样本不平衡问题。
采用LightGBM算法作为本方案中的基础模型。LightGBM是基于直方图的决策树模型。相比于GBDT、XGBoost等决策树模型,LightGBM具备内存占用小、计算代价小等优点。模型训练可分为两个阶段,每一个阶段都是基于LightGBM算法。第一阶段的输入是上述构建的所有特征,通过训练,可得出每一个特征的重要性;然后将选择出来的重要特征作为第二阶段的输入,减少不重要特征对模型带来的负面影响,最终得到训练好的模型。
实验中采用了公开的数据集。2019年第四季度的数据,总共包含约1×107个样本,原始数据中包含了故障标签数据,0表示正常,1表示异常。在本次实验中,得到约5000个负样本。整个数据集分为训练、验证和测试数据集三部分;2019.10.1-2019.11.30间的数据作为训练集,2019.12.1-2019.12.10间的数据作为验证集,2019.12.11-2019.12.31间的数据作为测试集,表2给出了数据集中正负样本数。评价指标采用Precision、Recall和F1值:
表2:数据集正负样本数
其中,nTP、nFP和nFN分别表示把正类预测为正类、负类预测为正类和正类预测为负类的样本数。
在模型训练的第一阶段,需要得出每一个特征的重要性,从而选择出重要的特征作为第二阶段的输入。图5给出了重要性排名前20的特征,从结果中可以看出,有11个是设计的特征,其充分说明了设计的特征的有效性。
图5:特征重要性
为了分别验证本文设计的多种时序特征(多尺度特征、时序统计特征、差分特征)以及高阶特征的有效性,通过移除每一种特征,以验证这些特征对模型性能的影响。表3给出了这些模型的性能。从表中可以看出,这些特征都能在一定程度上提升模型性能,高阶特征的效果最大。
表3:采用不同特征的对比结果
为了解决正负样本不平衡问题,本文设计了欠采样策略和Focal loss。表4给出了分别使用这两种策略时,模型的性能,从结果中可以看出,两种策略都能明显提升模型的性能,相比之下,欠采样策略的提升效果更明显。
表4:采用不同优化策略的对比结果
本文设计了两阶段训练,第一阶段训练用于特征选择,第二阶段将第一阶段选择出的重要特征最为模型最终训练时的特征。表5给出了两阶段训练、仅一次训练时模型的性能。从结果中可以看出,特征选择能有效选择出重要特征,避免无效特征对模型性能的负面影响。
表5:特征选择的有效性
表6和图6分别给出了不同模型的性能以及对应的Precision-Recall曲线,从结果中可看出,本模型取得了最好的F1值0.399,这也充分表明了特征设计和优化策略的有效性。
图6:不同方法的Precision-Recall曲线
表6:不同方法对比结果
本文提出了不平衡数据集下基于时序和高阶特征的硬盘故障预测模型。其优点有:
(1)从横向(特征间交叉)和纵向(时序特征)两个维度抽取特征,得到具有表征力的特征;
(2)利用Focal loss和欠采样策略解决正负样本不平衡问题;
(3)通过两阶段训练,进一步提高性能。
但仍然存在以下不足:
(1)缺乏对各指标物理含义的深入理解,没有利用先验知识来指导特征的设计;
(2)采样人工定义特征的方式容易导致信息的丢失,后续可采用深度学习模型实现端到端的训练,如采用序列模型来提取序列特征;引入对抗训练来生成正样本。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!