何 傲,左黎斌,王 昕,何東瑩,趙 楠
(1. 云南電網有限責任公司電力科學研究院;云南 昆明 650217;2. 南方電網電能計量重點實驗室,云南 昆明 650217;3. 昆明理工大學信息工程與自動化學院,云南 昆明 650000)
近年來,隨著社會經濟的快速發展,電力需求也在不斷增長。電能的準確計量是供電企業生產經營管理及電網經濟穩定運行的重要環節。電能表是供電企業與用電客戶進行電量結算的重要計量器具,電能表的計量準確性直接關系到供電企業和用電客戶的經濟效益[1]。作為電能表全生命周期質量評價的重要一環[2],目前沒有成熟的電能表檢定的質量評價策略[3],僅以合格與否來判斷同類別電能表檢定的質量的依據,無法全面反映電能表檢定的質量差距。本文提出一種基于K-means算法的電能表檢定誤差分析方法,對電能表歷史檢定數據進行分析與研究,為電能表質量評價、設備選型、狀態評價甚至后期的運行維護策略選擇提供科學、可靠的依據。
聚類又稱聚類算法、聚類分析、群分析等,它主要是運用統計分析的思想,將樣本或指標依據一定的原則,分成不同的聚類簇,從而使得聚類下的簇內間樣本或指標具有較大的相似性,簇外的相似性較小。同時,聚類也是解決數據挖掘的方法之一[4]。
聚類分析是由聚類(Cluster)分析是由若干模式(Pattern)組成的,通常,模式是一個度量(Measurement)的向量,或者是多維空間中的一個點。
聚類分析法在人們的生產、生活中應用廣泛,例如在商業上,聚類可以幫助商家從數據庫中劃分出不同的消費群體,依據消費者的消費習慣,針對性的進行銷售。在數據挖掘上,聚類可以幫助人們發現數據庫中一些深層的信息,并表述其特點,或者在某一個類上做深度分析[5]。
聚類算法的定義是指根據某一條件或者基準將數據分成多個類,相同類中間的數據有著符合要求的相似度,不同的類中數據有著可解釋的差異性。
假定數據集 X,包含一個空間數據 A, xi=(xi1, xi2,…xid),描述為數據集X中的第i個點。第i個數據點的j個屬性描述為xij。假定數據集X中包含 N個數據,即 xi( i =1 ,2,… ,N ),那么就可以將數據集X描述為一個N· d階矩陣。根據聚類的思想,它主要是運用統計分析的思想,將樣本或指標依據一定的原則,分成不同的聚類簇,從而使得聚類下的簇內間樣本或指標具有較大的相似性,簇外的相似性較小。即設k為數據集分割的次數,則每個聚類集為 Cm(m =1 ,2,… ,k)。則聚類的數學表示如下:

