职场文秘网

首页 > 心得体会 > 学习材料 / 正文

基于随机森林算法的负载预警研究及并行化

2023-02-04 11:10:10

王 诚,唐振坤

(南京邮电大学 通信与信息工程学院,江苏 南京 210003)

在如今大数据的环境和背景下,如何从海量的业务数据中提取出精准有效的负载预测相关数据,使得负载预测工作更为准确、实时,从而保障通信系统设备的稳定性是当前的研究重点[1-2]。

在设备故障预测领域,国内外进行了大量研究,成果显著。例如:通过神经网络+电力系统进行故障预测和安全评估;
利用专家经验参考系统对变电站的故障进行诊断;
对智能输变电站中故障发生的动态过程,通过Petri网络进行描述分析等;
以及诸多基于数理统计概率的方法来建立模型,从而预测故障(如蒙特卡洛仿真法)。

现有的负载预测方法主要分为传统统计学方法和人工智能预测方法两大类。传统统计学方法包括回归分析法[3]、时间序列法[4]、灰色模型法[5]等,统计学预测方法形式简单、易于实现,但是只能处理含有少量属性的样本,对样本数据的平稳性要求较高,且预测精度较低。而随着人工智能技术的发展,以机器学习为基础的人工智能预测方法也随之兴起。典型方法如人工神经网络(ANN)[6]和支持向量机(SVM)[7]。

凭借神经网络对数据强大的映射能力,人工神经网络已有很多类型(如BP网络、RBF网络等)被广泛应用于负载预测工作中。在负荷预测中,它能很好地反映历史数据的输入与输出之间的关系,但是也具有预测模型泛化误差较大,且神经网络的隐含层选取难以确定等缺点。作为新兴的智能算法,SVM有很多优越的性能,也克服了人工神经网络收敛速度慢、局部极小点等问题,但它也存在核参数和惩罚系数难以确定的缺陷。且这些模型和理论在面对准确性较高的小数据集时,能较好地在单机环境下实现,可是在面对高维度的大数据集时,就难以满足负载预测高精度、实时性的要求。

该文提出一种基于随机森林算法的负载预警[8]方法,并在具体实现上引入Spark平台以达到并行化的改进。通过引入公开的分布式数据集,在实验室搭建的分布式集群上进行训练和测试,将集群预测的结果和单机模型预测结果加以比较,并逐步扩大数据集,以验证模型的预测能力。

1.1 随机森林算法

美国科学院院士Leo Breiman综合了Bagging集成、CART决策树以及贝尔实验室的Tin Kam Ho等人提出的特征随机选取思想,于2001年提出了随机森林算法[9]。Breiman给出了与随机森林相关的一系列数学推导与证明,该文可以被看作是随机森林方法的经典阐述。随机森林作为一种集成算法,改变了以往分类器过拟合的问题,参数很少也使其非常容易操作,同时随机森林也具有计算变量重要性的能力和分析所有数据之间的内部结构关系的能力。随机森林算法的基本原理为:

(1)对于一个大小为N的数据集,假设随机森林算法有k个数目,随机森林中的每棵树都需要从上述数据集N中通过随机有放回的方式抽样k个数据以作为训练集N0的样本。这种方式就是Bootstrap Sample抽样法。

