基于CMAES 集成学习方法的地表水质分类*
2020-03-19陈兴国徐修颖陈康扬
陈兴国,徐修颖,陈康扬,杨 光
1.南京邮电大学 江苏省大数据安全与智能处理重点实验室,南京210023
2.南京大学 计算机软件新技术国家重点实验室,南京210023
1 引言
随着我国工农业的迅速发展,人民的生活水平得以提高,对水质的要求也越来越高。但受水土流失、水源污染等因素的影响,地表水成分越来越复杂,处理难度也随之增大。水质评价是将水质的监测结果与水质标准进行比较,从而判定水质状况,是水环境安全管理的基础工作[1]。现阶段,我国主要依据《地表水环境质量标准》(GB3838—2002)和《地下水质量标准》(GB14848—2017)进行水质分类评价工作。
有效预测水质水平是实现水源保护的重要手段。最初的水质分类工作是手动完成的,这种方法费时费力,且不利于管理部门进行实时处理。且传统的单因子评价法过于保守,不能体现真实的水质水平,也无法解决各项水质参数(例如PH 值、温度等)与水质水平之间复杂的、非线性的因果关系。除了单因子评价法,也有一些学者对水质指数法[2-3]、污染指数法[4]、模糊综合指数法[5]等方法进行了研究,但是尚未形成统一的评价模式,无法应用于实际工程中。
机器学习是人工智能的一个分支,可以实现自动分类。通过机器学习方法,可以模拟环境变量和水质水平之间的关系。在此之前,已有不少学者将机器学习方法应用到水质分类之中。Walley 等人[6]对朴素贝叶斯、多层感知机以及回归树三种机器学习模型进行比较,实验结论是朴素贝叶斯与多层感知机模型均能达到较好的分类效果,回归树模型由于在某一类别表现极差导致其整体性能甚至低于传统分类方法。2010年,Yan等人[7]首次将自适应神经模糊推理系统(adaptive network-based fuzzy inference system,ANIFS)应用于水质分类,取得了高达89.59%的分类精确率,并证明了该方法优于人工神经网络(artificial neural network,ANN)模型。Modaresi 和Araghinejad[8]对德国黑兰平原主要含水层的水质数据进行研究,并指出在支持向量机(support vector machine,SVM)、概率神经网络(probabilistic neural network,PNN)和K-邻近算法(K-nearest neighbor,KNN)中SVM 的性能最佳。Park 等人[9]也在评估水体生态状态的实验中证实,SVM 比ANN 具有更高的预测精度。2017年,Avila 等人[10]比较分析了一系列水质预测模型,包括简单模型、多元线性回归、动态回归、回归树、马尔可夫链、决策树、随机森林、多项逻辑回归、判别分析和贝叶斯网络模型。
作为传统机器学习方法的改进,集成学习使用多种学习算法来获得比单一学习算法更好的预测性能[11-13]。gcForest算法是一种决策树集成算法[14],与深度神经网络相比,它具有更少的超参数,并且在任何规模的数据上都表现良好。gcForest 分为两部分:多粒度扫描和级联森林结构,前一部分适用于处理高维水质变量。本文只使用级联森林部分算法,命名为深度级联森林(deep cascade forest,DCF)。若考虑将弱学习器的最佳组合模块作为全局优化任务,也可以采用基于演化策略的集成学习方法。为了获得更好的集成性能,本文提出采用基于协方差自适应调整进化策略算法(covariance matrix adaptation evolution strategy,CMAES)的集成学习方法,构建地表水质分类模型。CMAES 是一种求解连续无约束优化问题的进化算法,核心思想是通过对正态分布协方差矩阵的调整,使种群收敛到全局最优解。CMAES 算法具有收敛速度快、保序、鲁棒性强等优点[15-16],且不易早熟,对种群大小也不过分依赖。
本文的主要贡献包括:(1)对集成学习方法进行简要概述;(2)提出了基于CMAES 集成学习方法的水质分类模型。
2 集成学习方法概述
集成学习是机器学习方法中的一种,主要思想是训练出多个学习器以解决同一个问题。一般来说,集成学习分两个步骤:首先,生成若干个体学习器;然后,使用某种策略将这些个体学习器组合起来。构建示例如图1 所示。
Fig.1 Ensemble learning method图1 集成学习思想
集成学习思想早在文明社会开始时就已经存在了,人们通过组合各种意见来作出最终抉择。1979年,Dasarathy 和Sheela 首次提出集成学习的概念[17]。20世纪90年代,Hansen 和Salamon提出一种基 于神经网络的集成模型,他们发现通过一组分类器组合进行预测通常比最佳单一分类器的预测结果更准确[18]。Schapire 等人证明了弱学习器可以被提升为强学习器,并提出Boosting 方法[19]。自此,学者们掀起了集成学习的研究热潮,越来越多的集成学习算法被提出,比如混合专家模型[20]、堆叠泛化模型[21]、Adaboost 算法[19]、Bagging 算法[22]等。近年来,更是出现了许多新颖的思想和模型。随机森林算法已被广泛应用于各种任务,是最成功的集合方法之一。完全随机森林算法也有很大发展,例如iForest算法[23]适用于处理异常检测问题,sencForest 算法[24]适用于处理流数据中出现的新类。gcForest 算法是由周志华教授提出的[14]。作为一种高度集成的方法,gcForest可以由许多随机森林建造。在每一层级联中,还可以添加其他传统的机器学习模型和集成模型来提高整体性能。还有许多工作尝试将随机森林算法与神经网络连接起来。Richmond 等人将级联随机森林转换为卷积神经网络[25],Welbl 利用随机森林辅助神经网络初始化[26]。
虽然不断有研究者提出新的集成学习算法,但是这些算法大都由几种经典算法改编得到,比如Bagging、Boosting 等。这两个经典算法效果良好且应用广泛。
2.1 Bagging
Bagging[22]算法又称套袋法,是个体学习器之间不存在强依赖关系,可同时生成的并行化方法。Bagging 算法基于自主采样法,首先采样出指定个数的采样集,然后基于每个采样集训练出一个基学习器,最后将这些基学习器进行结合。对分类任务进行结合时,通常采用简单投票法,对回归任务通常采用简单平均法。
随机森林(random forest,RF)算法[27]是Bagging算法的延伸,是最先进的集成学习方法之一。RF 算法与Bagging 算法的主要区别在于特征的随机选择。随机森林算法适用于处理密度估计任务和异常检测任务[28-30]。由于随机树集成可以很好地用于异常检测,Liu 等人在此基础上提出iForest 算法[23]。该算法对于每个随机树,都可以通过从根节点到包含数据点的叶节点的路径长度来测量隔离数据点所需的分区数,并对每个随机树设置树的深度限制,减少了不必要的计算。2010年,Liu 等人又提出iForest 算法的变体SCiForest[31],该算法具有分裂选择标准,在随机树构造中通过分裂从组合中得到的超平面来获得更平滑的决策边界,并降低陷入次优解的风险。
2.2 Boosting
Boosting[19]算法又称提升法,是个体学习器之间存在强依赖关系,必须串行生成的序列化方法。其主要思想是将弱分类器提升为强学习器。首先从初始训练集训练出一个基学习器,接着根据基学习器的表现对训练样本分布进行调整,然后基于调整后的样本分布训练下一个基学习器,如此重复进行,直到基学习器数目达到事先指定的值,最后将这些基学习器加权结合。
Boosting 族算法最著名的代表是AdaBoost[19]算法,该算法改变样本的概率分布,将关注点放在被错分的样本上,采用加权投票法改变弱分类器的权重。GentleBoost 是AdaBoost 算法的一种改进算法,最早由Friedman 等人提出[32]。该算法的核心是构建伪响应,使用基学习器拟合伪残差并计算最佳搜索步长,且该算法比AdaBoost 算法有更快的收敛速度且具有更高的稳定性。LogitBoost 算法也是由Friedman 等人提出[32],该算法采用对数回归模型为基学习器,学习到的是实数值并通过阈值实现分类。XGBoost[33]是一种叠加树模型算法,该算法支持使用自定义的损失函数,且利用CPU 的多线程进行并行运算,运行速度快且精度较高。
本文所采用的CMAES 方法是一种基于Boosting集成算法的全局参数优化方法。
3 基于CMAES 集成学习方法的地表水质分类模型
3.1 CMAES 概述
进化策略(evolution strategy,ES)[34]是一种模仿生物进化的求解参数优化问题的方法,该算法借助正态分布实现个体突变。根据选择方法不同,进化策略可分为(μ+λ)-ES 和(μ,λ)-ES 两种。(μ+λ)-ES采用“1/5 成功法则”调整变异程度,但该方法只能调整一个通用步长;(μ,λ)-ES 基于“变异步长控制”,该方法具有较大随机波动性且易产生无效突变。针对ES 算法的局限与不足,Ostermeier 等人[35]提出累计步长自适应控制策略(cumulative step length adaptation,CSA),该策略提高了步长控制的效率。在此基础上,Hansen 等人[35-37]提出一种基于协方差自适应调整的演化策略算法CMAES,该算法使用协方差矩阵描述突变尺度和方向,通过“采样-选择重组-更新-再采样”的循环来收敛到最优解。CMAES 采用择优截断选择策略,算法效率较高且能在一定程度上避免种群过早收敛,在中等规模的复杂优化问题上具有很好的效果,是当前最优秀的进化策略算法之一。
3.2 基于CMAES 集成学习方法的水质分类模型
在集成学习中,需要使用组合策略将多个基学习器组合成一个强大的学习器。当基学习器在性能上有很大差异时,往往采用加权平均法进行组合。CMAES 集成学习方法可以学习到基学习器的组合权重。本文的研究重点就在于给定一些基学习器的基础上,如何采用CMAES 集成学习方法对这些基学习器进行加权。
本文的目标是得到拥有最高F1 值的参数组合,优化目标如式(1)所示:
CMAES 使用正态分布N(m,σC)在n维空间进行采样,其中m是正态分布的均值,σ是搜索步长,C是正态分布的协方差矩阵。在CMAES 算法的采样操作中,每一次迭代,依据正态分布产生λ个解,采样公式如式(2)所示:
其中,~表示服从相同分布;g是迭代次数;B是正交矩阵;B的列是矩阵C的单位特征向量;D是对角矩阵,其对角元素是矩阵C的特征值的平方根;I是单位矩阵。
接着对新产生的解计算对应的目标值函数f(xi),并对其进行排序,排序如式(3)所示:
其中,下标i:λ表示在λ个样本中排第i位。采用截断选择,取前个解用于参数更新。
均值即所选择的μ个解的加权最大似然估计,计算方法如式(4)所示:
CMAES 算法默认使用累积式步长调整(CSA)方法,其原理是相继搜索方向应是共轭的。如果相继搜索方向之间正相关,则表明步长太小,应该增大;如果相继搜索方向之间负相关,则表明步长太大,应该减小。
先对步长进化路径Pσ更新,更新方法见式(5):
步长的更新方法如式(6)所示:
其中,dσ是阻尼系数,近似为1;E||N(0,I)||是正态分布随机向量范数期望长度。
正态分布协方差矩阵C的更新结合了Rank-μupdate 和Rank-1-update。先更新协方差矩阵进化路径Pc,如式(7)所示:
Rank-μ-update 使用μ个样本相对于均值m的偏差,更新方法如式(8)所示:
Rank-1-update 使用相邻两代均值的偏差,并使用参数P对均值偏差进行记忆,更新方法如式(9)所示:
正态分布协方差矩阵对偏差进行建模,最终更新方法如式(10)所示:
CMAES 算法的核心思想是通过对协方差矩阵C的调整来处理变量之间的依赖关系。若未满足停止条件,则不断重复进行采样操作和高斯分布更新;反之则停止循环,输出算法的最优值及最优参数组合。参数学习的过程如算法1 所示。
算法1基于CMAES 的集成学习方法
4 实验及结果分析
4.1 数据处理
中国国家环境监测中心(CNEMC)设有148个自动水质监测站,监测各种水质参数。这些监测站几乎覆盖了包括松花江、辽河、海河、淮河、黄河、长江、珠江、太湖、巢湖、滇池、钱塘江、闽江在内的中国所有主要河流流域。本次实验中,使用从2012年到2018年,十大流域每周监测到的真实水质特征数据进行研究,共有33 612 条样本。实验采用4个特征构建水质分类模型,分别是:酸碱度(pH 值)、溶解氧(DO)、高锰酸盐指数(CODMn)和氨氮(NH3H)。4 项特征数值分布如表1 所示。
Table 1 Feature distribution表1 特征分布
为了使所有特征对模型参数的调整产生相同程度的影响,本文对特征数据进行Z-Score 标准化操作。Z-Score标准化操作的定义如式(11)所示:
其中,x是特征值;μ是数据平均值;σ是数据标准差。通过标准化处理后,各项特征数据的平均值均为0,标准差均为1。处理后的数据分布如图2 所示。
4.2 模型评估
在机器学习建模过程中,通常把数据集划分为训练集和测试集。由于水质数据比一般数据更为复杂,本文将原始数据集的20%作为测试集,将剩余数据分为训练集和验证集。训练集用于拟合模型,验证集提供对训练集上拟合模型的无偏估计,同时调整模型的超参数,并使用测试集评估模型。
本文使用5 倍交叉验证来评估模型性能,步骤如下:
(1)将数据集随机打乱;
(2)将数据集拆分为5 组数据,每组数据的数据分布与原数据集保持一致;
Fig.2 Standardized processed data distribution图2 标准化处理后的数据分布
(3)对于每组数据,将该组数据作为验证集,剩余组数据作为训练集,在训练集上拟合模型并在验证集上进行评估,保留评估分数并丢弃模型;
(4)总结模型的技能。
4.3 评价指标
《地表水环境质量标准》(GB3838—2002)根据地表水保护目标和水域环境功能,将水质分为5个等级,从好到坏依次为I、II、III、IV、V。每个水质类别对应的功能如下:
I:主要适用于源头水、国家自然保护区。
II:主要适用于集中式生活饮用水地表水源地一级保护区、珍稀水生生物栖息地、鱼虾类产卵场、仔稚幼鱼的索饵场等。
III:主要适用于集中式生活饮用水地表水源地二级保护区、鱼虾类越冬场、洄游通道、水产养殖区等渔业水域及游泳区。
IV:主要适用于一般工业用水区及人体非直接接触的娱乐用水区。
V:主要适用于农业用水区及一般景观要求水域。
而劣Ⅴ类水,则是指污染程度已经超过Ⅴ类的水。
经统计,实验数据集中6个级别的样本分布非常不平衡,由于准确率(Acc)对数据分布的变化十分敏感,因此不适合作为评价模型好坏的唯一指标。Acc的计算方式如式(12)所示:
其中,T是分类正确的样本个数;N为样本总个数;K是类的个数;Acci指的是类i中各种分类结果的准确率值。
不同类别分布比例如图3 所示。
为了对模型进行较为全面的评估,本文引入F1值作为模型评估标准。F1 值是以每个类别为基础进行定义的,包括精确率(precision)和召回率(recall)两个概念。精确率是指预测结果属于某一类的个体,实际属于该类的比例;召回率是指被正确预测为某个类别的个体数量与数据集中该类别个体总量的比例。F1 值将精确率与召回率结合起来作为分类有效性的度量,且二者对数据分布的变化均不敏感。具体计算方法如式(13)、式(14)、式(15)所示:
Fig.3 Distribution ratio of different categories图3 不同类别分布比例
其中,TP(true positive)指的是正确分类为本类的样本个数;FP(false positive)指的是错将其他类预测为本类的样本个数;FN(false negative)指的是错将本类预测为其他类的样本个数。
为了将F1 值应用于多分类问题,本文使用Fβ值作为评估标准。Fβ值的定义如式(16)所示:
其中,K指的是类的个数;βi指的是类i中的样本数量占样本总数量的比例;F1i指的是类i中各种分类结果的F1 值。
4.4 实验结果与分析
本文首先选取逻辑回归(logistic regression,LR)、线性判别分析(linear discriminant analysis,LDA)、支持向量机(SVM)、决策树(decision tree,DT)、完全随机树(completely-random tree,CRT)、朴素贝叶斯(naive Bayes,NB)、K-邻近算法(KNN)、随机森林(RF)、完全随机树林(completely-random tree forest,CRTF)、深度级联森林(DCF)10种模型训练出基学习器,然后采用CMAES集成学习方法将10种算法集成。所有模型参数与单独使用时保持相同。CMAES集成学习方法对10 种基学习器的集成权重如表2 所示。
Table 2 Ensemble weights of CMAES ensemble learning method on 10 basic learners表2 CMAES集成学习方法对10种基学习器的集成权重
Table 3 Acc of train set表3 训练集上的准确率 %
各个模型在每个类的Acc和F1 值的实验结果如表3~表8 所示,结果皆用百分比表示。
各个模型在训练集、验证集和测试集的综合表现如表9 所示。
结果显示:包括随机森林、完全随机森林、深度级联森林和CMAES 集成学习方法在内的集成模型在预测准确率Acc和Fβ值方面表现更好。高度集成模型(深度级联森林和CMAES 集成学习方法)的表现优于其他模型。
Table 4 F1 of train set表4 训练集上的F1 值 %
Table 5 Acc of validation set表5 验证集上的准确率 %
Table 6 F1 of validation set表6 验证集上的F1 值 %
Table 7 Acc of test set表7 测试集上的准确率 %
Table 8 F1 of test set表8 测试集上的F1 值 %
Table 9 Comprehensive performance表9 综合表现 %
具体来说:在传统机器学习模型中,LR 和LDA模型不能有效预测级别Ⅴ,而级别Ⅴ表示水质很差,正确预测该级别十分重要,因此这两个模型最不适合用于水质预测。LR、LDA 和SVM 模型不能较好预测级别I,导致这些模型整体性能不佳。在所有传统的机器学习模型中,DT 模型在所有水质级别的预测性能都较为稳定。在集成模型中,随机森林有效避免了决策树对训练集的过度拟合问题,并且能够在高维数据上很好地工作。本案例研究中的数据维数较低(只有4个水质变量),因此随机森林的结果与单一决策树没有显著差异。结合决策树和随机森林,深度级联森林实现了更高的集成与级联结构,该模型将继续训练,直到性能不再提高,使模型适用于不同规模的训练数据。CMAES 集成学习方法在测试集上的Fβ值达到97.70%,准确率Acc达到97.42%,均为最高值,且CMAES 的自适应过程使该集成学习模型不易陷入局部最优。综上所述,CMAES 集成学习方法的表现最佳,优于其他模型。
5 总结与展望
本文首先提出水质分类的重要性,指明传统手动分类方法的局限性,并对前人所进行的机器学习方法在水质分类上的应用工作进行了总结。接着指出集成学习方法比单一学习算法有更好的预测性能,并对集成学习方法进行简要概述。在此基础上,本文提出一种基于CMAES 算法的集成学习方法,对LR、SVM、DCF 等十种模型进行集成。实验结果显示,集成学习方法大都优于传统机器学习方法,且CMAES 集成学习方法的分类效果最佳。接下来的工作安排主要分为两点:(1)探索一种能自动预测水质特征变化的有效算法;(2)使用深度学习算法预测未来几年的水质状况。