聚類方法雖然可以較好的解決分類上的問題,但是如果應用不得當,可能得不到預想的結果[6],因此,聚類方法具有幾點要求:
(1)可伸縮性
多數的聚類算法在解決少量的數據是具有較好的聚類性,但面對大規模數據時,可能把控力不強,從而造成聚類上的偏差。
(2)不同屬性
聚類算法不單單用來解決數值類型的聚類,還可以應用在二元類型、標稱類型或其混合型等。
(3)任意形狀
對于每個聚類下的簇來說,它的形狀可以是任意的,但是許多人對于相似度的度量方法都是采用歐幾里得距離或者曼哈頓距離,而這兩種度量方法更多的是解決球狀簇的,所以,人們應該提出更多針對性的度量方法用以解決各種形狀的簇。
(4)領域最小化
用戶在使用聚類算法進行聚類分析的時候,需要自行設定一個閾值,而這個閾值控制著簇內的數目,聚類的結果對于這個閾值的設定十分敏感。通常情況下閾值的大小很難確定,尤其是對于高維的數據集來說。這樣使得用戶的負擔加重了,同樣也使得聚類的質量無法得到保障。
(5)處理“噪聲”
對于需要進行聚類的數據來說,有些數據是缺失或者錯誤的,而這些錯誤或者缺失的數據很有可能造成聚類的錯誤或者聚類質量的降低。
(6)記錄順序
對于有些具有順序的數據來說,當以不同的順序輸入到同一個聚類算法中時,可能造成不同的結果,所以,人們應該提出更多針對具有順序性數據的聚類方法。
(7)高維度
對于海量的數據源來說,可能包含高維度的數據,而很多聚類算法只是擅長處理低維度的數據,最高二到三維,因此,在高維空間中進行聚類是非常具有挑戰性的。尤其是這樣的數據可能呈現出非常稀疏的分布規律,而且高維度呈現偏斜的情況。
(8)基于約束
對于聚類分析在實際生產、生活中的應用,這就要考慮在各種約束條件下進行。假定任務是要對給定數目下的自動取款機設置安放位置,那么,既要考慮到居民較為密集的活動地點進行聚類,又要考慮到交通問題,如城市中河流的分布情況、公路情況等,還需要考慮客戶的需求性等。因此,既要找到特定的約束條件,又要具備聚類的數據分組,這對于實際分析來說是比較困難的。
(9)解釋性、可用性
對于聚類的結果,用戶往往希望是可解釋的、可用的。即聚類需要和特定的語義解釋、應用相結合。應用目標如何影響聚類方法的選擇也是一個重要研究內容。
(10)樣本間的距離與相似度
在對數據進行聚類分析是,首先應找出數據間的相似度,按照數據間相似程度越高,數據越相似的思想進行分類,其公式為:

式中,d——變量間的距離;
c——變量間的相似系數。
因此,需要計算出樣本間的距離。常用的計算樣本間距離的方法包括以下幾種。
(1)馬哈拉諾比斯距離(Mahalanobis Distance)

(2)閔可夫斯基距離(Minkowski Distance)

(3)歐幾里得距離(Euclidean Distance)

(4)切比雪夫距離(Chebyshev Distance)

(5)城區距離(City-block Distance)

(6)蘭氏距離(Canberra Distance)

(7)標準化歐幾里得距離(Standardized Euclidean Distance)

除了利用距離來度量樣本數據間的相似度,還可以利用夾角余弦和相關系數來確定。
(1)夾角余弦

(2)相關系數

總結上述公式,如果利用距離公式進行相似度考量,則距離越小,相似度越高,如果利用相似系數進行相似度考量,則結果越大,相似度越高。
聚類算法是一類將未知標簽的數據對象集進行分組的無監督學習方法,其主要目的是實現同一組的數據對象間的相似性較高,而不同類的數據對象間的相似性較低。在探索性數據分析和數據挖掘中,聚類算法經常用來發掘隱藏在數據中的部分或全部模式。因此,近幾年來聚類算法得到了廣泛的關注。常用的聚類算法分為七類,分別是劃分聚類法(Partition)、層次聚類法(Hierarchical)、密度聚類法(Density)、圖論聚類法(Graph)、網格聚類法(Grid)、模型聚類法(Model)以及混合聚類法(Hybrid)。
(1)劃分聚類法(Partition)
劃分聚類法的思想是首先對數據進行相似性分組,然后將劃分好的數據依次放入到每組中,每一組即代表一個類,同時滿足每個類中至少含有一個數據;每個數據僅屬于一個類。然后,通過一個數據對象定位技術循環調整數據對象所處的劃分,即反復迭代的過程。最終得到較好的分類效果。基于劃分聚類的常用方法有K-means算法、PAM算法、CLARA算法、CLARANS算法、K-modes算法以及FCM算法等[7]。
基于劃分聚類的K-means算法的基本思想是根據預先設定好的參數K作為分組,然后從數據樣本中隨機選取K個數據作為各組的中心數據,隨后依據相似度將其他數據進行分類。將分類好的數據依據每類中的中心平均值再次聚類,經過反復迭代得到最優解[8]。
K-means算法的計算公式如下:

