王 浩馬 迅劉安磊賈旭超紀(jì)書軍駱云娟徐冬冬
(國網(wǎng)河北省電力有限公司電力科學(xué)研究院,石家莊 050021)
隨著科學(xué)技術(shù)的不斷發(fā)展,利用高科技進(jìn)行竊電的手段越來越普遍[1],比如強(qiáng)磁竊電、無線干擾竊電、更改電能表編程器竊電等。這些技術(shù)手段不但隱蔽性強(qiáng),而且不容易控制,用戶的竊電量大,查處難度非常大。
針對高科技竊電現(xiàn)象,有學(xué)者提出采用時域和頻域的曲線相似性分析方法,通過判斷用戶負(fù)荷曲線與異常饋線線損曲線之間的相似性來識別竊電行為;有學(xué)者提出根據(jù)“在一個數(shù)據(jù)集中,會出現(xiàn)偏離集群中其他數(shù)據(jù)的數(shù)據(jù)點(diǎn),若數(shù)據(jù)點(diǎn)的偏離程度較大,則懷疑形成這種偏離的原因不屬于集群內(nèi)部因素導(dǎo)致,而是外界干擾因素導(dǎo)致的這種不正常的現(xiàn)象”建立基于距離的離群點(diǎn)檢測方法檢測電壓、電流異常,進(jìn)而判斷用戶是否存在竊電行為;有的學(xué)者提出通過獲取智能電表數(shù)據(jù)和配電變壓器的數(shù)據(jù),構(gòu)建數(shù)據(jù)模型,進(jìn)而判斷用戶是否竊電[2]。上述判斷方法,主要根據(jù)用戶用電數(shù)據(jù)進(jìn)行異常判斷,判斷方式單調(diào),構(gòu)建的數(shù)據(jù)特征較少,導(dǎo)致數(shù)據(jù)挖掘的效率不高,數(shù)據(jù)價值沒有得到充分利用,所以分析效果并不理想。而基于機(jī)器學(xué)習(xí)算法構(gòu)建反竊電模型,從用戶用電數(shù)據(jù)、計量異常事件以及線損3個角度切入,多方位偵測用戶竊電行為,能夠有效地提高竊電檢測率,對構(gòu)建基于大數(shù)據(jù)的反竊電稽查監(jiān)控系統(tǒng)具有重要的社會和經(jīng)濟(jì)意義。
模型選用隨機(jī)森林算法是利用多棵樹對樣本進(jìn)行訓(xùn)練并預(yù)測的一種分類器。其反復(fù)二分?jǐn)?shù)據(jù)進(jìn)行分類或回歸,計算量大大降低。在變量(列)的使用和數(shù)據(jù)(行)的使用上進(jìn)行隨機(jī)化,生成很多分類樹,再匯總分類樹的結(jié)果。目前反竊電的特征中多數(shù)的特征無共同性,因竊電的形式可能多種,竊電用戶的數(shù)據(jù)不具備一定的共同性,隨機(jī)森林算法可以根據(jù)這些竊電用戶的特征以及非竊電用戶的特征,在子樹中對每一個分裂過程選擇部分特征,從所有特征中隨機(jī)選取一定的特征,之后再在隨機(jī)選取的特征中選取特征,每棵樹重復(fù)上述過程,最后投票選擇出最正確的分類。此模型可提升反竊電稽查監(jiān)控系統(tǒng)的多樣性,從而提升數(shù)據(jù)的可利用性和結(jié)果預(yù)測的正確性,同時防止過擬合。隨機(jī)森林算法可以在運(yùn)算量沒有顯著提高的前提下提高了預(yù)測精度,其原理如圖1所示。
圖1 隨機(jī)森林算法的原理
隨機(jī)森林算法是機(jī)器學(xué)習(xí)中的重要算法,在許多領(lǐng)域應(yīng)用[4]。隨機(jī)森林模型[5]是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數(shù)而定。在機(jī)器學(xué)習(xí)中,決策樹是一個預(yù)測模型,他代表的是對象屬性與對象值之間的一種映射關(guān)系。
在決策樹中每個節(jié)點(diǎn)表示某個對象,而每個分叉路徑則代表某個可能的屬性值,每個葉結(jié)點(diǎn)則對應(yīng)從根節(jié)點(diǎn)到該葉節(jié)點(diǎn)所經(jīng)歷的路徑所表示對象的值。隨機(jī)森林由多個決策樹構(gòu)成,每個決策樹都表述了一種樹型結(jié)構(gòu),由它的分支來對該類型的對象依靠屬性進(jìn)行分類。每個決策樹可以依靠對源數(shù)據(jù)庫的分割進(jìn)行數(shù)據(jù)測試,這個過程可以遞歸式的對樹進(jìn)行修剪。當(dāng)不能再進(jìn)行分割或一個單獨(dú)的類可以被應(yīng)用于某一分支時,遞歸過程完成。隨機(jī)森林分類器將許多決策樹結(jié)合起來可以提升分類的正確率[6]。具體的決策樹與隨機(jī)森林的算法介紹見參考文獻(xiàn)[7]。
隨機(jī)森林算法的基本思路是基于歷史的用電信息數(shù)據(jù),構(gòu)建特征向量用來表征竊電行為和正常用電行為的差異性,進(jìn)而訓(xùn)練二分類機(jī)器學(xué)習(xí)模型,基于過去一段時間的用電信息,自動判斷用戶在該時間段內(nèi)是否發(fā)生了竊電,如圖2所示。
圖2 隨機(jī)森林模型算法設(shè)計框架
特征所使用的基礎(chǔ)表如圖3所示。其中歷史用電信息,是指用戶在一段時間區(qū)間內(nèi)(1個月/季度/年)所產(chǎn)生用電行為信息和用戶基本屬性信息。具體而言,可以分為三類:時間序列類型信息、事件類信息、靜態(tài)類信息。其中時序類信息包含了用戶每天用電量的時序數(shù)據(jù)和臺區(qū)每天線損量的時序數(shù)據(jù);事件類信息,主要記錄了不同異常類型用電事件的發(fā)生時刻信息;靜態(tài)類信息,指用戶的基本信息,例如地址、職業(yè)、愛好、性別等。
圖3 隨機(jī)森林模型算法特征
2.2.1 基礎(chǔ)表說明
a.日用電量:日凍結(jié)有功電能示值、測量點(diǎn)日凍結(jié)電能量。
b.日臺區(qū)線損:臺區(qū)線損率明細(xì)。
c.用電異常事件:電能表的潮流反向、電流不平衡、電壓逆相序、電源異常、斷相、輔助電源掉電、負(fù)荷開關(guān)誤動拒動、過流、恒定磁場干擾、開表蓋、開端鈕蓋、欠壓、全失壓、失流、失壓、校時、電能事件清零、飛走、倒走等事件。
d.用戶基本信息表:用戶檔案。
2.2.2 主要特征數(shù)據(jù)提取
根據(jù)上述基礎(chǔ)表,以竊電手段判別,根據(jù)短接偷電、電能表停轉(zhuǎn)、電能表反轉(zhuǎn)、欠電壓法竊電,欠電流法竊電、移相法竊電,擴(kuò)差法竊電、無表法竊電等,可得出異常事件行為記錄表記錄的信息將是本模型數(shù)據(jù)權(quán)重較大部分,根據(jù)此表判斷竊電用戶的行為,取異常事件發(fā)生時間點(diǎn),以此用戶、發(fā)生時間,關(guān)聯(lián)出其對應(yīng)時間的用電量、臺區(qū)線損,觀察其突變度,并取突變度最大值,主要特征如下:
a.異常事件發(fā)生次數(shù)(對取出的所有異常事件進(jìn)行計數(shù));
b.異常事件時刻用電突變度(異常事件發(fā)生的時間節(jié)點(diǎn)所對應(yīng)的用電量的突變度);
c.異常事件時刻線損突變度(異常事件發(fā)生的時間節(jié)點(diǎn)所對應(yīng)的臺區(qū)線損的突變度);
d.用戶用電突變點(diǎn)個數(shù)(所有時間下的用電量突變點(diǎn)的計數(shù));
e.用電突變時刻線損突變度(所有時間下的用電量突變點(diǎn)的時間所對應(yīng)的線損突變度)。
2.2.3 其他特征
根據(jù)用戶日用電量的均值、方差、異常值、突變點(diǎn)、工作日、休息日用電量等,統(tǒng)計如下信息:時間序列的空值占比、時間序列0值占比、時間序列異常電占比、時間序列中位數(shù)、時間序列方差、時間序列標(biāo)準(zhǔn)化中位數(shù)(<=>中位數(shù)/時間序列最大值)、時間序列標(biāo)準(zhǔn)化方差(<=>方差/時間序列最大值)、突變點(diǎn)個數(shù)、突變點(diǎn)躍遷最大值、工作日平均用電量、休息日平均用電量、工作日平均用電比例、休息日平均用電比例、星期用電比例的信息熵。此部分特征為預(yù)想可能存在影響該樣本是否為竊電用戶,因而選用部分。
模型輸入數(shù)據(jù)部分選擇了360天的數(shù)據(jù)(包含竊電以及非竊電用戶),從基礎(chǔ)表提取出主要的5個特征,訓(xùn)練數(shù)據(jù)2W正樣本+5W普通竊電用戶,交叉驗證準(zhǔn)確率為80%,隨機(jī)抽取模型中1個樹的過程,如圖4所示。
圖4 隨機(jī)森林模型樹的預(yù)測過程
由100多棵樹隨機(jī)抽取特征,根據(jù)訓(xùn)練數(shù)據(jù)擬合模型后,將新樣本輸入,執(zhí)行上述過程,得到結(jié)果。
訓(xùn)練模型:第一步將要提取特征,但在進(jìn)入特征提取前,需要抽取一定比列的訓(xùn)練樣本(竊電用戶和未發(fā)現(xiàn)竊電的用戶),此部分需手動設(shè)置,提取完訓(xùn)練樣本后,數(shù)據(jù)將交給feature_extract抽取數(shù)據(jù),后續(xù)將會調(diào)用feature_util中的方法對數(shù)據(jù)進(jìn)行轉(zhuǎn)換,于feature_combine中整合成用來訓(xùn)練的數(shù)據(jù)(特征),于model_train_script中訓(xùn)練模型,訓(xùn)練完成后將導(dǎo)出一份訓(xùn)練完后的文件,內(nèi)含訓(xùn)練完畢的模型,后續(xù)預(yù)測時將直接調(diào)用該文件。
模型預(yù)測嫌疑用戶流程如下:
a.提取預(yù)測數(shù)據(jù);
b.執(zhí)行preprocess腳本創(chuàng)建臨時表;
c.臨時表中提取預(yù)測數(shù)據(jù),通過feature_extract抽取數(shù)據(jù)(調(diào)用feature_util中的方法對數(shù)據(jù)進(jìn)行轉(zhuǎn)換);
d.在feature_combine中整合成預(yù)測的數(shù)據(jù);
e.通過model_predict_util打開訓(xùn)練完成的模型文件;
f.將數(shù)據(jù)導(dǎo)入模型進(jìn)行預(yù)測,并輸出結(jié)果;
g.調(diào)用output_database導(dǎo)出txt文件;
h.使用hadoop命令將文件導(dǎo)入hive的臨時表;
i.住址姓名通過表內(nèi)ID信息關(guān)聯(lián),導(dǎo)入Oracle完成。
模型選取滄州某縣進(jìn)行驗證測試工作,對部分嫌疑用戶的部分特征進(jìn)行分析,根據(jù)輸出結(jié)果進(jìn)行嫌疑度排名,選取其中嫌疑度較高的嫌疑用戶,將其用電采集數(shù)據(jù)繪制成圖,見圖5、圖6,其中虛線部分代表用戶日用電量,實(shí)線部分代表臺區(qū)日線損。
圖5 隨機(jī)森林模型嫌疑用戶1臺區(qū)線損與日用電量相關(guān)性
圖6 隨機(jī)森林模型嫌疑用戶2臺區(qū)線損與日用電量相關(guān)性
2019年5月,選取圖5、圖6對應(yīng)的嫌疑用戶,在滄州某縣城進(jìn)行現(xiàn)場稽查工作。最終,確定2戶均為竊電用戶,其中一戶嫌疑用戶存在繞越計量竊電,表內(nèi)計量電流為0 A,實(shí)際流入電流為4.97 A,屬竊電行為;另外一戶嫌疑用戶存在動表竊電,使計量不準(zhǔn)確,達(dá)到竊電目的。
2019年4月起至8月,根據(jù)文本模型得出的嫌疑用戶,于石家莊、保定、滄州3個地市開展試點(diǎn)工作,共51戶派發(fā)進(jìn)行現(xiàn)場核查,查實(shí)用戶10戶,準(zhǔn)確率19.6%。
由此可見,隨機(jī)森林算法可以有效快速地實(shí)現(xiàn)竊電嫌疑用戶的追蹤。隨機(jī)森林采用了集成算法,本身精度比大多數(shù)單個算法要好。在測試集上表現(xiàn)良好,由于2個隨機(jī)性的引入,使得隨機(jī)森林不容易陷入過擬合(樣本隨機(jī),特征隨機(jī)),訓(xùn)練速度快,可以運(yùn)用在大規(guī)模數(shù)據(jù)集上。利用機(jī)器學(xué)習(xí)算法對竊電嫌疑用戶的追蹤,實(shí)現(xiàn)了快速有效的反竊電目標(biāo),為國家以及社會反竊電領(lǐng)域創(chuàng)造了應(yīng)用價值。