浙江大学学报(工学版), 2021, 55(8): 1566-1575 doi: 10.3785/j.issn.1008-973X.2021.08.018

能源工程

基于样本优选的集成学习在脱硫优化中的应用

葛志辉,, 邢江宽, 罗坤,, 樊建人

浙江大学 能源清洁利用国家重点实验室,浙江 杭州 310027

Application of ensemble learning based on preferred sample selection in desulfurization optimization process

GE Zhi-hui,, XING Jiang-kuan, LUO Kun,, FAN Jian-ren

State Key Laboratory of Clean Energy Utilization, Zhejiang University, Hangzhou 310027, China

通讯作者: 罗坤,男,教授,博士. orcid.org/0000-0003-3644-9400. E-mail: zjulk@zju.edu.cn

收稿日期: 2020-08-10  

基金资助: 国家重点研发计划资助项目(2017YFB0601805)

Received: 2020-08-10  

Fund supported: 国家重点研发计划资助项目(2017YFB0601805)

作者简介 About authors

葛志辉(1995—),男,硕士生,从事电厂大数据研究.orcid.org/0000-0002-3689-534X.E-mail:21827006@zju.edu.cn , E-mail:21827006@zju.edu.cn

摘要

基于实际电厂的大量脱硫数据,删除初始脱硫数据库中异常值和非稳态值,提取与输出相关系数较高的集成学习模型输入参数,采用改进的基于随机采样和聚类采样的集成学习算法,建立预测脱硫塔循环泵开启台数的集成学习模型,研究分类问题中样本不均衡、优选样本评价标准缺失和脱硫优化的问题. 结果显示,与改进前模型相比,改进后的集成学习模型总体预测准确度提升了33%,并且基于聚类的采样略优于随机采样. 此外,对单一类别预测的召回率进行分析,对比不同算法对少数类和多数类的召回率,结果显示2种改进的采样方法对少数类的预测有较大的提升,预测的召回率大于90%,对多数类的预测也有一定的提升效果. 讨论泵组合作为模型输出时,其样本分布和模型精度的差异.

关键词: 聚类 ; 采样 ; 集成学习 ; 脱硫系统 ; 样本优选

Abstract

The ensemble learning approach based on random sampling or cluster sampling was developed to predict the number of desulfurization tower circulating pumps opened. The database was constructed from a realistic power plants, the outliers and unsteady values in the initial one were deleted, and the input parameters of the ensemble learning model with high correlation coefficients with the output were extracted. The problems of imbalanced samples in classification, missing evaluation criteria for optimal samples and desulfurization optimization were solved. Results showed that the improved ensemble learning model had a 33% increase in overall prediction accuracy compared with the original model. In addition, the cluster sampling was slightly better than the random sampling. Furthermore, the recall of a single category prediction was analyzed, and the recall values of different algorithms for the minority category and the majority category were compared. Results showed that the two improved sampling methods had greatly improved the minority category prediction, and the recall reached more than 90%, besides it also had certain improvement on the majority. Finally, the difference in sample distribution and model accuracy was discussed when the pump combination was used as the model’s output.

Keywords: clustering ; sampling ; ensemble learning ; desulfurization system ; preferred sample selection