式中x——某個樣本;
ct——聚類中心樣本;
E——數據的平方差之和。
modes算法與K-means算法的唯一不同之處在于K-means算法選取的是中心平均值作為再次聚類的中心,而K-modes算法選用距離中心點距離最近的樣本代表該類。
(2)層次聚類法(Hierarchical)
層次聚類法的基本思想是采用距離作為樣本數據間相似程度的衡量標準,自底向上的凝聚,或者自頂向下的分裂來達到最終的聚類效果。同時,在聚類的過程中,無法取消已經完成的聚類,從而可以有效避免因生成類的數目問題而造成的誤差,但也正因如此,一旦聚類中發生錯誤,整個聚類都將錯誤。基于層次聚類的常用方法有:Birch算法、CHAMELEON算法、CURE算法以及 MSCMO算法等[9]。
(3)凝聚層次聚類法
基于層次聚類的凝聚法的基本思想是首先將集合中的每個樣本數據分別看做一個類,然后根據樣本數據間的距離作為相似程度進行聚類,得到的新類再次迭代,直到滿足條件為止。
凝聚算法的計算公式如下:

式中Ci——集合中第i個類;
Cj——集合中第j個類;
D(Ci,Cj)——集合中第i個類與集合中第 j個類的距離;
dpi,dpj——樣本i與樣本j之間的距離。
(4)分裂層次聚類法
基于層次聚類的分裂法的基本思想恰恰與凝聚法相反,即首先將所有樣本數據都放到一個類里邊,然后對整個類進行迭代分裂,直到分裂為不同的類,滿足滿足條件為止。
(5)密度聚類法(Density)
密度聚類法的基本思想是針對非球狀數據集,將樣本數據看成是空間的,從而將數據密集的歸為一類。對密度聚類法的評價一般采用類內方差法,基于密度聚類的常用方法有:DBSCAN算法、OPTICS算法、DENCLUE算法,SNN算法以及Fast Clustering算法。
(6)圖論聚類法(Graph)
圖論聚類法的基本思想是先將樣本數據集看成是一張圖,然后在一定的條件下,將圖分為若干個子圖,即分為若干個類,從而將樣本數據進行聚類劃分。基于圖論聚類的常用方法有:AUTOCLUST算法、MST算法以及2-MSTClus算法等。
(7)網格聚類法(Grid)
網格聚類法的基本思想是首先將數據樣本集進行空間量化,從而形成有限數目的、具有多分辨率的網格,然后在每個網格中進行聚類。網格聚類法因為不受時間復雜度和數據大小的影響,所以運行速度較快,但不適合高維數據的聚類。基于網格聚類的常用方法有:STING算法、STING+算法、CLIQUE算法以及Wave Cluster算法等。
(8)模型聚類法(Model)
模型聚類法的基本思想是假設數據符合潛在分布規律的基礎上,它首先為每個聚類簇假設一個用于參考的模型,然后將數據集中的數據樣本與參考模型作比較,找到最佳逼近擬合即為分類結果。基于模型聚類的常用方法有:EM 算法以及 SOM算法。
(9)統計學法
Fisher提出的COBWEB方法的基本思想是采用啟發估算度量模式將樣本數據的最高效用值劃分到各類中。Genai提出的 CLASST方法是建立在COBWED方法的基礎上,主要針對處理連續性數據增量的問題。而Cheseman等人提出的AutoClass方法主要建立在貝葉斯的統計分析上,從而實現分類個數的估計,也是生活中較為常用的。
(10)神經網絡法
神經網絡法的基本原理是采用樣本間數據距離的相似程度分析,并以此為依據將每個類描述為不對應的對象實例。由于神經網絡法是模擬人的大腦進行實際處理,因此處理過程較為復雜,所以神經網絡不適用于大量的樣本數據的聚類分析與處理。
(11)混合聚類法(Hybrid)
混合聚類法的基本思想是將多種聚類方法結合的思想,由于每種聚類都存在一定的確定,而將多種聚類方法相結合可以有效規避不足,吸收優點。基于模型聚類的常用方法有:NN-Density算法、CSM算法等。
聚類有效性的評價標準有兩種:一是外部標準,通過測量聚類結果和參考標準的一致性來評價聚類結果的優良;另一種是內部指標,用于評價同一聚類算法在不同聚類數條件下聚類結果的優良程度,通常用來確定數據集的最佳聚類數[6]。
對于內部指標,通常分為三種類型:基于數據集模糊劃分的指標;基于數據集樣本幾何結構的指標;基于數據集統計信息的指標。基于數據集樣本幾何結構的指標根據數據集本身和聚類結果的統計特征對聚類結果進行評估,并根據聚類結果的優劣選取最佳聚類數,這些指標有 Calinski-Harabasz(CH)指標,Davies-Bouldin(DB)指標Weighted inter-intra(Wint)指標,Krzanowski-Lai(KL)指標,Hartigan(Har)指標,In-Group Proportion(IGP)指標等。
本文主要使用較為常用的外部指標和內部指標中的Calinski-Harabasz(CH)指標、Davies-Bouldin(DB)指標。
對于聚類分析所產生的聚類程度的結果好壞,一般由以下幾種方式進行評定。
(1)假定分類中,集合 G中的類與類所設定的范圍為 T,則類與類之間任意兩個元素間的聚類dij均滿足:

