崔东文 郭 荣
(1.云南省文山州水务局,云南 文山 663000;2.云南省文山州文山市水务局,云南 文山 663000)
随机森林(random forest,RF)是由Leo Breiman提出的一种集成机器学习方法,可应用于分类问题、回归问题以及特征选择问题,其主要利用Bootsrap重抽样方法从原始样本中抽取多个样本,对每个Bootsrap样本进行决策树建模,然后组合多棵决策树通过投票方式得出最终评价结果[1].由于RF是基于决策树分类器的融合算法,可以看成由很多弱分类器(决策树)集成的强分类器,可有效避免“过拟合”和“欠拟合”现象的发生,对解决多变量预测具有很好的效果,被誉为当前最好的机器学习算法之一[2-3],已在各领域及水利行业[2-7]中得到应用.在实际应用中,对于不同的预测对象,RF决策树数量ntree和分裂属性个数mtry是不同的,二者成为决定RF预测或分类性能的关键性因素.目前普遍采用试凑的方法[3,8]或网络搜索的方法[1,9]确定决策树数量、分裂属性个数,但取值效果往往不理想.群体智能算法(SIA)由于具有灵活性、稳健性等特点以及分布性、简单性、可扩充性等优点已在RF决策树数量、分裂属性个数的优化中得到应用,如赵东等人[10]利用果蝇优化算法(FOA)对RF关键参数进行优化,通过构建FOA-RF模型对虫害数据进行预测,结果表明该模型具有较好的预测精度.王杰等人[11]提出一种基于粒子群优化(PSO)算法的加权随机森林分类模型,通过6组实验数据验证了该模型具有良好的分类效果.周博翔等人[12]提出一种蜜蜂交配优化随机森林算法(HBMORF)用于人体姿态识别,并通过实验证明了该模型的识别性能和稳定性能.
为进一步拓展群智能算法优化RF两个关键参数的应用范畴,本文提出一种基于随机漂移粒子群(random drift particle swarm optimization,RDPSO)算法优化的RF预测方法,利用RDPSO算法优化RF决策树数量和分裂属性个数两个关键参数,构建RDPSO-RF预测模型,并构建基于RDPSO算法优化的支持向量机(SVM)、BP神经网络预测模型作对比,以云南省某水文站枯水期1~3月月径流预测为例进行实例研究,旨在验证RDPSO-RF模型用于水文预测预报的可行性和有效性.
随机漂移粒子群(RDPSO)算法是孙俊等人受PSO算法的轨迹分析和金属导体中自由电子定向漂移运动、随机无规则热运动启发而提出来的一种具有较强全局搜索的群体智能算法.RDPSO算法中自由电子的定向漂移运动类似于粒子的局部搜索,随机无规则热运动类似于粒子的全局搜索[13].参考文献[13-15],RDPSO算法数学描述如下:
设RDPSO算法搜索过程中第t+1代的第i个粒子在第j维的定向漂移运动速度表示,随机热运动速度表示则第t+1代粒子运动速度的更新公式表示为:
基于PSO算法粒子趋向局部位置原理,定义定向漂移运动速度
式中,c1、c2表示常数,本文均设置为表示在(0,1)区间内均匀分布的随机数;表示第i个粒子当前最佳位置表示所有粒子个体当前最优位置.
式(2)可表示如下:
基于无规则随机运动Maxwell速率分布率,定义无规则随机热运动速度如式(6):
综上,RDPSO算法中粒子速度和位置更新公式表示为:
随机森林(RF)算法是由Leo Breiman[16]提出的基于决策树分类器的融合算法,该算法通过随机的方法建立一个由许多决策树组成的森林,每棵决策树之间没有关联;每棵决策树均采用bootstrap方法进行采样,随机产生k个训练集,利用每个训练集生成对应的决策树;再从所有M个决策属性中随机抽取m个属性进行预测;在训练过程中,一般m的取值维持不变;训练结束后,当测试样本输入时,每棵决策树均对测试样本进行预测,并将所有决策树中出现最多的投票结果作为最终预测结果,具体算法步骤见文献[4,11,17].
假设对于一个测试样本x,第l棵决策树的输出为ftree,l(x)=i,i=1,2,…,c,即为其对应的输出值,l=1,2,…,L,L为RF中的决策树棵数,则RF的输出可表示为:
式中,I(·)表示满足括号中表达式的样本个数.
研究表明,决策树数量ntree和分裂属性个数mtry的合理选取是提高RF预测精度的关键,ntree设置过小易使RF训练不充分而导致模型“欠拟合”,设置太大又易使RF过度训而导致“过拟合”;同样,mtry设置太小易使RF过度训练而导致“过拟合”,设置太大会使得RF训练不充分而导致模型“欠拟合”.“过拟合”、“过拟合”均会降低RF模型的预测或分类性能[18].本文基于Matlab软件环境和随机森林工具箱,利用RDPSO算法寻优RF关键参数决策树数量(ntree)和分裂属性个数(mtry).
RDPSO-RF模型预测实现步骤可归纳如下(RDPSO-SVM、RDPSO-BP模型预测步骤可参考实现):
Step1:合理划分训练样本和预测样本.设定决策树数量ntree和分裂属性个数mtry搜寻范围.
Step2:确定RDPSO-RF模型适应度函数.本文选用训练样本平均相对误差绝对值之和作为适应度函数,描述如式(13):
式中,yi为第i个样本实测值为第i个样本模拟值.
Step3:设置RDPSO算法群体大小N,最大迭代次数T,最大、最小热敏系数α,常数c1和c2.设置当前迭代次数t=0,初始化粒子位置和速度.
Step4:计算漂移系数β,依据式(8)群体平均最优位置.
Step5:基于式(13)计算目标适应度值,更新全局最优位置G和粒子局部最优位置P.
Step6:根据式(11)、式(12)更新粒子的速度和位置.
Step7:判断RDPSO算法是否满足终止条件,若满足则转至Step8,否则令t=t+1,执行Step4~Step7.
Step8:输出RDPSO算法全局最优个体空间位置和适应度值,即待优化问题最优解.
Step9:利用RDPSO算法优化获得的决策树数量ntree和分裂属性个数mtry代入RDPSO-RF模型对预测样本进行预测.
1)数据来源及分析.实例数据来源于云南省某水文站,共有54年的实测水文资料.经分析,该水文站上年度月径流与次年度1~3月月径流存在较好的相关关系[19],见表1.
表1 上年度1~12月月均流量与次年1~3月月相关系数
本文分别选取上年度4月、8月~12月,上年度4月、8月~12月及次年1月、上年度4月、8月~12月及次年1~2月月均径流量作为影响因子预测次年枯水期1月、2月、3月均径流量,输入维度分别为6维、7维和8维.
2)参数设置.RDPSO算法最大迭代次数T=200,最大、最小热敏系数α分别设置为0.9、0.3,常数c1、c2均设置为2.RF、SVM、BP待优化参数搜索空间设置为:RF决策树数量ntree∈[1,500],分裂属性个数mtry∈[1,20];SVM惩罚因子C∈[2-10,210]、核函数参数g∈[2-10,210]、不敏感系数ε∈[2-10,210]、交叉验证参数V=5;BP神经网络权、阈值搜索空间[-1,1],隐含层数为输入维度的2倍减1,隐含层和输出层传递函数均分别采用logsig和purelin,训练函数均采用traingdx,最大训练轮回200次,期望误差0.001.
3)模型构建及预测.基于上述分析,分别构建6输入1输出、7输入1输出和8输入1输出的次年枯水期1~3月月径流预测模型(对SVM、BP输入数据需进行归一化处理,RF输入数据无需处理).选取平均相对误差绝对值MRE和最大相对误差绝对值Max RE作为评价指标,利用RDPSO-RF、RDPSOSVM、RDPSO-BP模型对实例枯水期1~3月月径流进行预测,见表2,并绘制1~3月的拟合-预测相对误差效果图,如图1~3所示.
表2 实例枯水期1~3月月径流预测结果及其比较表
图1 枯水期1月月径流拟合-预测相对误差效果图
图2 枯水期2月月径流拟合-预测相对误差效果图
图3 枯水期3月月径流拟合-预测相对误差效果图
依据表1~2及图1~3可以得出以下结论:
1)RDPSO-RF模型对实例1~3月月径流训练、预测的平均相对误差绝对值分别为4.28%、3.88%、5.67%和3.74%、4.57%、4.88%,无论训练样本还是预测样本,其精度均优于RDPSO-SVM模型(训练、预测的平均相对误差绝对值分别为7.52%、5.49%、9.03% 和4.04%、4.93%、5.37%)和 RDPSO-BP模型(训练、预测的平均相对误差绝对值分别为5.52%、5.67%、11.26% 和 6.06%、6.38%、7.12%),表现出较好的预测精度和泛化能力;同时验证了本文提出的RDPSO-RF模型用于水文预测预报是可行和有效的,可为相关预测研究提供参考和借鉴.
2)由于RDPSO-RF模型融合了RDPSO算法良好的全局搜索能力和RF强分类集成器二者的优点,使得RDPSO-RF模型对于实例1~3月月径流的拟合、预测效果最好,有效避免预测过程中“过拟合”和“欠拟合”现象的发生;对于RDPSO-SVM模型,除2月份外,其预测样本精度远优于训练样本精度,表现出“欠拟合”特征;RDPSO-BP模型对于实例3月的预测同样表现出“欠拟合”特征.
3)3种模型比较而言,RDPSO-RF模型拟合-预测精度最高;RDPSO-SVM模型与RDPSO-BP模型各有优劣,但RDPSO-SVM模型拟合-预测精度略优于RDPSO-BP模型.
依据随机漂移粒子群(RDPSO)算法良好的全局搜索能力和随机森林(RF)强分类集成器二者的优点,本文提出RDPSO-RF水文预测模型,利用RDPSO算法对RF关键参数进行优化,并对云南省某水文站1~3月月径流进行拟合及预测.结果表明,RDPSO-RF模型对实例1~3月月径流的拟合-预测精度均优于RDPSO-SVM、RDPSO-BP模型,具有较高的预测精度和泛化能力,将RDPSO-RF模型用于水文预测预报是可行和有效的,可为相关预测研究提供参考和借鉴.