PDF (1325KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

葛志辉, 邢江宽, 罗坤, 樊建人. 基于样本优选的集成学习在脱硫优化中的应用. 浙江大学学报(工学版)[J], 2021, 55(8): 1566-1575 doi:10.3785/j.issn.1008-973X.2021.08.018

GE Zhi-hui, XING Jiang-kuan, LUO Kun, FAN Jian-ren. Application of ensemble learning based on preferred sample selection in desulfurization optimization process. Journal of Zhejiang University(Engineering Science)[J], 2021, 55(8): 1566-1575 doi:10.3785/j.issn.1008-973X.2021.08.018

能源是经济发展的重要保障,根据国家统计局的数据[1],2019年我国能源消费总量为48.6亿吨标准煤,相比2018年上涨4.7%,能源消耗持续上涨,其中电力消耗增幅较大,相比2018年上涨10%. 目前火力发电仍占据我国电力能源的主力地位,2019年火力发电量为52 201.48 亿千瓦时,占总发电量的69.6%. 煤炭的大量使用给环境保护带来了较大的压力,电厂在环保的压力下会采用更严格的污染物控制方法,这些方法存在一定的节能优化空间. 目前污染物控制的优化运行技术是学者们研究的重点之一[2].

随着电厂自动化程度的不断提高,锅炉机组的状态可以通过传感器检测到,同时也被记录在数据库中,但是这些历史数据并没有被较好地利用. 随着神经网络、支持向量机和随机森林等人工智能算法的兴起,可以运用以机器学习为代表的数据挖掘技术对数据中包含的重要信息进行深入挖掘,以指导实际生产[3]. 须注意的是,这些数据中包含了大量噪声和重复数据,存在数据不均衡的问题. 这里的数据不均衡指的是数据集中各个类别的样本数目相差较大,数目相差越大则不均衡程度越大. 如果直接利用不均衡数据建立模型,那么当以样本少的类别作为输入时模型会出现预测不准的问题[4],这是因为模型在学习不均衡数据的过程中会过多地关注多数类,忽略样本较少的少数类.

为了解决样本不均衡的问题,一些学者采用过采样的方法,复制少数类的数量使得少数类的数量与多数类的数量相同,这样模型在训练过程中对多数类和少数类的重视程度相同,但少数类存在大量重复数据,会造成模型过拟合. 例如张洋[5]提出基于欧氏距离比合成少数类过采样技术(synthetic minority over-sampling technique,SMOTE)方法,采用每个少数类数据和它近邻样本的插值生成新的少数类样本,在一定程度上缓解了过拟合的问题. 但是生成的少数类中仍旧存在大量相似度较高的数据,过拟合现象仍然存在,而且本研究数据来自电厂,数量较多,无须应用过采样.

另一些学者采用欠采样的方法处理样本不均衡的问题,删减多数类,使得多数类的数量和少数类的数量相同,与过采样相同也能使模型对多数类和少数类的重视程度相同. Lin等[6]提出基于聚类的欠采样方法,将聚类簇数目设置成等于少数类数目,该方法的问题就是无法保证产生的聚类中心能表示出多数类的分布. 而且欠采样会使数据集多数类中的一些关键信息丢失. 为了解决这个问题,一些学者结合使用欠采样和集成学习. Seiffert等[7]和Rayhan等[8]运用类似的思路结合欠采样和AdaBoost[9](Adaptive Boosting)集成学习方法分别提出RUSBoost(random under-sampling with boosting)和CUSBoost(cluster-based under-sampling with boosting)算法,对原始数据进行多次欠采样建立不同的均衡子集,每个子集训练一个弱学习器,然后集成为一个强学习器,保证多数类内的关键信息不会丢失.

最近一些学者在对工业数据进行优选时进行了均衡处理,例如丁伟[10]、刘晓洋[11]和Rana等[12]都对原始数据进行了均衡处理,但没有对处理后的数据进行评价,也无法保证处理后的数据仍旧维持原始数据的特征.

本研究尝试利用分类问题中均衡处理办法解决脱硫数据中的样本不均衡问题,然后用均衡数据建立机器学习模型来研究烟气脱硫优化问题. 首先基于电厂的运行数据,采用2种采样策略:一是根据采样和聚类算法选取数据,聚类算法将相似的数据分为一类,在采样的过程中根据聚类后的类别来采样保证选取数据可以较好地代表原始数据;二是随机采样多数类. 之后再利用集成学习算法建立模型,用模型预测准确度和召回率作为样本选取方法的评价标准. 最后本研究用模型预测脱硫塔循环泵开启台数,可以用来指导实际操作,实现脱硫优化.

1. 样本优选方法

1.1. 异常值处理

在电厂机组运行时由于故障原因会产生大量明显错误的数据即异常值. 本研究采用箱形图[13]来识别异常值. 将数据从小到大排序,找到这个序列的四分之一位数Q1,四分之三位数Q3,定义四分位间距为

${\rm{QR}} = {Q_3} - {Q_1}.$

此时异常值被定义为小于下界Q1−1.5QR或者大于上界Q3+1.5QR.

1.2. 稳态工况提取

锅炉燃烧是动态过程,经常伴随着负荷的剧烈变化,致使过程运行参数也剧烈波动,因此数据集中存在大量非稳态的运行数据,这些数据不能较好地反映系统的状态,须提取数据集中的稳态数据[14]. 本研究采用基于统计理论的稳态检测方法:R检验法[15]. 检验法如下所示.

$\{ {X_1},{X_2},\cdots,{X_i},\cdots,{X_N}\} $为时间序列组成的数据集, ${X_i}$为数据集第 $i$个样本. 先对数据集进行预处理:

${X_{{f_i}}} = {\lambda _1}{X_i} + (1 - {\lambda _1}){X_{{f_{i - 1}}}}.$

式中: ${X_{{f_i}}}$为第 $i$个样本对应的统计值的中间变量, ${\lambda _1}$为第1个可变参数.

$\nu _{{f_i}}^2 = {\lambda _2}{({X_i} - {X_{{f_{i - 1}}}})^2} + (1 - {\lambda _2})\nu _{{f_{i - 1}}}^2.$

式中: $\nu _{{f_i}}^{}$为第 $i$个样本对应的第1个统计量, ${\lambda _2}$为第2个可变参数.

$s_{{1_i}}^2 = \frac{{2 - {\lambda _1}}}{2}\nu _{{f_i}}^2.$

式中: $s_{{1_i}}^{}$为第 $i$个样本对应的第1个方差的无偏估计.

$\delta _{{f_i}}^2 = {\lambda _3}{({X_i} - {X_{i - 1}})^2} + (1 - \lambda _3^{})\delta _{{f_{i - 1}}}^2.$

式中: $\delta _{{f_i}}^{}$为第 $i$个样本对应的第2个统计量, ${\lambda _3}$为第3个可变参数.

$s_{{2_i}}^2 = {{\delta _{{f_i}}^2}}/{2}.$

式中: $s_{{2_i}}^{}$为第 $i$个样本对应的第2个方差的无偏估计.

${R_i} = {{s_{{1_i}}^2}}/{{s_{{2_i}}^2}}.$

式中: ${R_i}$为判定值,当 ${R_i}$小于阈值时,数据为稳态数据. 其中阈值、 ${\lambda _1}$${\lambda _2}$${\lambda _3}$是须人为调整的超参数,文献[16]提供了建议的各个参数的组合.

1.3. 数据聚类

本研究用到了聚类算法,在采样时根据数据聚类后的类别采样. 聚类算法种类繁多[17],比如基于划分的聚类方法、基于层次的聚类方法、基于密度的聚类方法和基于距离的聚类方法. 本研究数据应用最常用的基于距离的K-means聚类方法,算法原理[18]如下.

给定样本集 $D = \{ {{\boldsymbol{x}}_1},{{\boldsymbol{x}}_2},{{\boldsymbol{x}}_3},\cdots,{{\boldsymbol{x}}_m}\}$$ \boldsymbol{x} $$n$维向量,算法将样本集划分为 $k$个簇 $C = \{ {C_1},{C_2},{C_3},\cdots, $ $ {C_k}\} $,使得平方误差最小:

$E = \sum\limits_{i = 1}^k {\sum\limits_{{\boldsymbol{x}} \in {C_i}} {||{\boldsymbol{x}} - {{\boldsymbol{\mu}} _i}||_2^2} } .$

式中: $E$为平方误差, ${{\boldsymbol{\mu}} _i}$${C_i}$的均值向量. ${{\boldsymbol{\mu}} _i}$表达式为

${{\boldsymbol{\mu}} _i} = \frac{1}{{|{C_i}|}}\sum\limits_{{\boldsymbol{x}} \in {C_i}} {\boldsymbol{x}} .$

由式(8)、(9)可以看出,簇内样本距离均值样本越近,E越小. E最小化有多种可能的簇划分,采用贪心策略通过迭代近似求解,具体算法流程如下.

算法1:聚类算法

输入:样本集 $D = \{ {{\boldsymbol{x}}_1},{{\boldsymbol{x}}_2},{{\boldsymbol{x}}_3},\cdots,{{\boldsymbol{x}}_m}\}$;聚类簇数 $k$

输出:簇 $C = \{ {C_1},{C_2},{C_3},\cdots,{C_k}\} $

1) 从D中随机选取k个样本作为初始均值向量    $\{ {{\boldsymbol{\mu}} _1},{{\boldsymbol{\mu}} _2},{{\boldsymbol{\mu}} _3},\cdots,{{\boldsymbol{\mu}} _k}\} $