(2)假定分類中,集合G中的類與類所設定的范圍為T,G中包含n個元素,則每個i元素均滿足:

(3)假定T和H都為給定的正數,且HT?,集合G中的n個元素間的平均距離均滿足:

(4)假設類中 G有 n個樣本,n個樣本中的Xi的維度為 m,則每個數據 Xi可以從以下幾個方面來描述G類。
1)平均值

2)樣本的離差矩陣

將其簡化整理得到:

3)類的直徑

或將其表示為:

4)CH指標
CH指標通過類內離差矩陣描述緊密度,類間離差矩陣描述分離度,指標定義為 :

式中n——聚類的數目;
k——當前的類;
trB(k)——類間離差矩陣的跡;
trW(k)——類內離差矩陣的跡。
從表達式中可以得出 CH越大代表著類自身越緊密,類與類之間越分散,即更優的聚類結果。
5)DB指標
DB指標通過描述樣本的類內散度與各聚類中心的間距,定義為:

式中K——聚類的數目;
Cij——類與類之間的距離;
Wi——類Ci中的所有樣本到其聚類中心的平均距離;
Wj——類 Ci中的所有樣本到類 Cj中心的平均距離。
從表達式中可以看出,DB越小表示類與類之間的相似度越低,從而對應越佳的聚類結果。最佳聚類數的確定過程一般是這樣的:給定 K的范圍[Kmin,Kmax],對數據集使用不同的聚類數K運行同一聚類算法,得到一系列聚類結果,對每個結果計算其有效性指標的值,最后比較各個指標值,對應最佳指標值的聚類數即為最佳聚類數。
針對電能表檢定數據的特點,選擇基于劃分聚類的K-means算法。
基于劃分聚類的K-means算法的基本思想是根據預先設定好的參數K作為分組,然后從數據樣本中隨機選取K個數據作為各組的中心數據,隨后依據相似度將其他數據進行分類。將分類好的數據依據每類中的中心平均值再次聚類,經過反復迭代得到最優解。
K-means聚類算法是用隸屬度確定每個數據點屬于某個聚類的程度的一種聚類算法。把n個向量xi(i=1,2,…,n)分為 c個模糊組,并求每組的聚類中心,使得非相似性指標的價值函數達到最小。每個給定數據點用值在0,1間的隸屬度用來確定其屬于各個組的程度[10]。與引入模糊劃分相適應,隸屬矩陣 U允許有取值在 0,1間的元素。不過,加上歸一化規定,一個數據集的隸屬度的和總等于1:

那么,K-means的價值函數(或目標函數)的一般化形式:

這里iju介于0,1間;ci為模糊組I的聚類中心,dij=||ci-xj||為第I個聚類中心與第j個數據點間的歐幾里德距離;且是一個加權指數。
構造如下新的目標函數,可求得使(25)式達到最小值的必要條件:

這里ij,j=1到n,是(24)式的n個約束式的拉格朗日乘子。對所有輸入參量求導,使式(25)達到最小的必要條件為:

