基于XGBoost算法的分布式服务故障预测模型研究与应用

作者:王晓峰;王一大;孙玉强;宋希堂;王新东;于滨; 刊名:电信技术 上传者:张健

【摘要】为解决大型分布式系统中服务故障排查困难及系统恢复漫长的问题,需要实现分布式服务故障预测技术,而当前基于人工技术难以实现该需求。为实现该需求,文中提出一种基于XGBoost算法的分布式服务故障预测模型。通过对主机性能数据进行巧妙转换,将预测问题转换为分类问题,并利用XGBoost算法进行模型训练,从而对分布式系统服务进行故障预测。根据该方法,可有效提升运维人员的工作效率并减轻运维人员的工作负担,同时协助运维人员快速排查故障问题,起到对分布式服务故障早发现、早治理的效果。

全文阅读

D引言在大型互联网架构中,为提升平台计算能力及资源利用率,普遍采用分布式技术。然而使用分布也会带5^-些潜在问题,若主机资源需求与资源分配不均勾、部分主机长时间负载过重,容易导致ag务失效,造成?务中断甚至数据丢失;同时当系统发生故障时由于服务分散在不同主机’会导致故障问题难以定位、故^卜查耗时较长等问题。为实现快速珍断并定位分布式系统中的服务故障,Google提出调用I?*。舰调用链可极大&便ii维人_分7^?、统中的服絲腾进査’然而悔B调厢級术仅方便运维人员在分布式系统中的服务出现故障后进行^査及定位,无法令适IA员提前发现故障。因此,有必要对分布游^中的服务故障预泖肢术进行深X研究。S XGBoostK法原理XGBoost (Extreme Gradient Boosting)算法于2016年被提出以来一直受到学术界及工业界的关注。XGBoost是GBDT (Gradient Boosting Decision Tree)算法的改进版,XGBoost算法在GBDT算法的基础上通过对损失函数进行二阶泰勒展开并在代价函数中加入正则项,控制了模型的复杂度,使模型能够更好地进行收敛,防止发生过拟合现象;另外XGBoost算法在训练之前,通过预先对数据进行排序,将结果保存为block结构,令后面的迭代中重复使用该结构,降低计算复杂度,从而实现并行化,提高了算法的计算效率。XGBoost算法本质是Boosting算法的一种。Boosting算法的主要思想是将多个弱分类器集成在一起,形成一个强分类器。XGBoost算法也是由多个弱分类器集成而来,其基分类器既可选用GBDT算法中的CART模型,也可选用线性分类器,因此相比于GBDT算法更加灵活。XGBoost算法的核心思想是不断添加树且不断进行特征分裂来生长一棵树,毎次添加一棵树,实质是学习一个新函数,去拟合上次预测的残差。当训练完成得到i棵树时,便可预测一个样本的分数,即根据样本特征,在每棵树中落到对应的一个叶子节点,每个叶子节点对应一个分值,最后将每棵树所对应的分值累加即可得到该样本的预测值。XGBoost算法的实现步骤如下:给出一组数据集〇={闪,兄)}(丨£?丨=?>^£尺1>,石尺),该数据集包含T1个样本和m个特征。首先使用欠个激活函数来构建该模型。)>l=<Kxl)=fdft(xl) fteF (1)*=l ? 、w其中J=={/p〇=W,W}(gjr’—7\weR r)由多个CART树组成,这里9表示将实例映射到相应叶索引的每棵树结构,T是树中叶子节点的数量,毎个对应于独立树结构g和权重vv。与决策树不同,每个CART树在每片叶子上包含连续分数,其中使用来表示第i_个叶子上的分数。然后需要对得出的模型构建目标函数,BP:=+(2)I k其中fl(/)=rr+^M2。 得到目标函数后便可对模型进行训练,通过对目标函数构建似然函数并对其进行最优化,该目标函数的似然函数如下:/■⑴=之狀,见(M>+乂(义,))+邙乂) (3)1=1为实现快速最优化目标函数,文中使用二阶泰勒展开式对该似然函数进行约束,寻找其近似最优值,公式如下:LU)* + (4)/=i L L '公式u>中反:?^兄,:^11)和/(乃,严")是关于损失函数的一阶和二阶梯度统计。由于公式(4)计算较为复杂,因此可删除其中的常数项以获得如下简化0标:/=i L L 3;其中,定义/;={/k(x)=y}作为叶子结点/的实例集,通过扩展正则化项II重写公式(5),即:X+ +Yt+t^X L ^ i=\\v2;-z(z見)%+;(

参考文献

引证文献

问答

我要提问