2)令 ${C_i} = \varnothing ,i = 1,2,\cdots,k$

3)计算样本 ${{\boldsymbol{x}}_j}(1 \leqslant j \leqslant m)$与各均值向量 ${{\boldsymbol{\mu }}_i}(1 \leqslant i \leqslant k)$    的欧氏距离,将 ${{\boldsymbol{x}}_j}$划分到距离最近的簇中

4)计算新的均值向量 ${{\boldsymbol{\mu }}_i}' = \dfrac{1}{{|{C_i}|}}\displaystyle \sum\limits_{{\boldsymbol{x}} \in {C_i}} {\boldsymbol{x}} (1 \le i \le k)$,如   果新的均值向量与旧均值向量的差值大于阈值,   更新 ${{\boldsymbol{\mu}} _i}^{}$${{\boldsymbol{\mu}} _i}'$,跳转到步骤3),否则算法流程结束

1.4. 机器学习模型原理

机器学习根据算法不同可以分为支持向量机、神经网络和集成学习等. 在数据量不是很大(几万),数据维度不高(10以下)时,集成学习往往有较高的准确性. 本研究采用集成学习中较为常用的AdaBoost算法. AdaBoost原理[9]如下.

算法2:AdaBoost算法

输入:数据集 $T = \{ ({{\boldsymbol{x}}_1},{y_1}),({{\boldsymbol{x}}_2},{y_2}),\cdots,({{\boldsymbol{x}}_N},{y_N})\}$${\boldsymbol{x}} \in \chi , $ $ \chi \subset {{\bf{R}}^n},y \in \{ - 1,1\}$;弱分类器算法 $G$;训练轮数 $M$

输出: $f({\boldsymbol{x}}) = {\rm{sign}}\; \left(\displaystyle \sum\limits_{m = 1}^M {{\alpha _m}{G_m}({\boldsymbol{x}})} \right)$

1) ${D_1} = ({w_{11}},{w_{12}},\cdots,{w_{1i}},\cdots,{w_{1N}})$${w_{1i}} = {1}/{N},\;i = 1, $     $2,\cdots,N $.

2) ${\rm{for}} \;\; m = 1,2,\cdots,M \;\; {\rm{do}}$

3)  $T \to {G_m}({\boldsymbol{x}})$

4)  ${e_m} = \displaystyle \sum\limits_{i = 1}^N {{w_{m,i}}I\;({G_m}({{\boldsymbol{x}}_i}) \ne {y_i})}$

5)   ${\alpha _m} = \dfrac{1}{2}\ln\;\dfrac{{1 - {e_m}}}{{{e_m}}}$

6)   ${\rm{for}} \;\; i = 1,2,\cdots,N \;\; {\rm{do}}$

7)    ${w_{m + 1,i}} = \dfrac{{{w_{m,i}}}}{{{Z_m}}}\exp\; ( - {\alpha _m}{y_i}{G_m}({{\boldsymbol{x}}_i}))$

8)   ${Z_m} = \displaystyle \sum\limits_{i = 1}^N {{w_{m,i}}\exp \;( - {\alpha _m}{y_i}{G_m}({{\boldsymbol{x}}_i}))}$

9)   ${\rm{end}} \;\;\; {\rm{for}}$

10) ${\rm{end}} \;\;\; {\rm{for}}$

11) $f(x) = {\rm{sign}}\; \left(\displaystyle \sum\limits_{m = 1}^M {{\alpha _m}{G_m}({\boldsymbol{x}})} \right)$

步骤1)是初始化数据权重, ${D_1}$为第1轮数据权重集合, ${w_{1i}}$为第1轮数据 $({{\boldsymbol{x}}_i},{y_i})$的数据权重,N表示总共N个数据. 步骤2)~10)表示算法训练轮数进行了M次. 步骤3)表示根据数据集T训练得到弱分类器 ${G_m}({\boldsymbol{x}})$T为数据集,G为弱分类器算法,m为第m轮训练,x为数据集的输入. 步骤4)为计算每个弱分类器的分类误差率, ${e_m}$为第m个弱分类器的分类误差率,I为指示函数,输入的逻辑条件成立则输出1,反之则输出0. 步骤5)为计算弱分类器的系数, ${\alpha _m}$为第m个分类器的系数. 步骤6)~9)为更新每个数据的权重,用于下一轮分类误差率和分类器系数的计算, ${Z_m}$为规范化因子,用来调整数据权重的大小. 步骤11)为将所有弱分类器和其分类器系数组合成强分类器 $f({\boldsymbol{x}})$,函数sign为数学符号函数,输入大于0则输出1,输入小于0则输出−1.

本研究的数据采样是在AdaBoost的基础上改进得来的. 利用2种采样方法从数据集T中采样得到子集Ti. 这里先介绍CUSBoost算法[8],该算法是聚类采样和集成学习方法的结合,用采样得来的均衡数据建立模型. 算法流程如下.

算法3:CUSBoost算法

输入:非均衡数据集 $T = \{ ({{\boldsymbol{x}}_1},{y_1}),({{\boldsymbol{x}}_2},{y_2}),\cdots, $ $ ({{\boldsymbol{x}}_N},{y_N})\} $${\boldsymbol{x}} \in \chi ,\;\chi \subset {{\bf{R}}^n},y \in \{ - 1,1\}$;弱分类器算法 $G$;训练轮数 $M$

输出: $f({\boldsymbol{x}}) = {\rm{sign}}\;\left(\displaystyle \sum\limits_{m = 1}^M {{\alpha _m}{G_m}({\boldsymbol{x}})} \right)$