和

由上述兩個必要條件,模糊C均值聚類算法是一個簡單的迭代過程。在批處理方式運行時,K-means用下列步驟確定聚類中心ci和隸屬矩陣U:
步驟1:用值在0,1間的隨機數初始化隸屬矩陣U,使其滿足式(24)中的約束條件
步驟 2:用式(25)計算c個聚類中心 ci,i=1,…,c。
步驟 3:根據式(25)計算價值函數。如果它小于某個確定的閥值,或它相對上次價值函數值的改變量小于某個閥值,則算法停止。
步驟4:用式(26)計算新的U矩陣。返回步驟2。
上述算法也可以先初始化聚類中心,然后再執行迭代過程。由于不能確保K-means收斂于一個最優解。算法的性能依賴于初始聚類中心。因此,我們要么用另外的快速算法確定初始聚類中心,要么每次用不同的初始聚類中心啟動該算法,多次運行K-means。
檢定數據中存在粗大誤差會直接影響電能表的檢定結論。粗大誤差是指明顯超出規定條件預期的誤差,也稱疏忽誤差或粗差,其會明顯歪曲測量結果,故也稱異常值(壞值)。導致粗大誤差產生的原因主要有:測量儀器不符合測量要求,本身存在缺陷;由于不可抗力或不可預估的瞬時性事件導致的計量器具測量偏差等等。在對測量數據進行分析時,由于測量誤差客觀存在無法消除且具有分散性,很難直觀判別測量數據是否存在粗大誤差,因此需要運用一定的判別準則對粗大誤差進行剔除,以得出較為準確的結論,保障數據分析結果的可信度[11]。
可疑數據是一組測量數據中,明顯偏離其他次數測量值的測量數據,需要進行粗大誤差判別。測量數據含有粗大誤差情況極少發生,但為保證數據分析結論的準確性,一方面需要對數據進行判別并剔除其中的粗大誤差,另一方面也需要采用較為妥當的準則進行判別,避免由于粗大誤差誤判對分析結果造成影響,因此在進行測量數據分析之前,需要進行預處理。數據的預處理是利用冗余測量數據來減少數據的隨機誤差的影響,實現粗大誤差識別,常用于統計實驗中識別嚴重錯誤的數據。
對選出來的特征進行數據預處理,主要有抽樣、空值處理、聚類處理幾個步驟,數據預處理的環節見圖1。

圖1 數據預流程示意圖Fig.1 Data preprocess diagram.
對所有數據進行訓練,會受到內存和運行時間的限制,因此對數據進行抽樣是必經步驟。抽樣方式的選擇影響最后的模型輸出。抽樣方式主要有隨機抽樣、系統抽樣、整群抽樣、分層抽樣四種[12]。
(1)隨機抽樣是用得最多的一種抽樣方法,用隨機抽簽的方式或隨機數字的方式確定抽樣結果。隨機抽樣原理簡單,但不適合數據分布層次明顯的數據集。
(2)系統抽樣是指按固定的間隔距離進行抽樣,系統抽樣可操作性強,但易受到參數發展趨勢持續遞增或遞減的影響。
(3)整群抽樣是指在抽樣前將被抽樣群體分成幾個類,抽樣結果直接選擇某個子類。
(4)分層抽樣顧名思義,在數據集分層基礎上,按比例對每層數據進行抽取,形成一定大小數據集。一般在抽樣前需要對數據進行摸底,瀏覽數據分布情況,如果數據時序性質比較強則選擇線性隨機抽樣,保證參數的時序性。如果數據呈現出類別或層次規律,則選擇分層抽樣法,確保每種類別的數據都在抽樣數據集中。如果無法了解數據集的分布情況,數據隨機性強,可以考慮系統抽樣。如果抽樣只為了提高數據處理效率,則選擇系統抽樣。本實驗采用的抽樣方式為線性隨機抽樣,因為目標預測量為帶著時序性質的溫度指標,在建模預測過程中,要盡量保持其時序性。
數據清洗一般是對數據為空的值進行清洗。空值一般包括兩種情況:第一種是數值的不完整,另外一種則是數值為空。數值不完整是指值實際存在,但數據不完整,或者說沒有存入所屬字段。數據清洗所處理的是缺失值。處理方法有:可以從本數據源或其它數據源利用相關性推導出某些缺失值;可以用數據源的最小值、中間值、平均值、最大值或推測值;最后也可以通過手動輸入一個在接受范圍內的人工經驗值等。
聚類指依據相似度把相似度高的數據放在一個類,使得類內差異小,類間差異大,常見的聚類方法有 Partitioning algorithms,Hierarchy algorithms層次算法,Density-based基于密度,Grid-based基于網格,Model-based基于模型。聚類除了進行簡單的類別劃分,將聚類進行數據預處理的原理就是匹配實際的應用場景,聚類能使相關性比較大的數據聚集在一類。本文基于聚類算法在異常值檢測中的應用,結合電能表檢定數據的特性,將K-means聚類算法運用在電能表檢定數據的處理上,得出電能表檢定誤差的幾種模式。
K-means聚類算法的K值大小和初始值的設定需要借助一定的評價標準。DBI(Davies-Bouldin 指數)是一種評估度量聚類算法有效性的指標。這個DBI就是計算類內距離之和與類外距離之比,來優化k值的選擇,避免K-means算法中由于只計算目標函數J而導致局部最優的情況。k取值太大,每組的分類值太少,特征不明顯。K取值小,影響聚類效果。對比K值從2到8的取值,DBI指數發現其在K=4的情況下DBI指數最小,因此本實驗用的K值為4,如圖2所示。

