2. 中国人民解放军91202部队,辽宁 葫芦岛 125004
2. No. 91202 Unit of PLA, Huludao 125004, China
蒸汽动力装置作为船舶的动力型式之一,其安全稳定的运行是蒸汽动力船舶遂行各种任务的基础。凝给水系统一旦发生故障会影响船舶执行任务。而凝给水系统出现故障难以避免,因此,能够快速准确地诊断故障并排除故障,对于保持和恢复装备效能具有至关重要的作用。
蒸汽动力装置的凝给水系统是一个较复杂的闭环系统,它的故障传播机理错综复杂,故障特征彼此混杂,因此急需研究一种适合凝给水系统故障诊断的方法。李成钿等[1]总结了专家经验和实际情况,建立较为完整的凝给水系统故障知识库,结合深度置信神经网络来对该系统进行故障诊断,结果表明准确率高达98%。但由于凝给水系统复杂程度较高,基于经验模型方法需要大量的专家领域知识来建立知识库,将会耗费巨大的人力和物力。肖林博等[2]为了克服传统专家经验在故障诊断方面的不足,提出将优化后的鲸鱼算法和BP神经网络结合,更精准地实现船舶凝给水系统的故障诊断。王晓东等[3]结合了大数据分析方法和支持向量机,对船舶设备进行故障诊断,提高了故障预测的准确率。由此可见,基于机器学习的故障诊断方法大大提高了对船用凝给水系统进行故障诊断的效率以及准确率,已经成为大多学者关注的焦点[4 − 8]。Stacking算法是一种经典的机器学习算法,本文拟在文献[9]的基础上改进Stacking算法,通过设计试验比较Stacking算法和单一算法综合性能,并结合案例进行验证。
1 工作原理 1.1 Stacking算法分析传统Stacking算法通常被用作二分类,一般分为2层:第1层获取n个不同的分类器,作为Stacking算法的基分类器,利用初始训练集数据训练基分类器并产生新的数据集,将第1层产生的新数据集作为第2层分类器的训练数据集来训练第2层的分类器。在新数据集中,原始数据集的标签仍然被用作新数据集的标签。算法框架如图1所示。
![]() |
图 1 Stacking算法框架 Fig. 1 Stacking algorithm framework |
传统Stacking算法存在分类准确度较低、模型鲁棒性差等问题[10]。而船用凝给水系统故障诊断要实现多种故障分类,是多分类任务,因此需要对Stacking算法进行改进。
目前将二分类算法改造成多分类算法的方法主要有“一对一”、“一对多”、“多对多”。本文采用“一对一”的方法对Stacking模型进行改造,使其具有多分类的能力。数据集 Q 由 m 个不同类别数据组成,即 Q={ Q1, Q2,…Qm },从 Q 中每次选取2个类别不同的样本数据训练一个二分类器,一共需要建立 m(m−1)/2 个二分类器,由 m(m−1)/2 个二分类器共同组成多分类器。基于“一对一”方法的多分类 Stacking 模型建立过程如图2所示。
![]() |
图 2 基于“一对一”方法的多分类Stacking模型建立过程 Fig. 2 Multi-class Stacking model building process based on the “one-to-one” method |
在“一对一”方法中,采用“投票机制”的原理进行分类。将一组数据输入到算法中,m(m−1)/2个二分类器会分别判断对这组数据进行类别判定,并对所判定的类别分别投出一票,得到票数最多的类别就是最终的判定结果。
当分类器向多个类别都投出了相同的最高得票数就会发生“平局”现象,这时分类器会选择其中序号较小的类别作为最终分类结果,使分类器的分类准确率下降。为解决分类中出现的“平局”问题,在“一对一”的多分类Stacking算法基础上做出如下改进:若出现同一样本数据有多个最高得票数的情况时,这里假设出现3个相同的最高得票数,相对应的类别分别是i、j、k,则将3个类别的数据组成新的训练集,对该样本数据重新进行分类,重复上述步骤,直至得到唯一最高得票数,则该得票数所对应的类别为此次分类结果。
1.3 多分类任务评价指标凝给水系统的故障诊断是一个多分类问题,二分类问题的评价指标不适用于多分类问题,故需要对二分类器的评价指标进行多分类改造,使之适用于多分类器的性能评价。本文采用OVA(one versus all)法将二分类的评价指标扩展到多分类的问题上,其思想是每次选取一个类别将其当作正例,其余类别当作负例,分别计算评价指标。多分类问题混淆矩阵如表1所示。
![]() |
表 1 多分类混淆矩阵 Tab.1 Multi-class confusion matrix |
表中Aij代表真实状态为第i类的数据被预测为第j类数据的个数。多分类评价指标定义如下。
准确率为被正确分类的数据量与参加分类的数据总量之比,公式如下:
ACCURACY=∑mj=1Ajj/M。 | (1) |
式中:M为样本总数。
第i类的分类精确率(Precison)为正确分类为第i类的样本个数占被分类为第i类样本总个数的比例,公式如下:
Pi=Aiim∑j=1Aji。 | (2) |
总精确率P为:
P=P1×ω1+P2×ω2+…+Pm×ωm。 | (3) |
式中:ω1、ω2、…ωm为权值,一般情况下ωi的取值为第i类样本所占的比例,也可根据任务需求确定权值。
第i类的召回率(Recall)为正确分类为第i类的样本个数占第i类样本总个数的比值,公式如下:
Ri=Aiim∑j=1Aij。 | (4) |
总召回率R为:
R=R1×ω′1+R2×ω′2+…+Rm×ω′m。 | (5) |
式中:ω′1、ω′2、…ω′m为权值,一般情况下的取值ω′i为第i类样本所占的比例,也可根据任务需求确定权值。
Fβ值为:
Fβ=(β2+1)×P×Rβ2×P+R。 | (6) |
当β=1时,即为常用的F-score值,表达式为
F-score=2×P×RP+R。 | (7) |
将实地调研时装备管理人员所反映发生频率较高且较为重要的故障作为研究重点,故障类别有给水泵汽蚀、主抽气器故障、凝水泵汽蚀、主凝水管路泄漏、主冷凝器冷却水管路破损5种,与这些故障密切相关的凝给水系统运行参数主要包括凝水温度、主冷凝器真空、给水机组转速、凝水泵排出压力、除氧器给水温度、除氧器进水温度、除氧器储水调节阀开度、除氧器补水调节阀开度、冷凝器水位再循环调节阀开度、除氧器前凝水压力、给水总管压力、除氧器水位、冷凝器水位,共13个。共获取各类故障对应的运行数据300组,同时也获取了300组正常状态运行数据。
将各类故障数据集结合正常状态数据组成数据集D,在数据集D中的每个类别随机抽取250组数据组成数据集D′,共
Stacking算法基分类器选用随机森林(Random Forest,RF)、逻辑回归(Logistic Regression,LR)、K-近邻算法(K- Nearest Neighbor,KNN)、支持向量机(Support Vector Machine,SVM)、贝叶斯(Naïve Bayes,NB)共5种,采用5种交差验证的方法训练基分类器,元学习器采用LR,并利用“一对一”的方法建立多分类的Stacking算法。采用“一对一”的方法分别建立RF、LR、NB、KNN、SVM 基分类器的多分类模型,共得到6种分类模型,其中“一对一”方法建立的多分类模型中,每个二分类器的训练数据是由给水泵汽蚀、主抽气器故障、凝水泵汽蚀、主冷凝器冷却水管路破损、主凝水管路破损、正常状态六类数据两两组合产生的。基本流程如图3所示。
![]() |
图 3 试验流程图 Fig. 3 Flow chart of test |
将试验重复进行10次。由于D′是从数据集D中随机选取的,而训练集数据又是从D′中随机选取的,2次随机选取数据,保证了10次试验中训练集数据的差异,若Stacking算法在这10次试验中都有着较高的分类准确率,则说明Stacking算法具有较高的稳定性。
2.2 试验结果分析为了表达方便,分别用F1、F2、F3、F4、F5和F6代表给水泵汽蚀、主抽气器故障、凝水泵汽蚀、主凝水管路泄漏、主冷凝器冷却水管路破损和正常状态。且本文以下所提的“各故障”中,包含了正常状态。
取10次试验中的第一次试验进行分析,为方便对比将各算法对6类数据分类结果的精确率、召回率以及F-score值和算法整体的准确率绘制如表2~表4所示。
![]() |
表 2 不同算法诊断不同故障的精确率 Tab.2 The precison of different algorithms to disgnose different faults |
![]() |
表 4 不同算法的F-score值和整体准确率 Tab.4 F-score and Accuracy of different algorithms |
![]() |
表 3 不同算法诊断不同故障的召回率 Tab.3 The recall of different algorithms to disgnose different faults |
由表可以看出:
1)这6种故障数据分类精确率最高的算法依次是:SVM、NB、Stacking、SVM、SVM和SVM,其对应的精确率分别为1.00、0.83、0.97、0.97、1.00、0.95。Stacking算法对6种故障数据分类的精确率分别为0.98、0.74、0.97、0.81、0.83、0.88,对6种故障诊断的精确率都较高,可见用Stacking算法建立的模型对凝给水系统故障数据的分类结果是较为可信的。
2)对比Stacking算法的基分类器,Stacking算法在故障数据F1的分类精确率上,仅次于SVM;在F2分类上,精确度稍低于NB、RF和SVM;在F3分类上,精确度最高;F4分类上,精确度仅次于SVM;F5分类上,精确度稍低于SVM、NB和RF;F6分类上,精确度仅次于SVM。虽然SVM在F1、F2、F4、F5、F6等5种故障数据分类上有着较好的表现,但其在故障F3上的精确率只有0.31,说明其对故障F3的识别效果很差,故不能只用SVM这一种算法建立模型。Stacking算法对6种故障诊断的准确率不全都是最高的,但6种故障的诊断准确率都较高,说明了Stacking算法性能较为均衡。
3)这6种故障数据分类召回率最高的算法依次为;Stacking、Stacking、SVM、Stacking、NB和Stacking、NB;其对应的召回率分别为0.95、0.84、1.00、0.79、0.88、0.90。Stacking算法对6种故障数据分类召回率分别为0.95、0.84、0.90、0.79、0.88、0.83,对比Stacking算法的基分类器,对F1、F2、F4、F5等4种故障的分类结果召回率都是最高的,在故障数据F3和故障数据F6分类的召回率只比SVM和NB算法小,说明Stacking算法漏掉的故障数据较少,算法具有较高的召回率,更适用于故障诊断。
4)6种算法所建立模型总体F-score值最高的是Stacking算法,其值为0.87,说明在综合考虑准确率和召回率的情况下,Stacking算法的表现最好,其结果更加可信。
5)6种算法所建立的故障诊断模型总体准确率最高的是Stacking算法,其值为0.86。
将试验重复10次,Stacking算法模型以及其基分类器分类准确率如图4所示。
![]() |
图 4 不同算法准确率折线图 Fig. 4 Line chart of accuracy of different algorithms |
可知,10次实验中Stacking算法的准确率都是最高的,且上下浮动的幅度较小,说明Stacking算法具有较好的稳定性。
3 结 语利用Stacking算法对船用凝给水系统故障诊断,其结果在精确率、召回率等方面都有着较好的表现,F-score值和整体准确率都要高于其基分类器,因此,Stacking算法对船用凝给水系统而言,诊断结果比单一算法诊断结果更准确,具有较好的适用性,可以大幅提高运行管理的工作效率。
通过多次实验,Stacking算法上下浮动的幅度较小,且准确率均最高。说明Stacking算法对船用凝给水系统而言具有很强的稳定性,具有一定的工程实践意义。
[1] |
李成钿, 何欧, 潘隆轩, 等. 凝给水系统故障分析及其诊断技术研究[J]. 化工自动化及仪表, 2022, 49(3): 334-338. LI C D, HE O, PAN L X, et al. Condensate feed water system fault analysis and diagnosis technology research[J]. Journal of Chemical Industry Automation and Instrumentation, 2022, 49(3): 334-338. |
[2] |
肖林博, 陈辉, 管聪. 基于CAWOA-BP的船舶凝给水系统故障诊断[J]. 舰船科学技术, 2023, 45(6): 118-124. XIAO L B, CHEN H, GUAN C. Fault diagnosis of marine condensate feed water system based on CAWOA-BP[J]. Ship Science and Technology, 2023, 45(6): 118-124. |
[3] |
王晓东, 马旭颖. 基于SVM模型算法和大数据分析技术的船舶设备故障诊断[J]. 上海船舶运输科学研究所学报, 2021, 44(1): 49−53. WANG X D, MA X Y. Marine equipment fault diagnosis based on SVM model algorithm and big data analysis technology [J]. Journal of Shanghai Marine Transport Research Institute, 201, 44(1): 49−53. |
[4] |
宾世杨, 张振, 唐俊杰, 等. 基于机器学习的风电机组机械传动系统故障诊断研究[J]. 机械与电子, 2024, 42(1): 11-15. BIN X Y, ZHANG Z, TANG J J, et al. Research on fault diagnosis of mechanical transmission system of wind turbine based on machine learning [J]. Machinery & Electronics, 2019, 42(1): 11−15. |
[5] |
赵瑶瑶. 基于机器学习的故障诊断方法研究综述[J]. 中国设备工程, 2024(1): 173-175. ZHAO Y Y. Review of fault diagnosis methods based on machine learning[J]. China Equipment Engineering, 2024(1): 173-175. |
[6] |
王宏, 袁伯阳, 韩晨, 等. 基于机器学习的冷水机组早期故障诊断[J]. 低温与超导, 2023, 51(11): 96-102. WANG H, YUAN B Y, HAN C, et al. Early fault diagnosis of chiller based on machine learning[J]. Cryogenics and Superconductivity, 2023, 51(11): 96-102. |
[7] |
李少丽. 基于机器学习的风力机叶片结冰故障诊断模型研究[D]. 西安: 西安理工大学, 2023.
|
[8] |
汪凡雨, 吴一纯, 卜扬, 等. 基于机器学习的核电厂DCS卡件故障诊断研究[J]. 自动化仪表, 2023, 44(6): 5-12. WANG F Y, WU Y C, BU Y, et al. Based on machine learning study on fault diagnosis of nuclear power plant DCS card[J]. Automation Instrument, 2023, 44(6): 5-12. |
[9] |
孙彤, 陈砚桥. 基于AHP的Stacking算法基分类器选择[J]. 兵工自动化, 2022, 41(1): 39−42. SUN T, CHEN Y Q. Selection of stacking algorithm base classifiers based on AHP [J]. Automation of Ordnance Industry, 2002, 41(1): 39−42. |
[10] |
陈威, 谢成心, 侯冀超, 等. 集成学习经典算法研究[J]. 河北建筑工程学院学报, 2023, 41(3): 211-216. CHEN W, XIE C X, HOU J C, et al. Research on classical algorithm of ensemble Learning[J]. Journal of Hebei University of Civil Engineering and Architecture, 2023, 41(3): 211-216. |