1) ${D_1} = ({w_{11}},{w_{12}},\cdots,{w_{1i}},\cdots,{w_{1N}})$${w_{1i}} = {1}/{N},\; i = 1, $     $2,\cdots,N $

2) ${\rm{for}} \;\; m = 1,2,\cdots,M \;\; {\rm{do}}$

3)   $T \stackrel{{\text{聚类采样}}}{\to }{T}_{i}\stackrel{{\text{训练模型}}}{\to }{G}_{m}({\boldsymbol{x}})$

4)   ${e_m} = \displaystyle \sum\limits_{i = 1}^N {{w_{m,i}}I\;({G_m}({{\boldsymbol{x}}_i}) \ne {y_i})}$

5)   ${\alpha _m} = \dfrac{1}{2}\ln\;\dfrac{{1 - {e_m}}}{{{e_m}}}$

6)   ${\rm{for}}\;\; {{\boldsymbol{x}}_i} \in {D_i} \;\; {\rm{do}}$

7)    ${w_{m,i}} = {w_{m,i}}\dfrac{{{e_m}}}{{1 - {e_m}}}$

8)   ${\rm{end}}\;\; {\rm{for}}$

9)   ${\rm{for}} \;\; i = 1,2,\cdots,N \;\; {\rm{do}}$

10)    ${w_{m + 1,i}} = {{{w_{m,i}}}}/{{{Z_m}}}$

11)    ${Z_m} = \displaystyle \sum\limits_{i = 1}^N {{w_{m,i}}}$

12)   ${\rm{end \;\;\; for}}$

13) ${\rm{end \;\;\; for}}$

14) $f({\boldsymbol{x}}) = {\rm{sign}}\;\left(\displaystyle \sum\limits_{m = 1}^M {{\alpha _m}{G_m}({\boldsymbol{x}})} \right)$

步骤3)为根据聚类方法从数据集T中获得子集Ti,再根据获得的子集训练得到弱分类器,具体的聚类方法是先把数据分成多数类和少数类,少数类的数量为z,在多数类数据中,使用K-means算法将其分为k个类别,然后在每个类中随机选取 ${\textit{z}}/k$个不重复的数据,选择出来的数据和少数类组成新的均衡数据子集Ti. 步骤6)~8)为更新分类正确样本的权重 ${w_{m,i}}$Di为子集Ti中分类正确的数据. 步骤9)~12)为归一化下一轮的数据权重.

RUSBoost算法[7]对多数类随机欠采样,将采样得到的数据和少数类组成均衡数据,流程与CUSBoost类似,区别是算法的第3)步采样是随机采样,采用随机森林中重采样的采样方式[19]. RUSBoost算法流程如下.

算法4:RUSBoost算法

输入:非均衡数据集 $T = \{ ({{\boldsymbol{x}}_1},{y_1}),({{\boldsymbol{x}}_2},{y_2}),\cdots, $ $ ({{\boldsymbol{x}}_N},{y_N})\} $${\boldsymbol{x}} \in \chi ,\;\chi \subset {{\bf{R}}^n},y \in \{ - 1,1\}$;弱分类器算法 $G$;训练轮数 $M$

输出: $f({\boldsymbol{x}}) = {\rm{sign}}\;\left(\displaystyle \sum\limits_{m = 1}^M {{\alpha _m}{G_m}({\boldsymbol{x}})} \right)$

1) ${D_1} = ({w_{11}},{w_{12}},\cdots,{w_{1i}},\cdots,{w_{1N}})$${w_{1i}} = {1}/{N}, \; i = 1, $     $2,\cdots,N $

2) ${\rm{for}} \;\; m = 1,2,\cdots,M \;\; {\rm{ do}}$

3)   $ T\stackrel{{\text{随机采样}}}{\to }{T}_{i}\stackrel{{\text{训练模型}}}{\to }{G}_{m}({\boldsymbol{x}})$

4)   ${e_m} = \displaystyle \sum\limits_{i = 1}^N {{w_{m,i}}I\;({G_m}({{\boldsymbol{x}}_i}) \ne {y_i})}$

5)   ${\alpha _m} = \dfrac{1}{2}\ln\;\dfrac{{1 - {e_m}}}{{{e_m}}}$

6)   ${\rm{for}}\;\; {{\boldsymbol{x}}_i} \in {D_i} \;\; {\rm{do}}$

7)    ${w_{m,i}} = {w_{m,i}}\dfrac{{{e_m}}}{{1 - {e_m}}}$

8)   ${\rm{end\;\; for}}$

9)   ${\rm{for}} \;\; i = 1,2,\cdots,N \;\; {\rm{do}}$

10)    ${w_{m + 1,i}} = {{{w_{m,i}}}}/{{{Z_m}}}$

11)    ${Z_m} = \displaystyle \sum\limits_{i = 1}^N {{w_{m,i}}} $

12)   ${\rm{end\;\; for}}$

13) ${\rm{end \;\; for}}$

14) $f({\boldsymbol{x}}) = {\rm{sign}}\;\left(\displaystyle \sum\limits_{m = 1}^M {{\alpha _m}{G_m}({\boldsymbol{x}})} \right)$

步骤3)是根据重采样方法从数据集T中获得子集Ti,再根据获得的子集训练得到弱分类器,具体采样方式是将数据分为多数类和少数类,其中少数类数量为z,从多数类中有放回的随机采样z次得到z个数据,选择出来的数据和少数类组成新的均衡数据子集Ti.

1.5. 评价标准

图1所示为混淆矩阵的示意图,直观地表达了样本只有2种类别(正类和负类)的4种不同的预测情况. 表中,真阳性(true positive,TP)表示样本预测类别为正而且真实类别也为正的数量,假阳性(false positive,FP)表示样本预测类别为负而真实类别为正的数量,同理假阴性(false negative,FN)表示样本预测类别为负而真实类别为正的数量,真阴性(true negative,TN)表示样本预测类别为负而且真实类别也为负的数量,P为样本真实类别为正的数量,N为样本真实类别为负的数量.