圖2 DBI指數圖Fig.2 DBI index diagram
所使用的數據為來自于云南省地市供電局2017年4月的部分檢定數據。
不可預估的瞬時性事件導致的數據采集不成功,使原始智能電表數據產生臟數據,為保證結果的準確性,首先對原始記錄數據進行了簡單的預處理,剔除了空值數據記錄。
選取4月份檢定數據3000條,剔除空值數據后剩余2910條檢定記錄。檢定部分數據如下表1所示。表中數據為電能表在功率因數cos為0.5L和1.0時不同負載電流下的誤差。
將K-means聚類算法運用在電能表檢定數據的處理上,得到電能表檢定誤差的幾種模式,見圖3。
對應的聚類中心圖,見圖4。
不同生產廠家電能表檢定誤差處理后的散點圖,見圖5。

表1 部分電能表檢定數據Tab.1 verification data of some electric energy meter

圖3 電能表檢定誤差的幾種模式Fig.3 Several modes of verification error of electric energy meter

圖4 聚類中心圖Fig.4 Cluster center diagram

圖5 不同生產廠家電能表檢定誤差處理后的散點圖Fig.5 Scatter plot of verification error of electric energy meters of different manufacturers

表2 不同評價標準下電能表檢定的質量Tab.2 Quality of electric energy meter verification under different evaluation criteria
從圖3、圖4、圖5可以看出,大部分電能表滿足仿真結果,從聚類結果可以看到電能表檢定的質量大致可分為4類。
第一類,廠家1、廠家2和廠家3生產的電能表誤差比較小。
第二類,廠家 4在選取的標準下的百分比為80%左右。
第三類,這些電能表在選取的標準下的百分比為80%以下,為廠家5、廠家6、廠家7。
第四類,由于該廠家電能表數據樣本數少于50只,無法全面反映其質量,不具備評價意義。
再次對第一檔的三家生產商電能表檢定質量進行對比,分別取評價標準為0~0.02、0~0.03和0~0.04三檔,得到表2數據。
從表中數據可以看出,廠家 1生產的電能表在 3個評價標準下的檢定質量都優于其他兩個廠商。
針對供電企業對電能表檢定的質量評價的需求,結合歷史電能表檢定數據的特點,本文提出運用基于劃分聚類的K-means算法對電能表歷史檢定誤差進行分析與研究。該方法可以分析、評價電能表檢定的質量,為電能表全生命周期質量評價、設備選型等提供科學、可靠的依據。