張哲敏,李琪林,嚴(yán) 平,成貴學(xué)
(1.上海電力大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 200090;2.四川省電力公司計(jì)量中心,四川 成都 610045)
如今,隨著智能電網(wǎng)的發(fā)展,電力系統(tǒng)中產(chǎn)生的數(shù)據(jù)量也不斷增多。但安裝在發(fā)電、輸電、配電、用電各個環(huán)節(jié)各種類型的計(jì)量裝置和系統(tǒng),由于外部干擾等原因,會不可避免地出現(xiàn)異常數(shù)據(jù),及時有效地檢測出異常數(shù)據(jù)能夠保障電力系統(tǒng)的穩(wěn)定性和安全性。各種離群點(diǎn)檢測算法能夠檢測出那些與正常數(shù)據(jù)行為或特征屬性差別較大的異常數(shù)據(jù)或行為,有利于降低安全風(fēng)險(xiǎn),減少經(jīng)濟(jì)損失。
目前,已經(jīng)有一些文獻(xiàn)研究了電力數(shù)據(jù)領(lǐng)域的異常值檢測算法。它們可以大致分為基于距離的異常值檢測、基于密度的異常值檢測和基于聚類的異常值檢測等?;诰嚯x的異常值檢測方法由EM Knorr、RT NG[1]等人在20世紀(jì)末提出,該方法認(rèn)為與大多數(shù)樣本的距離都大于某個固定閾值的點(diǎn)就是異常值點(diǎn)。但這種方法不能判斷含有密度不同的多個類簇的數(shù)據(jù)集?;诿芏鹊漠惓V禉z測的原理認(rèn)為正常樣本點(diǎn)所處的類簇密度要高于異常點(diǎn)樣本所處的類簇密度。最具有代表性的是基于局部異常因子(local outlier faction, LOF)的異常值檢測方法[2]?;诰垲惖漠惓z測其目標(biāo)是將數(shù)據(jù)點(diǎn)按照一定的規(guī)則劃分到某一類中,而異常值檢測的目標(biāo)不屬于任何簇的樣本點(diǎn)k均值聚類算法,據(jù)此與正常樣本點(diǎn)進(jìn)行區(qū)別。目前,主要的基于聚類的異常值檢測k均值聚類算法采用k-means和DBSCAN(density-based spatial clustering of applications with noise)算法進(jìn)行聚類[3-4]。文獻(xiàn)[5]針對傳統(tǒng)電量數(shù)據(jù)異常檢測方法的不足,提出了一種基于三次指數(shù)平滑模型和DBSCAN聚類的電量數(shù)據(jù)異常檢測方法。文獻(xiàn)[6]采用一種基于孤立森林的異常檢測算法,實(shí)現(xiàn)大規(guī)模電能量數(shù)據(jù)的異常檢測。文獻(xiàn)[7]將DBSCAN和LOF算法相結(jié)合,即KDBLOF,將k近鄰(k-nearest neighbors,KNN)思想引入到DBSCAN中,解決了原DBSCAN參數(shù)確定困難的問題。
電力數(shù)據(jù)經(jīng)采集后會將所有數(shù)據(jù)上傳至集中式數(shù)據(jù)中心,再使用異常值檢測算法做數(shù)據(jù)清洗,其中異常數(shù)據(jù)的傳輸會造成大量的帶寬浪費(fèi)。在邊緣端進(jìn)行異常值檢測,可以減少異常數(shù)據(jù)傳輸,節(jié)省帶寬資源。但邊緣端一般不具備較高計(jì)算能力的計(jì)算處理單元,所以需要復(fù)雜度低的算法。
基于密度峰值的快速聚類(clustering by fast search and find of density peaks,CFSFDP)算法是Alex Rodriguez[8]在2014年于《Science》上提出的一種快速尋找聚類中心的聚類算法,具有簡潔、高效、參數(shù)少的特點(diǎn),十分適合在邊緣計(jì)算平臺中使用。目前,已有不少研究將該算法應(yīng)用于電力數(shù)據(jù)異常檢測。文獻(xiàn)[9]利用 KNN思想重新定義局部密度和距離,將CFSFDP用于電力大數(shù)據(jù)的異常值檢測,但該方法需要人為設(shè)置經(jīng)驗(yàn)參數(shù),不具有普適性。文獻(xiàn)[10]采用LOF算法和CFSFDP算法相結(jié)合的聚類算法進(jìn)行電力數(shù)據(jù)異常值檢測,彌補(bǔ)了CFSFDP算法對于局部密度變化大的數(shù)據(jù)識別能力弱的缺點(diǎn);但該方法是通過人工選擇決策圖來實(shí)現(xiàn)聚類中心選取,存在主觀因素的影響。
下面將CFSFDP算法應(yīng)用于電力數(shù)據(jù)的異常檢測,并提出了一種異常點(diǎn)的選擇策略來實(shí)現(xiàn)異常點(diǎn)的自動選擇。所提方法避免了原算法需要通過決策圖人工輸入來實(shí)現(xiàn)聚類,再從聚類后的數(shù)據(jù)中尋找異常點(diǎn)的繁瑣步驟,降低了算法的冗余性并提高了尋找異常值的效率。
CFSFDP算法在所提方法中主要基于兩個重要的假設(shè)思想:一是假設(shè)聚類中心相較于其他的樣本點(diǎn)局部密度較高,且被局部密度較低的點(diǎn)包圍;二是假設(shè)各類簇聚類中心之間的距離較遠(yuǎn)。為了實(shí)現(xiàn)這2種假設(shè),定義了兩種度量方法。
第一個定義是每個點(diǎn)的局部密度,對于每個點(diǎn)i,它的局部密度ρ(i)的表示有2種方法,其中:式(1)為截止距離法;式(2)為核距離方法,適用于數(shù)據(jù)量較小的數(shù)據(jù)樣本。
第二個定義是每個點(diǎn)距離高密度點(diǎn)的距離。對于每個點(diǎn)i,它距離高密度點(diǎn)的距離δ(i)的定義公式為
根據(jù)定義,只有局部密度較大或者全局最大的點(diǎn),δ(i)才能夠足夠大。
CFSFDP算法計(jì)算局部密度ρ和更高密度距離δ,將數(shù)據(jù)集映射成二維圖并構(gòu)造一個決策圖(如圖1所示)。在決策圖中,ρ和δ都很大的點(diǎn)(靠右靠上的點(diǎn))即為聚類中心。在選擇聚類中心后,再將剩余點(diǎn)分配給距離最近的聚類中心完成聚類。
圖1 CFSFDP算法決策
CFSFDP算法能夠在不確定聚類數(shù)目時快速地找到聚類中心,但只適用于特定結(jié)構(gòu)的數(shù)據(jù)集。對于一些稀疏的數(shù)據(jù)集,如果經(jīng)驗(yàn)參數(shù)設(shè)置不當(dāng),可能會取得較差的效果。此外,由于選取聚類中心時采用人為框圖框選聚類中心的方式,存在主觀因素,不同的選取會得到不同的結(jié)果,增加了算法冗余性的同時也不利于實(shí)現(xiàn)算法的批量自動化應(yīng)用。
根據(jù)CFSFDP算法提出的假設(shè),從異常值檢測的角度來看,可以認(rèn)為局部密度較低且距離高密度點(diǎn)較遠(yuǎn)的樣本點(diǎn)為異常值點(diǎn)。雖然異常值點(diǎn)距離密度較高的點(diǎn)的距離較正常樣本點(diǎn)遠(yuǎn),但聚類中心之間的距離同樣也很遠(yuǎn)。如果此時該聚類中心的局部密度不夠大,很有可能在人工選擇異常值時出現(xiàn)將聚類中心誤劃分為異常值的情況。對此,引入了一個離群值的概念,將樣本點(diǎn)的異常度進(jìn)行量化,方便進(jìn)行異常值的選擇。
對于每個點(diǎn)i,它的離群值λi的定義公式為
當(dāng)點(diǎn)i的局部密度ρi等于0時,此時離群值λi為無窮大,可以直接定義點(diǎn)i為異常值點(diǎn)。其他情況下,λi越高,點(diǎn)i成為異常值點(diǎn)的概率越大。
通過離群值的定義,為了找出異常值點(diǎn),可以將離群值大于一定標(biāo)準(zhǔn)的點(diǎn)定義為異常值點(diǎn)。但該標(biāo)準(zhǔn)通常為人工指定,仍然存在主觀因素的影響,所以制定了以下策略來實(shí)現(xiàn)異常值點(diǎn)的自動選取。
將所有樣本點(diǎn)按照離群值進(jìn)行降序排列,取出前m%的點(diǎn)得到離群值排列圖,如圖2所示??梢钥闯?,雖然離群值整體呈現(xiàn)下降趨勢,但下降的程度有所不同,前面下降得快,后面下降得慢。即前半部分離群值相差大、不穩(wěn)定,可以認(rèn)為是異常值點(diǎn);后半部分因?yàn)橼呄蚍€(wěn)定,離群值下降緩慢,可以認(rèn)為是正常點(diǎn)。在下降程度發(fā)生最大變化的點(diǎn)是離群值總體下降由急變緩的拐點(diǎn)。拐點(diǎn)前的是異常值點(diǎn),拐點(diǎn)后的是正常樣本點(diǎn)。
圖2 離群值降序排列
當(dāng)表示下降趨勢時,可以采用斜率進(jìn)行表示,即
式中,ki,m表示區(qū)間[i,i+m]內(nèi)的離群值λ變化率,該參數(shù)描述了這一區(qū)間λ的總體變化趨勢。
對于某點(diǎn)前后下降趨勢,可以用與前一點(diǎn)線段的斜率和后一點(diǎn)線段的斜率的比值來表示。
第一個點(diǎn)的下降趨勢默認(rèn)為0,且當(dāng)該點(diǎn)的離群值與后一點(diǎn)相同時,該點(diǎn)的變化趨勢與前一點(diǎn)相同。計(jì)算所有點(diǎn)的變化趨勢比值,繪制出圖3所示的變化率趨勢圖。拐點(diǎn)為使變化率k取得最大值時的點(diǎn)。
圖3 變化率趨勢
得到拐點(diǎn)后,可將拐點(diǎn)前的所有點(diǎn),視為異常值點(diǎn),使用CFSFDP算法尋找異常值點(diǎn)的具體步驟如下:
1)根據(jù)dc確定每一個點(diǎn)的局部密度ρi和距離δi。 2)計(jì)算每個點(diǎn)的離群值λi并從高到低排序。
3)取樣本點(diǎn)前m%的點(diǎn)計(jì)算變化趨勢ki。m為經(jīng)驗(yàn)參數(shù),一般選擇5%~10%。
4)取使k取得最大值的拐點(diǎn)x。
5)挑選出拐點(diǎn)之前的點(diǎn){1,2…,x}作為異常值點(diǎn)。
采用2017年1月至10月某公司的日用電數(shù)據(jù)作為研究對現(xiàn)象,采樣間隔為15 min。用戶日用電數(shù)據(jù)作為電力數(shù)據(jù)的一種,經(jīng)常因?yàn)殡娔鼙砉收虾蛡鬏敭惓5仍颍斐缮蟼鲾?shù)據(jù)存在異常。但在電力數(shù)據(jù)的異常值檢測場景中,異常值所占比例遠(yuǎn)低于正常對象。因此,只提取了數(shù)據(jù)集中的部分?jǐn)?shù)據(jù),使得最終實(shí)驗(yàn)數(shù)據(jù)中異常值與正常值的比值滿足異常值檢測的一般要求。并且,為了衡量用電數(shù)據(jù)異常檢測算法的有效性,采用的數(shù)據(jù)提前進(jìn)行了人工標(biāo)注,即異常數(shù)據(jù)已經(jīng)被標(biāo)識,方便檢驗(yàn)異常檢測算法的效果。
在預(yù)處理階段對數(shù)據(jù)進(jìn)行了降維和歸一化處理,是為了消除因?yàn)榱烤V不同和數(shù)量級差距所帶來的影響,且可以加快算法的識別速度。按照式(7)對數(shù)據(jù)進(jìn)行歸一化處理。
(7)
為了評估基于CFSFDP尋找異常值算法的性能,與DBSCAN直接檢測異常值、局部異常因子LOF算法進(jìn)行了對比試驗(yàn)。DBSCAN直接檢測異常值是先對數(shù)據(jù)進(jìn)行聚類,獲得不同的類簇;然后求取各個類簇聚類中心間的距離,如果距離過大則認(rèn)為是異常用電數(shù)據(jù)。這里設(shè)置DBSCAN的參數(shù)ρ為0.2。
將算法檢測出的異常值與數(shù)據(jù)樣本的真實(shí)標(biāo)簽作對比,計(jì)算并選取檢測率(detection rate)和誤檢率(false positive rate)作為算法評價(jià)標(biāo)準(zhǔn),檢測率和誤檢率的計(jì)算公式如下:
(8)
(9)
檢測率和誤檢率的實(shí)驗(yàn)結(jié)果如圖4、圖5所示。由圖可以看出:1)基于CFSFDP算法的異常檢測在檢測異常值時總體檢測率較高,誤檢率較低,明顯優(yōu)于直接利用DBSCAN算法檢測異常值和利用局部異常因子算法LOF檢測異常值;2)對于不同月份的檢測樣本,直接利用DBSCAN算法的異常檢測算法的檢測率和誤檢率不同且波動較大,這是因?yàn)樗惴▽Σ煌瑪?shù)據(jù)樣本具有獨(dú)特性,DBSCAN只適用于部分樣本。相對地,基于CFSFDP算法的異常檢測就具有較好的適應(yīng)性,對于不同月份的數(shù)據(jù)都能維持一個很高的檢測率和很低的誤檢率,變化不大。其中部分月份檢測率較其他月份有所降低,原因?yàn)樵撛缕骄秒娏枯^其他月份有差別,需要提取更多該月樣本進(jìn)行單獨(dú)檢測。
圖4 檢測率實(shí)驗(yàn)結(jié)果
圖5 誤檢率實(shí)驗(yàn)結(jié)果
同時,基于CFSFDP算法的異常檢測還具有快速查找異常值的特點(diǎn)。在實(shí)驗(yàn)內(nèi)存為8 GB、CPU為1.6 Hz的運(yùn)行條件下,3種算法的計(jì)算耗時如表1所示。
表1 3種算法的計(jì)算時間
從表1可以看出,基于CFSFDP算法的異常檢測運(yùn)行時間是比其他兩種算法都要短。這不僅證明了基于CFSFDP算法的異常檢測可以減少計(jì)算量,具有快速找到異常值的特點(diǎn),而且證明了其對大規(guī)模數(shù)據(jù)集具有更好的適應(yīng)性。
綜上,所提出的基于CFSFDP算法的異常檢測同時具有檢測率高、誤檢率低和運(yùn)行時間少的特點(diǎn)。在電力生產(chǎn)、調(diào)度和決策過程中,可以起到良好的監(jiān)督防范作用。在用戶防竊電方面也能為電力企業(yè)提供有力的依據(jù),能夠更好地為電力生產(chǎn)和電力繳費(fèi)服務(wù)。
上面對于電力數(shù)據(jù)的異常檢測問題進(jìn)行了研究,提出了一種基于CFSFDP聚類算法的電力數(shù)據(jù)異常值檢測方法。該方法基于原本的密度峰值快速搜索算法提出的兩點(diǎn)有關(guān)于聚類中心的假設(shè),設(shè)立了離群值指標(biāo),在該指標(biāo)的判斷下尋找異常值點(diǎn),實(shí)現(xiàn)了異常值點(diǎn)的快速尋找。同時根據(jù)離群值下降趨勢,提出一種不需要進(jìn)行人工選擇的自動選擇異常值點(diǎn)的策略,避免了進(jìn)行人工選擇時主觀因素的影響。通過對比該方法與利用DBSCAN直接尋找異常值和利用局部異常因子LOF尋找異常值的方法,發(fā)現(xiàn)該方法能夠有效、快速地尋找出異常值點(diǎn),且該算法復(fù)雜度低,耗時短,適合作為邊緣設(shè)備檢測電力數(shù)據(jù)的算法。