图 1

图 1   混淆矩阵示意图

Fig.1   Schematic diagram of confusion matrix


分类器的评价标准主要有准确度A和召回率R,表达式如下:

$A = \frac{{{\rm{TP}} + {\rm{TN}}}}{{P + N}},$

$R = {{{\rm{TP}}}}/{P}.$

上述评价标准的原理介绍是基于二分类问题,本研究研究的是多分类问题,其评价标准的具体计算方法与二分类问题类似:

$A = {{\displaystyle \sum {{T_i}} }}\left/{{{\displaystyle \sum {{P_i}} }}}\right.,$

${R_i} = {{{T_i}}}/{{{P_i}}}.$

式中:Ri为第i类的召回率,Ti为第i类被预测正确的数量,Pi为第i类的数量.

一般的分类问题可以用准确度来衡量分类器的优劣,但是如果样本不均衡,准确度是整体的预测情况,无法表现出少数类的分类优劣,因为少数类样本少,即使少数类全部预测错误,只要多数类预测正确,整体的准确度仍旧较高. 此时可以用召回率(每一类被预测正确的比例)来衡量单一类别的预测情况,以此辅助判断分类器的优劣.

还须说明的是数据集均衡性越好,根据数据集训练得到的模型预测效果越好,即召回率和准确度越接近1.0,因此在数据集和模型参数保持不变的情况下,召回率和准确度越接近1.0说明采样后的数据子集均衡性越好.

2. 机器学习模型建立

2.1. 样本数据来源和分布

以某电厂1 000 MW超超临界凝汽式燃煤发电机组2019年6月至2020年6月5 min间隔的脱硫系统运行数据作为来源,样本数量为105 410,这些数据包括机组不运行时所记录的异常数据,须进行预处理.

电厂在实际脱硫运行过程中,一般根据经验调整循环泵的开启台数,容易在变工况时多开或者少开. 因此,研究不同工况下循环泵的开启台数,其中开启循环泵台数2、3、4的数量分别为16 029、36 454、10 258,从中可以发现电厂较关心的台数2(脱硫效果差、脱硫成本低)和台数4(脱硫效果好、脱硫成本高)在总样本中占据数量较少,数据集存在不均衡的问题.

2.2. 模型输入参数的选择

为了得到建立机器学习模型所需的输入参数,筛选出影响脱硫系统脱硫效率的因素,再根据这些因素建立机器学习模型,然后计算所建模型输入对输出的重要性,筛选出重要程度大的因素,删去彼此相关的因素,余下的因素作为最终的输入.

文献[20]从理论和模拟2个角度较为详细地讨论了影响脱硫效率的因素,如浆液pH值、入口二氧化硫质量浓度、入口烟温、烟气体积流量、机组负荷、入口烟气氧气体积分数、烟尘质量浓度等,这些因素作为模型待定的输入参数.

计算上述因素与循环泵台数的相关系数,采用皮尔逊相关系数计算方法:

${r_{xy}} = \frac{{n\displaystyle \sum {{x_i}{y_i} - \displaystyle \sum {{x_i}\displaystyle \sum {{y_i}} } } }}{{\sqrt {n\displaystyle \sum {x_i^2 - {{\left( {\displaystyle \sum {{x_i}} } \right)}^2}} } \sqrt {n\displaystyle \displaystyle \sum {y_i^2 - {{\left( {\displaystyle \sum {{y_i}} } \right)}^2}} } }}.$

式中: ${r_{xy}}$为样本xy的相关系数, ${x_i}$${y_i}$分别为样本xy中第i个样本.

首先不考虑数据不均衡直接运用集成学习算法学习数据集,机器学习库sklearn中的AdaBoost算法模块存在计算输入对输出的重要程度的代码,直接调用计算可以得到各个输入的重要性. 如表1所示为上述计算的相关系数和输入重要程度,其中所有输入重要程度相加为1.0. 表中,rx为参数与循环泵台数的相关系数,fimp为输入重要性. 若只考虑模型输入变量与输出的相关系数,变量pH值的相关系数只有−0.003 03,与模型输出基本不相关,但其输入重要性程度较大,该输入变量不能舍去,说明相关系数不能作为判断模型输入变量的唯一标准,应结合输入重要性程度综合判断.

表 1   不同输入参数与输出的相关系数和对模型的输入重要性

Tab.1  Correlation coefficient with output and feature importance to model of different input parameters

