邓 彬,林 宏,黄颖祺,胡亚荣,张建国,孟 琦
(1.深圳供电局有限公司,广东 深圳 518000;2.西安交通大学信息与通信工程学院,陕西西安 710049;3.兴唐通信科技有限公司,北京 100191)
电网规模的扩大[1]和清洁能源的利用[2]使电力数据量迅速增加,调度人员从中获取决策关键信息变得困难[3]。
现有的调度指令安全性研究,主要根据设备故障概率[4]、负荷削减[5]、天气及人员[6]等因素建模并制定风险指标[7-9],但所用指标基于经验,且结果未与风险严重程度对应,难以供调度员参考。电力调度过程涉及众多复杂特征和规则,符合机器学习的应用场景,但现有的包括故障辨识、负荷预测和辅助决策的研究[10-13]还未涉及调度指令层面。
针对上述问题,文中提出一种基于加权决策树的调度指令风险评估方法,利用机器学习技术找到符合电网运行规律的风险评估规则,并解决了样本不平衡问题。
调度指令是电网调度操作执行的依据,根据电网相关安全规程和运行准则给出[4]。调度指令分为单项令、逐项令和综合令,单项令的操作内容一般是针对某个具体设备给出的,而逐项令和综合令都可视为是由单项令组成的,所以该文只对单项令进行分析。根据《南方电网运行安全风险量化评估技术规范》和电力领域专家的建议,该文将调度指令的风险分为3 个等级:安全、风险和危险。其定义和系统应对措施如表1 所示。
表1 调度指令安全风险等级划分
电力设备一般有运行、检修、冷备用和热备用4种状态。当设备处于检修或冷备用状态的时候,对设备的任何操作都无法影响电网整体状态。所以,该文主要考虑处于运行或热备用状态的电力设备调度指令的风险评估,如果调度指令的对象处于检修或冷备用状态,则对该调度指令的风险评估结果为“安全”。
调度操作能够改变电力设备的运行状态,进而对整个电网产生影响,因此与其相关联的安全影响因素很多。选择可靠的关联影响因素并构建关联影响模型,才能以此找到基于调度指令的电力系统平稳运行规则,从而对调度指令进行有效的风险评估。该节介绍的调度指令风险评估方法利用特征工程构建多维度指令画像,建立调度指令专家知识库,再以此为基础使用机器学习方法寻找风险评估规则。算法框图如图1 所示。
图1 调度指令风险评估算法框图
利用机器学习技术对海量电力数据进行处理,第一步是特征工程。广泛采集与调度指令相关联的海量电力数据,对其进行数据清洗、特征选择和进一步的预处理,在多个维度对调度指令进行描述和表征,以形成指令画像。
1)数据清洗。对电力系统中的结构化数据(电气量测量、设备整定值等)和非结构化数据(日志、视频等)分别采用不同方式进行处理,并清洗冗余的报警信号、事件顺序记录(Sequence of Events,SOE)及无用信息。
2)特征选择。一般调度指令都包含时间、厂站、操作信息和状态4 个部分,可以从中提取包括厂站名、操作设备、电压等级等信息,从电力能量管理系统中可以获取设备运行状态、保护设备状态、设备整定值及安全限值等相关信息,删除设备编号等不适合作为特征的信息。除此之外,利用PAS 系统对调度指令执行前的断面数据进行潮流计算,得到调度指令执行后的线路、变压器、发电机、母线的越限和重载信息,从调度指令的执行后果层面构建特征来反映其安全状态。综合以上信息对调度指令进行多维度画像,全方位地反映调度指令的安全风险。
3)标准化处理。选取完特征并提取出相应数据之后,需对数据做进一步处理。首先是缺失值处理,有些信息可能因为设备故障或通信故障等原因缺失,又或是某些特征本就不适应于某些情况,比如变电站没有发电机这种设备,该厂站关于发电机的相关信息就为缺失值,可对这些缺失值置零处理。机器学习中一般使用数值数据训练模型,所以需要将文本类数据单独分离并编码,该文采用独热编码(One-hot Encoding)对文本数据编码,将具有m个可能值的特征编码为m个二元特征。这样做有利于分类器处理属性数据,也起到了扩充特征的作用。
按照上述流程对调度指令完成多维画像之后,就将调度指令与多个电力安全要素联系起来,在专家及电力调度人员指导下对这些数据添加标签,可以将其进一步与电力系统的安全状态关联起来,构建蕴含电力系统运行规律的调度指令专家知识库,并以此为基础对机器学习模型进行训练,找到调度指令的风险评估规则。
1.3.1 决策树
决策树是机器学习分类算法中的一类,它的可解释性强,易于理解也易于实现,作为一种非参数分类方法,不需要担心离群点和数据是否线性可分的问题,适合处理上述文本与数值数据交叉的原始数据。
最著名的决策树算法ID3 算法由J.R.Quinlan 于1986年提出,其核心是在决策树的各个节点上应用信息增益准则进行特征选择。信息增益表示的是已知特征X的信息而使得类别Y的信息不确定性减少的程度,某个特征的信息增益越大,就表示该特征对结果的影响越大,特征A对数据集D的信息增益可表示为:
其中,H(D)表示数据集D的经验熵,定义为:
其中,|D|为样本容量,|Ck|为D中类别Ck的样本个数,K为总类别数。
H(D|A)为给定特征为A的情况下数据集D的经验条件熵,定义为:
其中,n表示特征A的不同取值数量,根据特征A可将数据集D划分为n个子集Di,|Di|为子集Di的样本个数,Dik为子集Di中属于类别Ck的样本集合,|Dik|为其样本个数。
对于待划分的数据集,计算每个特征划分数据集的信息增益,信息增益越大说明使用该特征划分得到的子集不确定性越小(纯度越高),因此总是选择信息增益最大的特征来划分当前数据集。
除了ID3 算法外,还有利用基尼指数进行特征选择的CART 算法,基尼指数(又称基尼不纯度)表示一个随机选中的样本在子集中被分错的可能性。当一个节点中所有样本都是一个类时,基尼指数为零。分类问题中,假设有K个类别,样本点属于第k类的概率为pk,则概率分布的基尼指数定义为:
基于特征A划分样本集合D之后的基尼指数定义如下:
因其表示样本被分错的概率,所以总是选择基尼指数最小的特征来建立决策树。
在建立决策树时,如果树的深度过深,叶子节点数量过大,就会导致过拟合问题,即该决策树在训练集上表现很好,但在测试集上表现很差,为了避免这种问题,可以对决策树采取先剪枝的方法,提前设定阈值,当信息增益减小到某一阈值的时候就停止创建分支,并限定树的最大深度及最大叶子节点数量。
在按照前述方法对数据进行预处理并建立数据集后,就可以利用决策树算法按照如下步骤进行训练,以建立一棵决策树:
1)从根节点开始,对节点计算所有可能特征的信息增益,选择信息增益最大或基尼指数最小的特征作为结点的特征,并由该特征的不同取值构建子节点,该文采用二叉树构建方法;
2)对子节点递归地调用以上方法,构建决策树;
3)直到所有特征的信息增益减小到某一阈值或基尼指数大于某一阈值或树的深度达到阈值时为止。
1.3.2 随机森林
随机森林(Random Forest,RF)是Leo Breiman 在决策树的基础上提出的算法[14],它的基本构成单元是决策树,通过建立多棵决策树提高分类准确性,最后利用投票完成对新样本的分类,其算法流程如下:
1)确定决策树的生成参数以及树的数量n;
2)利用自助法(bootstrap),给每棵决策树有放回地随机选择N条训练样本;
3)在每个节点处随机选择特征,根据所选决策树生成算法比较选择最佳特征以划分数据集并生成子节点;
4)递归生成n棵决策树,对于测试集中的未知数据,采用多数投票法确定分类结果。
由于随机森林引入的随机性及决策树数量的增加,使其具有很强的抗干扰和抗过拟合能力,存在分类不平衡的情况时,可以平衡误差,提高训练效果。
该文将对基于ID3 算法和基于CART 算法建立的随机森林进行比较。
在现实生活中,样本不平衡的现象十分常见,在电力系统中也很常见,因为电力安全直接影响国计民生,要尽量避免发生事故,所以电力历史数据中的负样本极少,这是典型的样本不平衡现象。对于样本不平衡的情况,将无法单纯使用准确率衡量训练效果。比如1 000 条样本中,正样本为995 条,负样本有5 条,若是正样本全部分类正确而负样本全部分类错误,则其准确率将高达99.5%,但却没有任何意义。
该文根据表1 的内容将样本分为三类,但是对于电力系统来说,这三类样本被模型错分的代价明显不同。如果“危险”的调度指令被错分为“安全”或“风险”,将可能导致严重的电力事故,所以应该最大程度地降低“危险”样本的错分概率。
对于这种情况,该文将采用代价敏感(Cost-Sensitive)的学习方法[15]降低不平衡样本的影响。代价敏感方法也就是针对不同类别的样本施加错分惩罚(也可叫权重),使得模型在训练过程中更倾向于规模小的类别样本,提高小样本分类正确率。对于决策树算法来说,其权重根据式(6)计算:
其中,weight 为对应样本权重,n_sample 为总样本数,n_classed 为类别数,class_sample 为该类别样本总数。
较大的权重被分配给小样本,较小的权重被分配给大样本。在建立决策树进行节点的分裂时,需要计算特征的信息增益及基尼指数,此时将引入样本权重,少数类样本划分正确的特征将得到更高的信息增益或更小的基尼指数,而由于多数类样本权重小,即使被错分对信息增益或基尼指数的影响也不大,可以更好地保证少数类被分类正确,这样的决策树被称为加权决策树[16]。
对于分类问题可以使用如下几个指标来评价模型的效果:
1)准确率表示分类正确的样本数量占总样本数量的比例,如式(7)所示:
其中,FP表示实际为负但被预测为正的样本数量,TN表示实际为负被预测为负的样本的数量,TP表示实际为正被预测为正的样本数量,FN表示实际为正但被预测为负的样本的数量。
2)精确率表示预测为正的样本中实际也为正的样本占被预测为正的样本的比例,如式(8)所示:
3)召回率表示实际为正的样本中被预测为正的样本所占实际为正的样本的比例,如式(9)所示:
4)混淆矩阵是用于表示分类精确度的常用指标,由N行N列的矩阵构成,其中每列表示所预测的类别,每行表示样本的真实类别,列数据总数表示预测为该类别的样本数目,行数据总数表示实际为该类别的样本数目。
综上,基于加权决策树的调度指令风险评估方法流程图如图2 所示。
图2 调度指令风险评估方法流程图
该实验的数据来源为南方电网深圳供电局OPEN3000 电力监控系统数据库中的大量电力数据。在对数据进行初步清理后,按1.1 节的方法选择了包括“操作类型”、“电压等级”、“设备类型”、“设备(线路、变压器、发电机)负载率”、“设备越限”等14个特征来构建数据集,并邀请了5 位专家及调度工作人员根据当地电网的拓扑结构及整体安全态势添加风险评估标签,以符合真实电网的安全风险状态。由于真实的电网一般都处于正常运行状态,极少发生危险事故,所以数据中几乎没有负样本,用于训练时,虽然正确率极高但却因负样本的缺乏而无法将危险情况较好地分辨出来,所以需要在真实数据的基础上构造符合实际情况的负样本。为了模拟真实情况并测试不平衡样本训练效果,最终构造的数据集中“安全”样本和“危险”样本的占比差距较大,约为14∶1。
该实验共构造了1 000 条数据,将其随机划分为训练集和测试集,其中80%作为训练集,20%作为测试集,且训练集与测试集各类样本占比基本一致。测试集里“安全”样本为159 个,“风险”样本为29 个,“危险”样本为12 个,为不平衡样本。
分别使用ID3 算法及CART 算法构造决策树。首先利用十折交叉验证和网格搜索对“max_depth”(树的最大深度)、“min_samples_split”(分割节点所需的最小样本数)、“min_samples_leaf”(叶子节点所需的最小样本数)、“max_leaf_nodes”(最大叶子节点数)4 个参数基于训练集准确率进行调优,得到最优参数后用于训练决策树,并将加权决策树(由“W-”表示)与一般决策树的训练效果进行比较。对于随机森林算法来说,还需要对参数“n_estimators”(生成树的数量)进行训练,并将基于一般决策树和加权决策树的随机森林进行了对比,训练结果如表2 和表3所示。
表2 模型准确率
表3 测试集其他指标
图3 为使用ID3 算法构造的决策树,使用CART算法构造的决策树限于篇幅不做展示,图4 为两个算法在测试集上分类结果的混淆矩阵。
图3 调度指令风险评估决策树(ID3算法)
图4 调度指令风险评估混淆矩阵
从以上的评估指标可以看出,两种算法训练出的决策树在测试集上表现良好,对于一般决策树,基于CART 算法的决策树性能优于基于ID3 算法的决策树,而随机森林算法的性能又优于上面两者,这主要体现在“风险”类别样本的召回率上,其余指标的提升相对较小,而该指标由65.5%(ID3)提升至72.4%(CART),然后继续提升至82.8%(ID3-RF),但CART-RF 模型的该指标有所下降,这说明在随机挑选特征生成决策树的情况下,ID3 算法的鲁棒性较好。CART 算法优于ID3 算法的原因是,根据式(1)-(3),其信息增益明显倾向于取值较多的特征,而CART 算法则没有这个问题;随机森林算法由于采用了多棵决策树的集成算法,其精度要大于单棵决策树,且由于随机性的引入,加强了它的抗过拟合能力和抗噪声能力。
对于加权决策树,明显可以看出“危险”样本的召回率都为100%,也就是说所有的“危险”样本都被分类正确。从图4 所示的调度指令风险评估混淆矩阵可以看出,通过1.4 节所述的代价敏感方法,加权决策树以将一个“风险”样本误分为“危险”样本为代价,保证了“危险”样本全部被正确分类。这也是希望的结果,因为一旦将“危险”操作判定为“风险”或“安全”,将可能因误操作导致严重后果。
该文提出了基于加权决策树算法的调度指令风险评估方法,利用真实系统中的海量电力数据,进行数据清洗、特征选择和标准化处理,对调度指令进行多维指令画像,并构建了调度指令专家知识库,通过训练加权决策树模型寻找合适的调度指令风险评估规则,实现了良好的分类评估准确率,可以为调度人员提供高效可靠的辅助决策信息。与文献[5-9]所使用的方法相比,该文利用机器学习技术从电力数据中自动寻找调度指令风险评估规则,省去了场景建模和指标建立的过程,克服了对海量电力数据的特征工程、训练模型的选择和参数优化等难点,并针对真实电力系统中样本不平衡的情况进行了优化,降低了高危样本被错分的概率。
但从实验结果来看,其分类准确率还有提升的空间,这与数据处理和模型选择都存在一定关系,而且该文对于电网拓扑结构改变需要重新训练模型这一问题尚未解决,后续研究将通过优化指令画像方法和使用增量学习技术,以解决上述问题。