基于分阶段离群点检测的电力市场异常辨识
2021-04-29谢敬东卢浩哲陆池鑫黄溪滢鲁思薇
谢敬东, 卢浩哲, 陆池鑫, 黄溪滢, 鲁思薇
(1.上海电力大学能源电力科创中心, 上海 200082; 2.长沙理工大学电气与信息工程学院, 长沙 410114)
中共中央、国务院《关于进一步深化电力体制改革的若干意见》(中发〔2015〕9号)[1]及其配套相关文件颁布以来,新一轮电力市场化建设全面提速,取得了许多积极进展,但随之而来的是电力市场风险急剧加大。由于中国电力市场的主体相对集中,市场主体法规意识相对薄弱,市场监管制度尚不健全,市场力风险成为中国电力市场的主要风险,呈现出形式多、防范难、监管难、影响大的特点,大大增加了电力市场建设的难度。而伴随着市场力产生的一系列违规行为或许是全球电力监管机构所面临的最具争议性和复杂性的难题[2-4]。因此,通过研究异常行为的辨识方法对交易过程中可能存在的违规行为进行挖掘是市场环境下的电力监管机构共同关注且迫切需要研究的重点方向。
针对电力市场中的违规行为问题,中外学者已提出了一些识别方法和防范措施。文献[5-7]构建了判断发电侧市场力使用状况的监管指标体系。文献[8]构建了电力市场交易全过程的违规行为识别框架。文献[9-11]分别采用博弈论、遗传算法和联合进化优化法对单个发电商是否参与串谋行为进行了判定。文献[12]利用计量经济学的方法分析了英国两大发电公司之间的串谋报价行为。但这些研究存在以下问题与不足:一是只注重建立市场监管指标,却没有具体阐述如何使用指标识别异常交易行为;二是对市场模型进行了大量简化,并且关注的对象仅为少量市场成员,而对于处理实际市场运营产生的大规模数据集的研究却很少。
相较于上述异常行为辨识的方法,基于无监督学习的异常检测算法具有更好的应用前景。由于无监督异常检测算法在训练时只需要依靠没有数据标签的数据,就可以利用数据的整体特性得出较为准确的划分异常的规则[13-15]。因此此类方法更适应用于电力市场这种标签数据往往难以获取,或获取成本极高的大数据场景。离群点检测是一种基于无监督学习的方法,在前人研究的基础之上,现结合电力市场运营数据集的特点对普通的离群点检测算法进行改进,提出一种基于分阶段的离群点检测算法,并将其应用于电力市场的异常行为辨识中。首先对市场中的异常行为进行分析与梳理,然后阐述异常行为辨识的具体操作流程,最后使用算例对该方法进行验证。
1 异常行为分析与描述
1.1 异常行为分析
1.1.1 市场串谋
“串谋”这一概念源自经济学,指企业之间为了获得超额利润而采取的协调行为,这种行为一般是通过相互之间进行商讨、签订协议和支付暗盘来形成和维持,如众所周知的托拉斯和卡特尔[16]。电力市场中的市场串谋是指两个及以上不具有实际控制关系的市场主体通过串通报价等方式协调其相互竞争关系,从而使共同利润最大化的行为。市场串谋一般可分为价格同盟型与轮流坐庄型。价格同盟型指企业间相同串通,就申报价格达成协议,共同哄抬申报价格,最直接的表现就是报价曲线相似,且申报价格高于其他非串谋成员;轮流坐庄型则指企业之间根据未来的发电计划预先规划,通过相互约定提前确定每次各企业的中标电量。
1.1.2 容量持留
容量持留本质上是一种行使市场力的行为,主要形式有物理持留和经济持留。物理持留指发电企业故意限制自身发电能力,从而减少市场有效供应、提高市场价格;经济持留指发电企业对部分机组故意进行高报价,从而抬高同类其他机组的整体收益。发电企业进行容量持留时最直接的表现形式有无故降低机组出力、谎报机组设备检修或延长检修时间、频繁以接近申报价格上限的价格进行市场申报等。
1.1.3 极端报价
极端报价指发电公司在以机组为单位进行市场申报时,频繁以超过同类机组和自身历史报价水平进行申报的行为。这种报价方式抬高了市场出清价格,使发电主体获得超额利润,严重扰乱了市场秩序。例如在东北电力市场就曾经出现发电企业利用断面阻塞进行极端报价,连续多月在月度竞价中以市场最高限价成交,严重阻碍了电力市场化改革和电力资源的优化配置。
1.1.4 “跳高”行为
“跳高”行为是发电公司采用的一种报价策略,表现为在中低容量段报较低价格,而在高容量段用小部分电量报高价,但这少部分的电量却可以影响到整个市场的价格。此时市场供给曲线的形状为:在中前部有很长一段的趋0报价,但在尾部迅速上抬,形成俗称的“跳高曲线”。“跳高”行为在本质上属于市场成员的投机交易行为,破坏了市场的有序竞争。
1.2 异常行为特征描述
为了有效实现电力市场异常交易行为的判别和监视,综合考虑全面性原则、准确性原则,筛选市场主体的申报信息及成交信息,提取异常行为的特征值并建立特征集,特征集如表1所示。
表1 异常行为特征集Table 1 Abnormal behavior feature set
1.2.1 加权平均报价
由于电力市场以中长期差价合同管理市场风险,使得机组在报价时为保证中长期合约电量能顺利成交通常对该部分电量申报接近0价。为了达到准确分析机组报价行为的目的,应关注合约电量后的申报数据。加权平均报价的计算公式为
(1)
1.2.2 中标率
(2)
式(2)中: WR为机组的中标率;Qwr为中标电量;Qbid为申报总量。
1.2.3 持留比率
(3)
式(3)中:HR为机组的持留比率;Qmax为机组的最大发电量。
1.2.4 高报价比率
(4)
式(4)中:HB为机组的高报价比率;Qlim为申报价格接近上限的电量。
1.2.5 动态市场份额
(5)
1.3 特征指标提取
异常行为特征集可以反映部分的市场异常行为,但在实际监测过程中却存在着各方面的不足。因此结合电力市场运营的实际情况提出基于异常行为特征集的波动性指标、趋势指标、变动性指标及综合指标[17],并根据指标在一次完整交易过程中可获取的时间点将提取的特征指标分为申报阶段类及成交阶段类。在T个交易日内,特征集的分类及特征提取如表2所示。
表2 异常行为特征指标Table 2 Indicators of abnormal behavior
1.4 特征集降维
由于提取的特征指标数量过多,特征的重叠会夸大某一因素的影响程度,影响目标对象特征描述的准确性,为了提高异常检测的效率,需要消除原始特征指标间的信息重叠。目前统计学中进行消除指标间信息重叠的主要方法有回归分析法、主成分分析法、因子分析法。文献[19]证明在解决此类问题中,主成分分析法的效果优于其他方法,故使用主成分分析法。
在对申报阶段与交易阶段的特征指标分别进行降维后,取其前两个主成分将机组以散点的形式映射到二维平面,然后使用离群点算法进行异常检测。
2 异常交易辨识方法原理及实现流程
2.1 局部离群因子算法
Breuning等学者在基于密度的聚类算法与异常度监测结合的基础上提出了局部离群因子(local outlier factor,LOF)的概念[20]。LOF是样本中每个采样点相于其领域密度差异的一种衡量量度, 用来评价采样点的离群程度,由离群程度的大小来分离样本中的离群点。下面给出解释LOF算法的必要定义。
定义1 数据点的距离d(p,o)。
在样本数据D中,任意两个数据点p、点o之间的距离d(p,o)采用欧式计算方法。设点p和点o用坐标表示为p(xi,yi)、o(xj,yj),则点p和点o的欧式距离为
(6)
定义2 点p的k-距离[k-dist(p)]。
对于点p(xi,yi),k-距离定义为与点p距离最近的k个点的最大距离,k为正实数。
定义3 点p的k-距离邻域[Nk-dist(p)]。
对于点p(xi,yi),k-距离领域定义为所有与点p的距离不超过k-距离的对象的集合,即
Nk-dist(p)={q∈D{p}|d(p,q)≤k-dist(p)}
(7)
式(7)中:符号为不包括某一数据点;q为在样本数据D中除去p之外的其他数据点。
根据定义2和定义3,当k=6时,点o的k-距离及k-距离领域如图1所示,点o的k-距离为虚线圆的半径,而k-距离领域为该虚线圆中除点o外的6个点。
图1 距离领域的示意图Fig.1 Schematic diagram for the distance neighborhood
定义4 可达距离
对于点p(xi,yi)、点o(xj,yj),关于点o的可达距离为reach-distk(p,o)=max{k-dist(o),d(p,o)}。即点p到点o的可达距离至少是点o的第k距离,因此reach-distk(p,o)=reach-distk(o,p)。
根据定义4,当k=6时,点o的可达距离如图2所示,点o的k-距离是虚线圆的半径。对于点p1,由于它到点o的距离小于点o的k-距离,因此点o关于点p1的可达距离为点o的k-距离。对于点p2,由于它到点o的距离大于点o的k-距离,因此点o关于点p1的可达距离为d(p2,o)。
图2 可达距离的示意图Fig.2 Schematic diagram for the reachability distance
定义5 局部可达密度。对于点p(xi,yi)、点o(xj,yj),局部可达密度为
(8)
式(8)中:|Nk-dist(p)|为p的k-距离领域内所包含的数据点的个数。
定义6 局部离群因子。点p的局部离群因子定义为
(9)
点p的局部离群因子值与其是否为离群点的可能性是成正比的,局部离群值越大则该点越有可能是离群点。对于均匀分布的数据集,各点的离群因子值在1的附近。对于电力市场数据集中的离群点,因其局部密度远远小于其领域点的密度,使得其离群因子值较大,故可通过机组的离群因子值的大小分辨是否为离群点。
2.2 改进k-距离的局部离群因子算法
由于Nk-dist(p)是数据集中所有到一个点的距离小于该点的k-领域距离的点,如果离群对象在数据集中彼此非常靠近形成了一小簇的离群对象,同时k-距离取值过小可能会导致算法错误把这一簇离群点识别为正常点。含有离群簇的数据集如图3所示,离群簇为X符号区域。另外,由于k-距离用于计算每个点的局部可达密度值,如果k-距离取值过大可能会导致算法的运行时间过长。为了在不降低算法效率的情况下提高算法的准确率,修正k-距离局部离群因子(revisek-dist local outlier factor,RKLOF)算法先对k-距离进行改进,然后再计算对象的离群程度。
图3 离群簇的示意图Fig.3 Example of a dataset with clusters of outliers
RKLOF算法的主要思想是结合邻近算法,通过找出一个样本的若干个最近邻居,将样本与这些邻居的距离的平均值作为该样本的距离领域的半径,然后再使用新的距离领域计算该样本的局部离群因子,下面给出改进算法的后续定义。
定义7 点p的v-距离v-dist(p)。在给定正实数k下,点p(xi,yi)的v-距离定义为数据集中距离点p最近的k个点与点p的距离的均值,即
(10)
使用v-distk(p)替换k-distk(p)可以得到点p在v-distk(p)下的v-距离领域,点p对点o的v可达距离reach-distv(p,o)及局部可达密度lrdv(p)。
定义8 同理,点p在v-distk(p)下局部离群因子为
(11)
式(11)中:|Nv-dist(p)|为p的v-距离领域内所包含的数据点的个数。
综上所述,RKLOF算法可以分为以下几个步骤。
(1)读入数据,建立数据集。
(2)计算每个点的v-distk(p),并用其代替LOF算法中的k-distk(p)。
(3)计算点p在v-distk(p)下的v-距离领域,reach-distv(p,o)及局部可达密度lrdv(p),最后算出点p在给定k下的改进局部离群因子值RKLOFk(p)。
2.3 基于长协电量的市场成员分类
发电公司的报价策略及机组类型导致了申报数据的差异,这使交易结果也产生了较大差异。因此,某一类机组的正常交易行为可能与另一类机组的异常交易行为相似。为了降低算法的误判率,可先对机组进行分类,再对每一类机组分别进行异常检测。
通过对美国PJM、CAISO和ERCOT等大型电力市场数据分析可知,中长期双边长协市场,日前市场和实时市场所占电量大约是0.7∶0.25∶0.05[21],故根据中长期双边长协电量是否大于机组发电量的0.7,将机组分为两类。一类为报价“激进”型机组,由于在中长期市场中获得较多的长协电量,此类机组在日前市场中继续报高价竞争最后一部分电量,可获取更大的利润;另一类为报价“保守”型机组,其在中长期市场中获得长协电量较少,此类机组在日前市场中报较低的价格可保证足够的发电量,从而提高机组效率降低平均发电成本[22]。
2.4 分阶段跟踪的异常交易辨识方法
由于电力市场所产生的数据集不同于其他数据集,在市场的运营过程中会产生海量的大数据,并且具备较高的维度。这要求电力市场的异常行为辨识算法需要在保证效率性的基础上具备对高维数据的处理能力。如果单阶段地对数据集中进行异常检测,那么则需要对数据集中的所有数据同时进行运算。这通常会导致数据集中的特征量急剧地增大,使得距离函数失效,还可能出现维数灾的情况。因此,单阶段的异常行为辨识方法在检测的准确性方面有所欠缺。
为了解决该问题实现在不影响异常检测算法效率的前提下提高算法的准确率,提出了分阶段跟踪的异常交易辨识方法。该方法先对电力市场的申报阶段的数据进行异常检测,若机组在申报阶段存在交易异常行为,则在成交阶段对这些机组进行跟踪检测。提出的基于RKLOF算法的分阶段异常交易行为辨识方法的实现流程如图4所示。
图4 基于RKLOF的分阶段异常行为辨识流程图Fig.4 Flow chart of phased abnormal behavior identification method
3 实例验证
采用中国某区域电力市场仿真系统10 d的数据作为数据集。数据集包含170台发电机组在日前电力市场的交易数据,采样时间为每天00:00—24:00,采样间隔为15 min,每天采样16 320条数据。实验的硬件环境:CPU为Inter Core 2.3 GHz, 内存为8 G;软件环境:操作系统为Windows 10,实验程序使用python编写, 开发环境为PyCharm CE version 2019.2。通过实验对提出的电力市场异常交易行为辨识方法的有效性及RKLOF算法的性能进行分析。
3.1 市场成员分类及交易特征提取
3.1.1 市场成员分类
根据发电机组的中长期市场合约电量是否大于机组发电量的0.7将机组分为两类,并分别绘出不同类型机组的申报曲线,如图5、图6所示。可以看出分类结果与理论结果基本符合,“保守”型机组的申报曲线明显集中在低价区域,而“激进”型机组的申报曲线明显集中在高价区域。
图5 “保守”型机组申报曲线Fig.5 The bid curve of the "conservative" unit
图6 “激进”型机组申报曲线Fig.6 The bid curve of the "aggressive" unit
3.1.2 异常行为特征指标提取及主成分分析
基于交易数据的特征类型与异常行为特征集,分别构造11个申报阶段的异常行为特征指标及11个成交阶段的异常行为特征指标,如表3所示。在特征指标提取后,分别对其进行主成分分析,提取贡献率最大的前两个主成分作为横纵坐标轴,将发电机组在申报阶段的行为及成交阶段的结果以散点图的形式映射到二维平面上,然后使用离群点检测算法进行异常点的识别。各主成分及其累计贡献率如表4所示,可以看出各阶段的前两个主成分的累积贡献率都较大,可以代表机组的行为。
表3 异常行为特征指标提取Table 3 Extraction of abnormal behavior indicators
表4 主成分及贡献率Table 4 Principal component and contribution rate
3.2 度量标准
在评估离群点检测算法性能时,本文采用的度量标准是准确率P(precision)、召回率R(recall)及F值(F-Measure)。假设L1是检测出的离群点集合,L2是所有离群点的集合,3个标准的计算公式为
(12)
(13)
在本例中,准确率即辨识出的有异常行为的机组有多少是准确的,召回率即所有有异常行为的机组有多少被辨识出来。
(14)
式(14)中:β为反映准确率和召回率相对重要的权值,若β<1,则准确率的重要性大于召回率。既要保证尽可能多的发现有异常行为的机组,又要保证异常辨识结果的准确性,因此将β设为1。
3.3 异常检测结果分析
在本节中,将对基于LOF的单阶段异常行为辨识方法、基于RKLOF的单阶段异常行为辨识方法、基于LOF的分阶段异常行为辨识方法及基于RKLOF的分阶段异常行为辨识方法进行对比。首先比较在数据集大小改变时,不同方法的计算时间,如图7所示。
由图7可知,随着数据集规模的增大,分阶段辨识方法的计算速度比单阶段辨识方法更快。基于RKLOF算法的单阶段辨识方法的计算速度快于基于LOF算法的单阶段辨识方法,而都使用了分阶段辨识方法的RKLOF算法与LOF算法的计算速度相差不多。
图7 不同数据集规模下的运行时间对比图Fig.7 Computation time of different methods for datasets of different scale
图8绘出了随着k取值的变化各方法的F值。可以看出分阶段辨识方法的F值总体大于单阶段辨识方法,在k取较小时即可达到最优效果,并且随着k的变化波动较小。
图8 F值与参数k的关系Fig.8 Relationship between F and parameter k
当k取各方法的最优值时,各度量标准的对比如表5所示。可以看出基于RKLOF算法的分阶段辨识方法的准确率P、召回率R及F都优于其他方法。
表5 多个方法的不同度量标准比较Table 5 Comparison of the effects of methods
图9、图10为对机组进行预分类后分别使用基于LOF与RKLOF的分阶段异常辨识方法进行检测的结果,图11为未对机组进行预分类,而使用基于RKLOF分阶段异常辨识方法进行检测的结果。
对比图9、图10可以发现,由于RKLOF对k-距离进行了优化,使用样本与邻居的距离的平均值作为该样本的距离领域的半径,加大了离群簇中的离群点的离群因子密度,克服了LOF的k-距离的不足,可以有效地检测出形成离群簇的离群点,如图9与图10中的U区域所示。
图9 基于LOF算法的分阶段检测结果(预先对机组进行分类)Fig.9 The pre-classified detection result of the LOF-based phased method
由于在电力市场的交易过程中某一类机组的异常行为可能与另一类机组的正常行为相似,因此此类机组的离群因子密度较小,不能有效地被离群因子算法直接检测出。而在对机组进行预先分类后便可以更有效地检测出这些离群因子密度较低的异常机组。如图10与图11的J区域所示。
图10 基于RKLOF算法的分阶段检测结果(预先对机组进行分类)Fig.10 The pre-classified detection result of the RKLOF-based phased method
图11 基于RKLOF的分阶段检测结果(未对机组进行预分类)Fig.11 The detection result of the RKLOF-based phased method (without unit’s pre-classified)
4 结论
针对电力市场环境中出现的各种异常交易行为提出了一种基于分阶段离群点检测的电力市场异常行为辨识方法。得到了以下结论。
(1)将LOF中的k-距离改进v-距离后的 RKLOF 算法可以有效地发现形成离群簇的离群点,提高算法的准确率。
(2)与直接对机组进行异常检测相比,事先将机组进行预分类后再进行检测可以检测出离群因子密度较低的异常机组。
(3)通过分阶段地进行异常检测不仅可以提高算法的效率与准确率,还可以减小参数对检测效果的影响程度。
仅找出了有可能有违规行为的异常机组,后续将对异常机组的行为进行进一步的分析。其次,在市场主体成员的不断博弈过程中,还可能产生其他违规形式,因此还应继续完善异常行为的特征集,从而提高异常交易行为辨识的准确率。此外,仅进行了发电侧的交易异常行为辨识,后续还将继续研究将该算法应用售电侧的异常辨识中。