编号 输入参数 rx fimp
1 发电机有功功率/MW 0.352 400 0.089 773
2 1号脱硫原烟气O2体积分数/% −0.194 900 0.064 280
3 1号脱硫净烟气O2体积分数/% −0.299 390 0.071 927
4 1号脱硫原烟气含尘质量浓度/(mg·m−3 0.055 873 0.091 056
5 1号脱硫净烟气含尘质量浓度/(mg·m−3 0.117 241 0.076 682
6 1号吸收塔石膏浆液质量浓度/(kg·m−3 0.100 041 0.048 398
7 1号脱硫原烟气SO2质量浓度/(mg·m−3 0.274 171 0.141 799
8 1号脱硫净烟气SO2体积分数/10−6 0.130 771 0.064 986
9 1号吸收塔石灰石供浆体积流量/(m3·h−1 0.227 209 0.038395
10 烟气质量流量/(t·h−1 0.305 443 0.129 984
11 浆液pH值 −0.003 030 0.080 751
12 进口烟气温度/℃ 0.250 639 0.101 970

新窗口打开| 下载CSV


图2所示为模型输入变量的热力图,表示输入变量彼此间的相关系数大小. 图中,颜色越深越表示2个参数的rxy越接近−1.0,越浅越接近1.0,接近1.0或者−1.0说明因素彼此正相关或者负相关. 为了降低模型的复杂度,须将彼此相关的因素舍去,由图2可以发现发电机有功功率、原烟气氧气体积分数、净烟气氧气体积分数彼此正相关或者负相关,因此只保留原烟气氧气体积分数作为输入. 最终作为模型输入的变量为原烟气氧气体积分数、烟气进出口含尘质量浓度、石膏浆液质量浓度、石灰石供浆体积流量、烟气进出口二氧化硫质量浓度、浆液pH值、烟气体积流量和烟气温度.

图 2

图 2   模型输入变量彼此相关系数的热力图

Fig.2   Heat map of correlation coefficient between model input variables


2.3. 异常值处理

利用箱形图识别异常值,删除异常值后的数据样本数量为798 65.

由于脱硫数据各个输入具有不同的量纲,输入参数都须进行无量纲化的归一化预处理[21]

${x_i} = \frac{{{x_{i,{\rm{a}}}} - {x_{i,{\rm{min}}}}}}{{{x_{i,{\rm{max}}}} - {x_{i,{\rm{min}}}}}}.$

式中: ${x_{i,{\rm{a}}}}$${x_{i,{\rm{min}}}}$${x_{i,{\rm{max}}}}$${x_i}$分别为第i个输入参数的真实值、最大值、最小值和无量纲化之后的值.

表2所示为本研究选取的输入参数删除异常值后的平均值、最小值和最大值. 可以看出,各个输入参数的数据基本合理. 如图3所示为将数据归一化后的箱形图. 10个输入参数对应10个箱形图,将每个输入参数归一化后从小到大排序,计算出它的上边缘、上四分位数、中位数、下四分位数、下边缘,在图3中用横线表示. 由图3可以看出,删除异常值后各个数据在0~1大致分布均匀,可以用于后续建模.

表 2   异常值删除后样本输入参数的特征

Tab.2  Characteristic of samples after outlier removal

编号 输入参数 平均值 最小值 最大值
1 1号脱硫原烟气O2体积分数/% 6.5 3.1 10.6
2 1号脱硫原烟气含尘质量浓度/(mg·m−3 21.6 15.1 34.0
3 1号脱硫净烟气含尘质量浓度/(mg·m−3 1.8 0.2 3.4
4 1号吸收塔石膏浆液质量浓度/(kg·m−3 1 132.0 1 091.7 1 171.3
5 1号脱硫原烟气SO2质量浓度/(mg·m−3 1 582.0 710.7 2 434.0
6 1号脱硫净烟气SO2体积分数/% 5.9 1.0 11.1
7 1号吸收塔石灰石供浆体积流量/(m3·h−1 14.7 0.0 32.2
8 总风质量流量/(t·h−1 1.8 0.2 5.0
9 pH值 5.5 4.8 6.2
10 进口烟气温度/℃ 95.2 80.8 109.3

新窗口打开| 下载CSV


图 3

图 3   不同输入参数归一化后的样本分布图

Fig.3   Sample distribution map after normalization for different input features


2.4. 稳态提取

以机组功率的变化作为稳态的判断依据. 稳态数据提取后数据数量为52 821,阈值取2.72, ${\lambda _1}$${\lambda _2}$${\lambda _3}$取值都为0.5.

图4所示为机组功率随时间的变化. 图中,PW为机组功率. 可以看出,机组功率随着时间先快速上升,接着保持不变,然后快速下降,最后基本维持不变但偶有起伏. 如图5所示为机组功率稳态数据和非稳态的划分情况. 图中,空心圆为提取出的稳态数据,空心三角为剔除的非稳态数据,实线、虚线和虚点线为稳态数据和非稳态数据的分割线. 该稳态提取方法将工况快速变化时的点剔除(编号0~135和275~415),将工况偶有起伏的点保留(编号415~2500有部分点起伏),说明该法能较为正确地提取稳态数据,可以满足本研究后续的建模要求.

图 4

图 4   机组功率随时间的变化

Fig.4   Change of unit power over time


图 5

图 5   机组功率稳态数据和非稳态的划分

Fig.5   Division of steady-state data and unsteady-state data of unit power


2.5. 数据划分

为了更加客观地评估模型性能,须将数据集划分为训练集和测试集,训练集参与模型训练,测试集评估模型性能,其中测试集占总样本25%. 训练集数据样本数量N=39 615,类别2、3、4数量分别为10 977、22 781、5 857. 如表3所示为AdaBoost、RUSBoost和CUSBoost算法对数据不同类别选取的样本数量. 可以看出,AdaBoost算法把所有训练集的数据都用来建模,而RUSBoost和CUSBoost算法每次训练根据最少样本类的数量来训练模型,保证训练过程中算法对每一类的重视程度相同.

表 3   不同算法对不同类别选取的样本数量

Tab.3  Number of samples selected by different algorithms for different categories

类别 N
AdaBoost RUSBoost CUSBoost
2 10 977 5 857 5 857
3 22 781 5 857 5 857
4 5 857 5 857 5 857

新窗口打开| 下载CSV


2.6. CUSBoost算法中聚类簇数选取原则

在1.5节中介绍了CUSBoost算法的原理,在步骤3)中有聚类簇数k须确认,具体的选取方法为算法参数采取默认值,其中决策树深度为不限制深度、内部节点最小样本数为2、根节点最小样本数为1,逐渐增大k,计算其准确度,选择准确度最大时的聚类簇数k. 如图6所示为不同聚类簇数下模型准确度变化折线图. 当聚类簇数为6时,准确度最大,所以CUSBoost算法中聚类簇数设为6.

图 6

图 6   不同聚类簇数下模型准确度变化折线图

Fig.6   Line chart of model’s accuracy variation for different cluster numbers


2.7. 模型超参数选择

在发展RUSBoost和CUSBoost算法模型的过程中,超参数(基分类器个数、决策树深度、内部节点最小样本数、根节点最小样本数)须通过学习曲线来确定.

图7所示为测试集和训练集不同分类器个数的模型预测准确度变化. 图中,Nb为基分类器个数. 显示其他超参数采用决策树默认值不变(其中决策树深度为不限制深度、内部节点最小样本数为2、根节点最小样本数为1),只改变分类器个数的训练结果. 每次训练都采用交叉验证,可以发现随着分类器个数的增加,训练集和测试集预测准确度逐渐增加然后保持平稳. 综合考虑,分类器个数为50能获得较好的预测结果. 但是训练集和测试集的预测值有一定差距,模型有一定的过拟合,之后须调整决策树深度参数减小过拟合程度. 采用网格搜索的方式,遍历各个参数,找到的最优参数是决策树深度不设置,内部节点最小样本数为20,根节点最小样本数为2. 综上,本研究建立了最终模型.

图 7

图 7   测试集和训练集不同分类器个数的模型预测准确度变化

Fig.7   Model prediction accuracy changes for different numbers of classify in train and test set


3. 结果和分析

3.1. 不同采样算法分类精度对比

AdaBoost、RUSBoost和CUSBoost算法测试集的预测准确度分别为0.715、0.925和0.950. 可以看出,不管是随机采样还是基于聚类的采样,相对于不处理原始数据,准确度都有明显提升,说明2种采样方式所获得的数据都能较好地代表原始数据的特征. 通过比较准确度大小,基于聚类的采样略优于随机采样.

对于样本不均衡的数据集,预测准确度讨论的是在所有类别上的总体预测精度,还须对单一类别预测精度进行讨论,用召回率(某一类的预测正确的比例)来衡量单一类别的预测精度.

图8所示为不同算法对不同循环泵台数d的召回率. 可以看出,只用AdaBoost算法,3种类别的召回率都较低,样本数量最小的台数4的召回率只有0.43. 基于随机采样和基于聚类采样的RUSBoost算法和CUSBoost算法在3类的召回率都有明显的提升,其中样本数量较少的台数2和台数4的召回率均约为0.9,样本数最多的台数3的召回率也有一定提升. 综上,本研究提出的2种采样方式能较好地预测不均衡数据集的类别,特别是对少数类的预测精度有了大幅的提升.

图 8

图 8   不同算法对不同循环泵台数的召回率

Fig.8   Recall of different algorithms for different numbers of circulating pump


3.2. 预测不同泵组合方式的算法分类精度对比

除了泵台数,不同泵的组合方式也可以作为模型输出. 脱硫塔循环泵由于布置位置和本身额定功率不同,在脱硫过程中的作用会有不同. 本研究采用的电厂数据中有5台循环泵A、B、C、D、E,这5台泵的额定功率并不是完全相同,其中D、E的较大,这样可以在机组功率变化时进行微调,比如当机组功率略有上升时,可以选择关闭较小额定功率的循环泵,同时开启较大额定功率的循环泵,这样开启台数不变,却提高了脱硫效率,相比多开1台泵降低了成本.

图9所示为泵组合的样本分布. 图中,Nsam为样本数量. 可以看出,不同泵组合也存在着数据不均衡的问题,须对数据进行均衡处理.

图 9

图 9   不同泵组合的样本数量

Fig.9   Number of samples for different pump combinations


如果直接预测泵组合,由于预测的泵组合较多,而且部分泵组合对脱硫的影响较为接近,预测效果肯定不佳,须将脱硫效果接近的泵组合归为一类. 如果不考虑泵布置位置的影响,由于泵A、B、C额定功率相同,泵D、E额定功率相同,图9中25种泵组合可以简化为8类,其中泵A、B、C用字符X表示,泵D、E用字符Y表示. 如图10所示为简化后泵组合样本分布. 图中,XaYb表示泵A、B、C开启了a台,泵D、E开启了b台,可以看出也存在数据不均衡问题.

图 10

图 10   简化后不同泵组合的样本数量

Fig.10   Number of samples for different pump combinations after simplification


将上述8种泵组合作为模型输出,模型输入、数据划分和模型超参数等模型参数设置与上文相同,AdaBoost、RUSBoost和CUSBoost算法测试集的预测准确度分别为0.416、0.799和0.816. 可以看出,以泵组合作为模型输出,通过样本优选的采样处理,其模型的预测准确度提升了96.1%,但是与以泵台数作为模型输出相比,其预测准确度要低15.8%. 与泵台数模型相比,泵组合预测效果不佳,其中一个重要原因是泵组合数据集更不均衡,各个类别数目相差较大,导致模型训练时采样的数据更少,使得模型预测效果不佳. 在工程应用时,机器学习算法预测准确度一般要大于90%. 因此泵台数更适合作为模型输出.

4. 结 论

针对电厂脱硫数据不均衡的情况,通过箱形图对异常值进行识别删除,采用R检测法筛选稳态工况数据,利用基于聚类和采样的集成学习方法对脱硫数据进行均衡处理并建模,对开启循环泵的台数进行预测,用预测准确度和召回率判断采样数据的优劣,讨论泵组合作为模型输出的预测精度.

(1)训练结果显示,采样加集成学习的方法显著优于对原始数据直接利用的集成学习方法. 说明采样加集成学习能较好地处理不均衡数据集.

(2)在对于所有类别的预测上,基于聚类的采样略优于随机采样,而且2种采样方式获得的数据都能较好地代表原始数据的特征.

(3)对单一类别召回率分析显示,采样后的模型对于类别2、4的预测能力提升较大,说明对于普遍存在不均衡问题的工业数据,采样加集成学习可以作为解决少数类预测不准问题的可靠方式.

(4)泵台数比泵组合更适合作为模型输出.

(5)基于样本优选的集成学习采样算法,发展出预测效果更好的模型,来预测当工况不一样时,循环泵的运行台数要求,实现在效率保证下的循环泵台数预测. 在实际电厂工程应用中,在机组负荷变化或者入口SO2质量浓度频繁变化时,由于循环泵启停对脱硫系统的影响存在滞后性,操作人员须根据经验在工况变化时提前开启或者关闭循环泵才能维持脱硫系统的稳定,本研究预测的台数可以在工况变化时指导实际操作,对保证脱硫效率和经济性、维持脱硫系统的稳定性具有一定的实用意义.

(6)本研究没有将最后的预测结果加入实际的脱硫控制策略中。为了进一步实现脱硫优化去人工操作的目的,下一步将进行机器学习算法和脱硫控制算法结合的研究,彻底实现脱硫优化的全自动化。

参考文献

中华人民共和国统计局. 中国统计年鉴[M]. 北京: 中国统计出版社, 2019.

[本文引用: 1]

BARMA M C, SAIDUR R, RAHMAN S M, et al

A review on boilers energy use, energy savings, and emissions reductions

[J]. Renewable and Sustainable Energy Reviews, 2017, 79: 970- 983

DOI:10.1016/j.rser.2017.05.187      [本文引用: 1]

赵顺毅, 陈子豪, 张瑾, 等

现代流程工业的机器学习建模

[J]. 自动化仪表, 2019, 40 (9): 1- 7

URL     [本文引用: 1]

ZHAO Shun-yi, CHEN Zi-hao, ZHANG Jin, et al

Modeling based on machine learning for modern process industry

[J]. Process Automation Instrumentation, 2019, 40 (9): 1- 7

URL     [本文引用: 1]

向鸿鑫, 杨云

不平衡数据挖掘方法综述

[J]. 计算机工程与应用, 2019, 55 (4): 1- 16

URL     [本文引用: 1]

XIANG Hong-xin, YANG Yun

Survey on imbalanced data mining methods

[J]. Computer Engineering and Applications, 2019, 55 (4): 1- 16

URL     [本文引用: 1]

张洋. SMOTE算法的改进与应用[D]. 重庆: 重庆大学, 2019.

[本文引用: 1]

ZHANG Yang. Improvement and application of SMOTE algorithm[D]. Chongqing: Chongqing University, 2019.

[本文引用: 1]

LIN W, TSAI C, HU Y, et al

Clustering-based undersampling in class-imbalanced data

[J]. Information Sciences, 2017, 409: 17- 26

URL     [本文引用: 1]

SEIFFERT C, KHOSHGOFTAAR T M, VAN H J, et al

Rusboost: a hybrid approach to alleviating class imbalance

[J]. IEEE Transactions on Systems, Man, and Cybernetics-Part A: Systems and Humans, 2009, 40 (1): 185- 197

URL     [本文引用: 2]

RAYHAN F, AHMED S, MAHBUB A, et al. Cusboost: cluster-based under-sampling with boosting for imbalanced classification[C]// 2nd International Conference on Computational Systems and Information Technology for Sustainable Solution. Bangalore: IEEE, 2017: 70-75.

[本文引用: 2]

WANG R

AdaBoost for feature selection, classification and its relation with SVM, a review

[J]. Physics Procedia, 2012, 25: 800- 807

DOI:10.1016/j.phpro.2012.03.160      [本文引用: 2]

丁伟. 基于数据聚类的机组优化运行目标值研究[D]. 南京: 东南大学, 2019.

[本文引用: 1]

DING Wei. Research on target value of unit optimal operation based on data clustering[D]. Nanjing: Southeast University, 2019.

[本文引用: 1]

刘晓洋. 风速预测中数椐和样本的有效处理及其模型优化研究[D]. 太原: 太原理工大学, 2016.

[本文引用: 1]

LIU Xiao-yang. Research on effective processing of data and samples of wind speed forecasting and its model optimization [D]. Taiyuan: Taiyuan University of Technology, 2016.

[本文引用: 1]

RANA M, RAHMAN A

Multiple steps ahead solar photovoltaic power forecasting based on univariate machine learning models and data re-sampling

[J]. Sustainable Energy, 2020, 21: 100286

[本文引用: 1]

纪雪, 周兴华, 唐秋华, 等

多波束测深异常数据检测与剔除方法研究综述

[J]. 测绘科学, 2018, 43 (1): 38- 44

URL     [本文引用: 1]

JI Xue, ZHOU Xing-hua, TANG Qiu-hua, et al

A survey offiltering methods in multibeam bathymetry outliers data

[J]. Science of Surveying and Mapping, 2018, 43 (1): 38- 44

URL     [本文引用: 1]

刘吉臻, 高萌, 吕游, 等

过程运行数据的稳态检测方法综述

[J]. 仪器仪表学报, 2013, 34 (8): 1739- 1748

DOI:10.3969/j.issn.0254-3087.2013.08.009      [本文引用: 1]

LIU Ji-zhen, GAO Meng, LV You, et al

Overview on the steady-state detection methods of process operating data

[J]. Chinese Journal of Scientific Instrument, 2013, 34 (8): 1739- 1748

DOI:10.3969/j.issn.0254-3087.2013.08.009      [本文引用: 1]

CAO S, RHINEHART R R

An efficient method for on-line identification of steady state

[J]. Journal of Process Control, 1995, 5 (6): 363- 374

DOI:10.1016/0959-1524(95)00009-F      [本文引用: 1]

CAO S, RHINEHART R R

Critical values for a steady-state identifier

[J]. Journal of Process Control, 1997, 7 (2): 149- 152

DOI:10.1016/S0959-1524(96)00026-1      [本文引用: 1]

金建国

聚类方法综述

[J]. 计算机科学, 2014, 41 (Suppl. 2): 288- 293

URL     [本文引用: 1]

JIN Jian-guo

Review of clustering method

[J]. Computer Science, 2014, 41 (Suppl. 2): 288- 293

URL     [本文引用: 1]

高新. 一种改进K-means聚类算法与新的聚类有效性指标研究[D]. 合肥: 安徽大学, 2020.

[本文引用: 1]

GAO Xin. Research on improved K-means algorithm and new cluster validity index[D]. Hefei: Anhui University, 2020.

[本文引用: 1]

BELGIU M, DRAGUT L

Random forest in remote sensing: a review of applications and future directions

[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2016, 114: 24- 31

DOI:10.1016/j.isprsjprs.2016.01.011      [本文引用: 1]

胡蕊. 燃煤电厂湿法脱硫塔能效评价研究[D]. 济南: 山东大学, 2020.

[本文引用: 1]

HU Rui. Study on energy efficiency evaluation of wet flue gas desulphurization tower in coal-fired power plant[D]. Jinan: Shandong University, 2020.

[本文引用: 1]

KANDANAARACHCHI S, MUNOZ M A, HYNDMAN R J, et al

On normalization and algorithm selection for unsupervised outlier detection

[J]. Data Mining and Knowledge Discovery, 2020, 34 (2): 309- 354

DOI:10.1007/s10618-019-00661-z      [本文引用: 1]

/