随着现代控制系统的设备复杂化和规模大型化,对复杂系统进行合理的故障诊断是一个关键问题。如果能及时在系统运行过程的可控范围内检测出早期故障并隔离报警,将有效避免异常事件的发生,减少生产力损失。
房汉鸣等[1]将故障诊断方法分为基于解析模型的方法、基于经验知识的方法以及基于数据驱动的方法。由于现代系统具有多变量、强耦合和非线性等特点,使得基于数据驱动的方法成为故障诊断领域的热点[2]。文成林等[3]将基于数据驱动的故障诊断技术细分为基于统计分析的故障诊断方法、基于信号处理的故障诊断方法和基于人工智能的故障诊断方法。由于故障类型和故障征兆之间不存在简单的对应关系,针对系统的不确定性和复杂性,基于人工智能的故障诊断技术较为适用。文成林等[3]从增加新的信息、挖掘未利用的隐含信息和采用新的数学工具3个角度提出4个基于数据驱动的故障诊断研究展望:基于多源信息融合的故障诊断展望[4-5]、基于关联性分析的故障诊断展望[6]、基于机器学习的故障诊断展望[7-8]、基于时频分析的故障诊断展望[9-10]。
在基于机器学习的故障诊断中,传统的智能学习方法,无论是用于分类还是回归,多数为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约,如何从监测数据中对故障特征进行挖掘并表示是该类方法的研究难点。如果能对故障数据中的隐含信息进行合理提取并表征,就能得到更好的故障检测和预测结果。目前人们提出了许多用于故障诊断领域的机器学习方法:文献[11]针对生产系统中成分的退化和机械的磨损,利用ANN技术实现故障的检测和诊断;文献[12]提出了最小二乘支持向量机(SVM)混合分类器,采用粒子群优化算法优化SVM的参数,实现对油浸式电力变压器的溶解气体分析的故障诊断;文献[13]提出了结合奇异值分解和极限学习机算法的滚动轴承故障诊断技术;文献[14]使用反向传播算法和最小二乘算法微调自适应的模糊推理神经网络的网络参数,从而对感应电机进行故障诊断。上述方法都是从逼近论的角度拟合监测数据,存在逼近精度等方面的不足,尚不能够充分挖掘监测数据中的故障特征[15]。
考虑机器学习故障诊断的研究现状及存在的问题,本文提出了基于XGBoost算法的故障特征提取方法。
XGBoost算法[16]是机器学习中一种非常有效的算法,其基本思想是对目标函数做二阶泰勒展开,利用函数的二阶导数信息来训练树模型,并把树模型复杂度作为正则项加到优化目标中,使学习到的模型泛化能力更高。XGBoost算法模型在有K个树的情况下,它的目标函数O为
(1)
式中,yi为第i个目标的真实值;为第i个目标的预测值;
描述yi与
之间的差异;n为样本数量;Ω(fk)为第k个样本特征参数fk所在的树模型复杂度;K为样本特征参数的总量。
通过在梯度方向上进行优化,不断降低弱学习器的模型残差,得到新的树模型。因此,在第t次迭代步计算中,把训练目标函数O转换成
(2)
式中,ft(xi)为第t次迭代步计算中输入变量xi所在的树结构值;C为常数。
此时,通过二阶泰勒展开来逼近目标函数,得
(3)
预测误差对当前模型的一阶导数为
许多预测误差对当前模型的二阶导数为
由于在第t次迭代时,第t-1次的模型残差已知,因此去掉常数项并对式(3)进行展开,把目标函数写成按叶节点累加的形式:
(4)
式中,I为每个叶子上面样本的集合,Ij={i|q(xi)=j)};q(xi)为树结构函数;wj为每棵树叶节点输出分数;T为分裂树的叶子节点个数;λ和γ为权重因子,用来控制对应部分的比重。
由式(3)、式(4)可知,XGBoost算法使用二阶泰勒展开来逼近目标函数,使其仅依靠输入数据的值就可以进行叶子分裂优化,提高了可扩展性及自由性,并可根据具体应用场景构造相应的误差函数来进行特定树模型训练。因此把XGBoost算法引入故障诊断,自定义构建适应的故障分裂树是完全可行的也是十分必要的。
类似于决策树中的信息增益及基尼指数,XGBoost算法在每一次尝试对已有的叶子加入一个分割时,都会计算选取参数的增益Θ:
(5)
式中,下标L、R分别代表左子树和右子树;为左子树的信息分数;
为右子树的信息分数;(GL+GR)2/(HL+HR+λ)为当前不分割的信息分数。
增益Θ本质是对数据中包含的重要信息进行统计提纯,减少树叶子分割前后的信息不确定性,那么当整棵树分裂完成后,最终形成的叶子节点的信息量是最大的,信息重要度也是最高的。因此,在故障诊断中,可以通过使用该算法构建故障分裂树来对故障数据中的隐含特征信息进行深度挖掘,分裂树的深度越大,对故障数据的挖掘就越深,使用挖掘提取到的隐含故障信息就能构建更有效的故障诊断模型。
复杂系统的故障诊断多为预测分类问题,基于上述XGBoost算法基本理论,结合故障诊断分类场景,通过自定义适应的损失函数来构建故障分裂树,确定故障样本在叶子节点的位置索引向量,并对其进行位置编码重构,以此实现挖掘到的隐含特征信息的提取及智能化表征。
解决复杂系统故障诊断的多故障模式识别问题的关键是使故障模式的诊断类别和真实类别尽量接近。引入极大似然估计法[17],对于给定的故障样本及其对应的故障状态类别,自定义损失函数J描述yi与之间的区别:
(6)
式中,n为故障样本总个数;yi为故障的真实类别;为故障的诊断类别。
借鉴XGBoost算法理论,此时故障分裂树模型第t次迭代的目标函数O(t)可表示为
ft(xi)))]+C
(7)
用二阶泰勒展开得到近似目标函数为
Ω(ft)+C
(8)
的一阶导数为
二阶导数为
对于故障分裂树,去掉常数项和C仍有
(9)
此时的函数O(t)为每次迭代需要训练的故障分裂树的最终目标函数。则根据XGBoost算法理论,故障分裂树的叶节点累加形式变为
(10)
式(10)对wj求导并令导数为零,求得叶节点输出分数及故障树结构的最小损失S为
(11)
(12)
复杂系统的故障分裂树的构建过程如图1所示。具体的树分裂步骤如下。
图1 故障分裂树构建图
Fig.1 Fault split tree construction diagram
(1)根据故障数据及故障类型构建损失函数利用该损失函数构建故障分裂树第t次迭代下对应的目标函数。
(2)使用式(8)作为目标函数引导每一步的故障分裂树构建。
(3)树分裂过程中,在当前树节点的样本中依次选取一个参数特征,使用式(5)计算该参数作为后续节点分裂标准的增益信息Θ。
(4)当所有参数都计算完成后,根据此增益Θ选择对应故障参数对当前故障树进行分裂,并将样本置于对应的节点中。
(5)根据增益Θ是否小于设定的阙值γ,判断是否进行当前树节点的分裂;同时根据此故障分裂树是否达到设置的最大树深度,判断此时故障分裂树是否构建完成,停止分裂。若是,则计算式(11)、式(12),得到此故障分裂树的最小损失函数值及预测分数w;否则回到步骤(3),并按顺序执行后续步骤。
在迭代计算的过程中,该故障分裂树会不断枚举分裂结构,并在尝试分裂每一个叶节点时,计算分裂参数的增益Θ来进行重要信息的统计提纯,利用上述方法寻找一个最优结构的故障分裂树并计算式(11)、式(12)得到对应的最小损失函数值S及当前结构分数wj。此时树的叶子节点包含最多且最重要的隐含故障特征信息。
为使这些隐含特征信息被后续算法更好地识别,提出使用叶子节点位置特征编码的方式,对其进行表征:确定每个样本在故障分裂树中的叶子节点位置索引向量;创建所有样本的位置索引矩阵;对位置索引矩阵进行编码重构。
设故障训练样本数据集为{x1,x2,…,xn},在拥有K棵故障分裂树每棵分裂树叶子节点数量为T的情况下,第n个样本在第k棵树中对应的叶子节点位置为ank∈[1,T],其中k∈[1,K],K为样本的位置索引向量维度,而不同分裂树中对应位置索引可以相同或不同,得到所有样本位置索引向量矩阵Z为
(13)
式中,n为样本数量;K为分裂树数量。
在此位置索引矩阵中,不同样本间的距离差异仅代表其在分裂树中位置上的差异,其中包含的隐含故障信息还是隐式的,为了更好地利用该索引位置上所隐含的信息,需对其进行索引向量的编码重构。先将位置索引特征的取值扩展到欧氏空间,得到新特征集合为V,V为Z中所有元素的集合;再将每个样本索引向量维度扩展成K×T。当样本中存在集合V中的取值时,在新向量中的对应位置取值为1,否则为0。由此得到所有样本的编码重构矩阵为
(14)
此重构矩阵相当于将原本的位置索引矩阵转化为一个隐含信息显式矩阵,此时矩阵中两两向量之间的距离差异代表了不同隐含信息间的差异,得到的样本编码特征也更具有代表性。此重构矩阵不仅能够将隐含故障信息显式化,而且在一定程度上也扩充了经故障分裂树提取的深层次隐含故障信息特征,为后续算法模型提供更多的有用特征信息。
使用上述位置特征编码方式重构得到的隐含信息表征矩阵作为训练算法模型的特征,结合后续SVM算法构建故障诊断模型,流程如图2所示。具体计算步骤如下。
图2 故障诊断模型构建流程图
Fig.2 Flow chart of fault diagnosis model construction
(1)故障数据预处理。采集的故障样本数据最初是杂乱无章的,经常包含缺失值、重复值、异常值等,而构建故障分裂树需求的数据是数值矩阵形式的,因此,根据数据具体情况,使用数据离散化、均值或中位数填充缺失值等方式对数据进行预处理,以此得到规整的样本数据。
(2)故障分裂树构建。根据式(5)、式(8)、式(11)及图1所示方法构建故障分裂树模型,并得到最优叶子节点数量T及其对应的叶节点分数w。
(3)叶节点位置索引向量提取。使用建立的故障分裂树,提取每个故障样本在分裂树中的叶子节点位置,形成对应的索引向量,并得到所有样本的索引向量矩阵Z。
(4)索引特征集合构建。根据2.2节描述的方法,重构索引向量特征空间,得到新的特征集合V。
(5)编码矩阵生成。扩展每个样本索引向量维度为K×T,并根据2.2节描述的方法进行编码重构,得到编码矩阵
(6)故障诊断模型构建及故障识别。基于编码矩阵和故障样本原始参数,结合SVM等机器学习算法建立故障诊断模型。使用该模型对待诊断识别的故障样本进行故障诊断,得到其对应位置编码重构向量及故障参数信息,通过上述已构建的智能诊断模型输出对应诊断结果。
本文所使用的数据为无传感器驱动诊断数据集(表1),来自UCI机器学习数据库。驱动器同时包含完整的和有缺陷的组件,这导致在不同状态条件下可得到11种不同的故障类型,数据集中的所有故障类型已用数字1~11区分表示,并且每种状态条件都通过12种不同的运行条件进行了多次测量。数据集的属性信息从电流驱动信号中提取,并由经验模式分解方法生成,使用两相电流的前三个固有模式函数及其残差将其分解为子序列,对于每个子序列计算统计特征均值、标准偏差、偏度和峰度,最终得到58 509个故障数据样本,每个样本包含48个属性f及其对应的故障类型属性ψ,并用集合{f1,f2,…,f48,ψ}表示这49个特征参数。
表1 无传感器驱动诊断数据集
Tab.1 Sensor less drive diagnostic data set
数据属性属性特征实例数量属性数量故障种类相关任务多元真实58 5094911分类
将故障数据分成训练数据和测试数据,用故障训练数据构建故障诊断模型,然后用测试数据验证模型的准确度。对比使用原始故障参数构建的诊断模型与使用XGBoost故障特征提取的模型在测试数据上的准确度情况,即可验证该故障特征提取方法的有效性。
对于多故障模式的识别诊断,我们关注的是对故障诊断识别的准确性,通过观察故障诊断的类别与其真实的故障类别匹配情况来判断模型的优劣。因此计算模型精度为
(15)
(16)
根据图2所示流程和上述真实数据构建故障诊断模型。图3所示为其中单棵故障分裂树的内部结构。该分裂树共有10个叶子节点、8个树节点、1个根节点。在每个树节点上都有对应的故障参数属性分裂标准。该标准选择的参数根据2.1节的步骤(4)确定。以样本参数f10是否小于0.032 237作为判定依据,确定了第二层2个树节点,其中对于第二层的左子节点,根据参数f15及参数f4和f9形成最终的4个叶节点,并输出对应的预测分数;对于第二层的右子节点,依次根据对应的参数规则分裂成最终6个叶子节点,此时得到一个完整的故障分裂树结构。当样本落入此分裂树中时,每个样本根据对应参数分布及故障树的结构规则,进行从上往下层次遍历,最终落入对应的叶子节点上,并得到对应的输出分数和索引位置向量。
图3 故障模型单棵分裂树
Fig.3 Fault model single split tree
矢量X10为该故障数据中第10个样本,它在5棵分裂树下得到的叶子节点位置索引向量为
Z10=(4,6,3,3,3)
(17)
索引位置的特征编码结果为
(18)
使用该特征作为故障数据中深层次隐含特征信息的智能表征,衔接SVM算法[18-19]构建故障诊断模型并在故障测试数据上对模型进行评价。
表2所示为基于自定义XGBoost故障特征提取的SVM算法的诊断结果,SVM算法参数均为默认参数。此模型分别诊断识别正确的各类别故障样本数为927、625、827、592、488、699、986、949、826、923、991。由准确度公式(式(15))可知,该模型在测试数据上的诊断准确度为80.3%。
表2 基于XGBoost故障特征的SVM算法诊断结果
Tab.2 SVM algorithm diagnosis result based on XGBoost fault feature
样本数准确率(%)真实类别11 00092.721 00062.531 00082.741 00059.251 00048.861 00069.971 00098.681 00094.991 00082.6101 00092.3111 00099.1总体精度80.3
图4为基于XGBoost故障特征提取的SVM故障诊断模型的决策边界图。该图选取了故障数据集中的两个参数f11和f40作为坐标轴,并选取了11个故障类型中的3种类别进行可视化。从图中观察到,使用了XGBoost特征的SVM模型的决策边界很好地分离了3种故障类型的样本点,使其落在对应的故障类别区域内。图中右侧差异较大的异常点也被识别出来,表明使用XGBoost提取特征的该模型鲁棒性较高。
图4 基于XGBoost故障特征的SVM故障模型决策边界
Fig.4 SVM fault model decision boundary based on XGBoost fault feature
同时,该模型给出了故障诊断特征参数的重要性排序,如图5所示。由图可知,针对该故障数据特征及基于XGBoost算法提取特征建立的模型中,参数属性f9是影响故障发生的最重要影响参数,参数属性f6和参数属性f11也会对故障产生一定的影响。当诊断出驱动器即将或已经发生故障时,可根据输出的故障特征参数重要性对驱动器的相应位置进行定位与故障排查,这就大大减少了对故障源追踪与处理的时间,给故障诊断带来极大方便。
图5 故障特征参数重要性排序
Fig.5 Fault feature parameter importance ordering
为了验证本文所提出的基于XGBoost故障特征提取方法的有效性,仅使用原始数据参数构建SVM算法诊断模型。
表3所示是仅使用原始参数特征的SVM算法模型在故障测试样本上的诊断情况。在11 000个测试样本中,由准确度公式可知,模型总体精度为76.7%。
表3 原始特征下SVM模型诊断结果
Tab.3 SVM model diagnosis results under original features
样本数准确率(%)真实类别11 00089.721 00062.031 00079.741 00059.251 00030.861 00065.971 00095.681 00090.991 00080.6101 00090.3111 00098.5总体精度76.7
图6是原始特征下上述故障模型的决策边界图。与图4对比可以发现,原始特征下构建的故障诊断模型的分类决策边界较差,它不能很好地区分大部分故障类别的样本点,在此二维可视图下,对参数f40小于60的样本无法清晰区分,同时,对这3种故障类别的异常数据点的识别诊断能力也较差。
图6 原始特征下SVM故障模型决策边界
Fig.6 SVM fault model decision boundary under original features
建模实验结果表明:与仅使用原始参数特征构建的故障诊断模型相比,本文提出的基于XGBoost的特征提取方法深入挖掘并表征了故障数据中隐含的故障规则信息,使后续算法模型的诊断识别准确度更高。同时它给出了驱动器发生故障时各特征参数的重要性排序,可以作为故障定位与检测的有效依据。
(1)本文提出一种基于XGBoost算法的特征提取方法,用于挖掘故障数据中隐含的故障特征信息并进行智能化表征,同时给出故障特征参数的重要性排序,作为故障定位与检测的依据。
(2)根据具体故障诊断场景自定义XGBoost算法的损失函数,构建故障分裂树,提取样本在故障分裂树模型中的叶节点位置索引向量并进行特征编码重构,得到隐含特征信息的表征矩阵,然后结合SVM等常用机器学习算法构建故障诊断模型并进行故障诊断。
(3)基于UCI机器学习数据库的驱动器故障数据,通过构建驱动器故障分裂树的方式很好地实现对数据中重要属性信息的统计及驱动器隐含特征信息的深度挖掘。实例分析表明,原始特征下的SVM模型精度为76.7%,XGBoost隐含特征下的模型精度为80.3%,验证了该方法的有效性及通用性。
[1] 房汉鸣,税爱社,汪辉,等.基于大数据的控制系统故障诊断方法综述[J].单片机与嵌入式系统应用, 2016, 16(4):6-9.
FANG Hanming, RUI Aishe, WANG Hui,et al. Overview of Fault Diagnosis Methods for Control Systems Based on Big Data[J]. MCU and Embedded System Applications,2016, 16(4):6-9.
[2] WANG H, CHAI T Y, DING J L, et al. Data Driven Fault Diagnosis and Fault Tolerant Control: Some Advances and Possible New Directions[J]. Acta Automatica Sinica, 2009, 35(6):739-747.
[3] 文成林, 吕菲亚,包哲静,等.基于数据驱动的微小故障诊断方法综述[J].自动化学报, 2016, 42(9):1285-1299.
Wen Chenglin, LYU Feiya, BAO Zhejing,et al. A Review of Micro-fault Diagnosis Methods Based on Data Drive[J].Acta Automatica Sinica, 2016, 42(9):1285-1299.
[4] RAPUR J S, TIWARI R. Automation of Multi-fault Diagnosing of Centrifugal Pumps Using Multi-class Support Vector Machine with Vibration and Motor Current Signals in Frequency Domain[J]. Journal of the Brazilian Society of Mechanical Sciences & Engineering, 2018, 40(6):278.
[5] QU X, LI B, YAO C, et al. Diagnosis Expert System Design of a Certain Ordnance Launch Circuit[J]. Lecture Notes in Electrical Engineering, 2015, 334:769-777.
[6] LI K , ZHANG Y L , LI Z X . Application Research of Kalman Filter and SVM Applied to Condition Monitoring and Fault Diagnosis[J]. Applied Mechanics and Materials, 2011, 121/126:268-272.
[7] FERNANDEZ-FRANCOS D, MARTNEZ-REGO D, FONTENLA-ROMERO O, et al. Automatic Bearing Fault Diagnosis Based on One-class V-SVM[J]. Computers and Industrial Engineering, 2013, 64(1): 357-365.
[8] NAMDARI M, JAZAYERI-RAD H. Incipient Fault Diagnosis Using Support Vector Machines Based on Monitoring Continuous Decision Functions[J]. Engineering Applications of Artificial Intelligence, 2014, 28: 22-35.
[9] XU Y, ZHANG Z, LU G, et al.Approximately Symmetrical Face Images for Image Preprocessing in Face Recognition and Sparse Representation Based Classification[J].Pattern Recognition,2016,54:68-82.
[10] LI C, HU S, GAO S, et al. Real-time Grayscale-thermal Tracking via Laplacian Sparse Representation[C]∥International Conference on Multimedia Modeling. Miami, 2016:54-65.
[11] ZHANG Z Y, WANG Y, WANG K S. Fault Diagnosis and Prognosis Using Wavelet Packet Decomposition, Fourier Transform and Artificial Neural Network[J]. Journal of Intelligent Manufacturing, 2013, 24(6): 1213-1227.
[12] WEI C H, TANG W H, WU Q H. A Hybrid Least-square Support Vector Machine Approach to Incipient Fault Detection for Oil Immersed Power Transformer[J]. Electric Power Components and Systems, 2014, 42(5): 453-463.
[13] TIAN Y, MA J, LU C, et al. Rolling Bearing Fault Diagnosis under Variable Conditions Using LMD-SVD and Extreme Learning Machine[J]. Mechanism and Machine Theory, 2015, 90: 175-186.
[14] YANG B S, OH M S, TAN A C C. Fault Diagnosis of Induction Motor Based on Decision Trees and Adaptive Neuro-fuzzy Inference[J]. Expert Systems with Applications, 2009, 36(2):1840-1849.
[15] 雷亚国,贾峰,孔德同, 等. 大数据下机械智能故障诊断的机遇与挑战[J].机械工程学报,2018,54(5):94-104.
LEI Yaguo, JIA Feng, KONG Detong, et al. Opportunities and Challenges of Mechanical Intelligence Fault Diagnosis under Big Data[J].Journal of Mechanical Engineering,2018,54(5):94-104.
[16] CHEN T Q, GUESTRIN C. XGBoost: a Scalable Tree Boosting System[C]∥ACM SIGKDD Conference on Knowledge Discovery and Data Mining. San Francisco, 2016:785-794.
[17] FISHER R A. On the Mathematical Foundations of Theoretical Statistics[M]∥Breakthroughs in Statistics.New York :Springer, 1992:309-368.
[18] CORTES C, VAPNIK V. Support-vector Networks[J]. Machine Learning, 1995, 20(3): 273-297.
[19] HONG W C, PAI P F. Predicting Engine Reliability by Support Vector Machines[J]. International Journal of Advanced Manufacturing Technology, 2006, 28(1/2):154-161.