(2)记每一个输入的数据特征维度为M,设一个常数m(要求m

(3)重复执行第2步,直到生成K棵决策树,从而组合成随机森林。

需要注意的是,第1步中的抽样过程必须满足随机且有放回的条件,从而保证每棵树的训练集是随机且有交集的,在这个前提条件下,每棵树的训练结果对最终结果才是有效的。而第3步中做不剪枝操作,是为了增加决策树构建的随机性,加快决策树的生成。

1.2 Spark计算框架

Spark[10-11]是一款基于内存的并行分布式计算框架,相较于传统的MapReduce基于磁盘进行数据处理的计算框架,Spark将每一轮的输出结果都缓存在内存中,避免从HDFS中多次读取数据导致的冗余资源开销,更适合需要多次迭代的算法。

Spark的基本运行流程是:

(1)Spark在驱动节点Driver端运行主函数并创建SparkContext以构建Spark Application的运行环境,创建完成后的SparkContext向资源管理器Cluster Manager申请所需要的CPU、内存等资源并申请运行多个执行节点Executor,Cluster Manager分配并启动各个Executor。

(2)SparkContext构建有向无环图DAG以反映弹性分布式数据集RDD之间的依赖关系,并将其分解成任务集TaskSet发送给有向无环图调度器TaskScheduler。

(3)各Executor向SparkContext申请Task,TaskScheduler将Task分发给各个Executor,同时SparkContext将打好的程序Jar包发送给各个Executor,各Executor执行结束后将结果收集给Driver端,最终释放资源。

2.1 数据预处理

初始数据集的预处理过程是数据挖掘和分析当中非常重要的一步。电力系统负荷对数据集主要是设备运行时的一系列模拟量数据,如系统工作频率,A、B、C三相的相电压,线电压,电流,有功功率等。交流电系统中数据种类繁多,体量庞大,易产生大量的冗余数据。除此之外,在系统的工作过程中,由于监测设备自身测量精度不足、通信过程中数据丢失以及运维人员的误操作(如拉闸断电)等主观或客观因素的影响,会造成数据的缺失或异常。这部分数据参考价值较低,如果将它们也纳入预测体系会对权重产生较大影响,从而导致预测精度的下降。

(1)异常值平滑。

如上文描述,由于环境或采集系统自身原因的影响,会有一部分数据和其他数据有明显的差异,这些异常数据会对实验数据集产生负面影响,使数据集的噪声增大,从而使预测结果出现偏差。因此,需要对噪声数据进行预处理。一种最简单的处理方法就是直接舍弃异常值,但这样会使数据产生不连贯性,因此考虑利用相近时间的正常数据作为权重进行平滑处理,见公式(1):

x(n,t)=w1x(n1,t)+w2x(n2,t)

(1)

其中,x(n,t)表示第n天t时刻相应的特征指标,w1x(n1,t)表示第n-1天t时刻对应的特征指标,w2x(n2,t)表示第n+1天t时刻对应的特征指标,这种方式综合考虑了异常值附近数据的特征指标,对异常值进行了合理的平滑。

(2)特征归一化。

不同的特征参数的取值范围、单位等差异较大,取值范围较大的参数可能对取值范围较小的参数产生特征覆盖。因此,有必要对各特征参数做归一化处理,如公式(2)所示:

(2)

2.2 模型构建

(1)生成RDD数据集。

利用Context中的parallelize()函数,将预处理后的相关数据生成RDD数据集。

(2)生成决策树。

生成决策树[12]是整个并行随机森林算法的关键,该文采用经典Bagging算法对RDD数据集有放回地进行抽样,形成k个大小一致的样本集yi(i=1,2,…,k)。有放回地抽取说明这k个样本集是等价的,对原始数据的特征做了均等的保留,这是并行化计算的前提。

从M个输入特征中随机选择m个特征[13](m≤M)作为决策树当前节点的分裂属性集,对m个属性测评,如比较属性的Gini指数(如公式(3)计算),从中选择最优分裂特征和切分点,将训练数据集分配到两个子节点中去。如此递归地形成决策树,k个决策树的形成将调用Spark进行并行往复的迭代计算,为随机森林模型做准备。

Gini指数计算:

(3)

(3)生成随机森林模型。

将所有决策树[12]的结果整合起来,得出整个森林的结果。该文将随机森林用作回归,即将每个决策树的预测结果求和取均值,这个过程由最后一个RDD来实现,如图1所示。

3.1 实验数据集

实验数据集选取某机房UPS部分历史监控数据图,监测主要指标作为样本属性,如表1所示。选取多组容量不同的样本(由于实验数据有限,将原始数据人为扩大),如表2所示。检验随着数据量的增大,各方法的预测精度是否会受影响。

表1 数据集样本属性

表2 数据集样本容量

3.2 集群搭建

实验环境是基于Spark平台的分布式计算集群,采用一台服务器作为driver,四台服务器作为worker。每个节点的driver核数为双核,内存为16 G,硬盘为500 G;worker核数为单核,内存为8 G,硬盘为200 G,Java版本为1.8.0,Scala版本为2.11.0,

3.3 集群搭建

使用表2中的数据集,选取典型单机负载预测算法支持向量机回归(support vector machine,SVR)算法、分类回归决策树(classification and regression tree,CART)算法进行对比。使用基尼指数最小化准则进行特征选择,最小基尼指数值设为0.01,决策树在生长过程中不进行剪枝。在构建原始随机森林时,设定树的个数为50,采用简单多数投票法预测结果[14-15]。采用ROC曲线下的面积AUC指标来评价算法预测精确度,AUC值的范围为[0,1],其值越接近1则说明算法的预测效果越好。同时,对单机环境和并行化环境下的运行时间进行对比,从而判断并行化计算是否有利于加快预测速度。

从表3可知,提出的并行随机森林算法比CART和SVR具有更高的预测精度。这是由于算法通过 Bagging将若干个决策树组合在一起,具备决策树的优点,同时弱化其缺点,并且对于数据做了预处理工作,降低了离群数据对于群体的干扰,保障了算法的鲁棒性。此外,从表中可以看出,在数据集较小时,基于分布式集群的负荷预测方法运行时间没有优势,甚至要耗费比单机预测算法更长的时间。这是因为分布式集群的任务分配与调度需要消耗一定时间。为检测并行化在大规模数据量下对算法性能的提升,将数据集进一步扩大,以数据集容量为变量,测试运行时间,并在单机环境和并行集群环境下进行对比。得到的实验结果如图2所示。

表3 实验结果

对比可以看出,随着数据规模达到一定程度,单机环境下的运行时间明显增加,而并行化环境下运行时间增长基本保持稳定。

在总结传统单机电力负荷预测模型的基础上,结合对Spark分布式计算框架的研究,实现了对Spark平台下的随机森林回归算法的并行化,进而借助它对电力负载做出预测,从而为负载预警提供依据和支撑,对当前电力大数据背景下对高精度、高准确的负载预测的需求提供了一定的帮助。下一步计划将该方法在实际的数据机房中进行验证,探索其实际应用价值。

猜你喜欢 单机决策树森林 热连轧单机架粗轧机中间坯侧弯废钢成因及对策新疆钢铁(2021年1期)2021-10-14一种单机式涡流探伤仪电性能校准装置军民两用技术与产品(2021年4期)2021-07-28军工企业军品单机配套立项风险评价浅析军品航天工业管理(2020年11期)2021-01-04简述一种基于C4.5的随机决策树集成分类算法设计科学与信息化(2019年28期)2019-10-21宇航通用单机订单式管理模式构建与实践航天工业管理(2019年11期)2019-04-20决策树学习的剪枝方法科学与财富(2016年32期)2017-03-04哈Q森林作文大王·笑话大王(2017年1期)2017-02-21哈Q森林作文大王·笑话大王(2016年10期)2016-10-18哈Q森林作文大王·笑话大王(2016年7期)2016-08-08哈Q森林作文大王·笑话大王(2016年2期)2016-02-24

Tags: 并行   负载   预警  

搜索
网站分类
标签列表