謝國榮,鄭 宏,林偉圻,徐 鳴,郭 昆,陳基杰
1(國網(wǎng)信通億力科技有限責(zé)任公司,福州 350001)
2(國網(wǎng)福建省電力有限公司 電力科學(xué)研究院客戶服務(wù)中心,福州 350003)
3(福州大學(xué) 數(shù)學(xué)與計算機科學(xué)學(xué)院,福州 350116)
4(福建省網(wǎng)絡(luò)計算與智能信息處理重點實驗室,福州 350116)
隨著社會經(jīng)濟的不斷發(fā)展,各部門對電力的穩(wěn)定性要求越來越高,而電網(wǎng)公司通過各種供電可靠性措施,不斷加快搶修速度,已使得停電次數(shù)和時間大大減少[1].盡管電網(wǎng)公司的服務(wù)水平越來越高,用戶對于用電的需求也在不斷的提升,一些停電敏感的用戶對于供電更是具有嚴(yán)格的要求.由于停電給用戶帶來的負(fù)面影響大小不同,造成用戶存在不同程度的停電敏感度[2].停電敏感用戶是指對停電事件關(guān)注度較高的用戶.通過分析用戶的行為特征,借助數(shù)據(jù)挖掘、機器學(xué)習(xí)等技術(shù)對用電客戶進(jìn)行停電敏感度分類預(yù)測,不僅可以有效的提高供電服務(wù),還有助于減少95 598的客戶投訴量[3,4].
目前,很多電網(wǎng)企業(yè)已經(jīng)開啟了客戶關(guān)系管理(CRM),結(jié)合數(shù)據(jù)挖掘技術(shù)對用戶的停電敏感度進(jìn)行標(biāo)識,并根據(jù)不同用戶提供差異化的增值服務(wù),提高用戶的滿意度[5].Kaminski等人[6]開發(fā)了一套基于決策樹的停電用戶敏感分類框架,利用該框架可以計算出每個用戶的停電敏感概率,從而達(dá)到敏感用戶分類的目的.劉平等人[7]根據(jù)電力用戶的滿意度調(diào)研數(shù)據(jù)以及專家分析,結(jié)合停電時段信息,建立用戶在不同時間段的停電敏感等級指數(shù),這種方法只針對不同類型的用戶進(jìn)行劃分,沒有深入到個體用戶層面.嚴(yán)宇平等人[8]通過分析停電用戶的屬性特征,利用邏輯回歸和SVM算法等機器學(xué)習(xí)算法,建立停電敏感程度預(yù)測模型,模型可以準(zhǔn)確的預(yù)測用戶停電敏感度,但模型訓(xùn)練時間較慢.鄭芒英等人[9]通過建立隨機森林模型對用電用戶停電敏感度進(jìn)行分析,可以區(qū)分出用戶的敏感程度,但是未能有針對性對目標(biāo)用戶清單進(jìn)行篩選且未對用戶停電特征進(jìn)行評估,模型的穩(wěn)定性不高.耿俊成等人[10]提出了基于K-support稀疏邏輯回歸的停電敏感度預(yù)測模型,通過優(yōu)勢分析法對特征屬性的顯著性進(jìn)行分析,提升了模型的準(zhǔn)確性,但該模型未考慮數(shù)據(jù)分布不均勻的問題.
本文針對傳統(tǒng)的機器學(xué)習(xí)方法在不平衡數(shù)據(jù)集的處理性能較差,及易存在過擬合等問題,提出一種基于改進(jìn)隨機森林算法的停電敏感用戶分類算法POSCC(Power Outage Sensitive Customer Classification).論文的主要創(chuàng)新點有:(1)引入 SMOTE (Synthetic Minority Oversampling TEchnique)算法提高少數(shù)類停電敏感用戶的數(shù)據(jù)比例,解決數(shù)據(jù)分布不均勻問題;(2)改進(jìn)隨機森林算法特征選擇階段,將Fisher比作為特征重要性的衡量指標(biāo),依據(jù)比例和順序選擇重要的特征構(gòu)成子樹的特征集,降低高維數(shù)據(jù)冗余特征的影響;(3)通過與標(biāo)準(zhǔn)隨機森林算法和經(jīng)典SVM算法對比實驗表明,本文提出的算法在節(jié)省運行時間的同時具有較高的精度.
本文提出的基于改進(jìn)隨機森林算法[11,12]的停電敏感用戶分類算法POSCC主要包括數(shù)據(jù)預(yù)處理、數(shù)據(jù)分布不均勻處理、特征選取、分類模型訓(xùn)練構(gòu)建四步.預(yù)處理部分主要包括數(shù)據(jù)填充、異常值處理、數(shù)據(jù)標(biāo)準(zhǔn)化等操作.分類算法是通過Bootstrap重采樣的方式來構(gòu)造每棵樹的訓(xùn)練集,以此保證基分類器的多樣性.整個訓(xùn)練集數(shù)據(jù)包括多數(shù)類樣本和少數(shù)類樣本數(shù)據(jù),使用SMOTE算法生成與少數(shù)類樣本相似的子集,再與少數(shù)類樣本合并形成新的訓(xùn)練集,通過這種方式可以有效的處理數(shù)據(jù)分布不均勻問題.為了降低高維數(shù)據(jù)冗余屬性的影響,本文在特征選取部分做了改進(jìn),首先對每個特征的重要程度進(jìn)行計算[13],然后根據(jù)權(quán)值的順序?qū)ψ犹卣鬟M(jìn)行分區(qū)劃分,接著對每個區(qū)按比例隨機抽取特征,最后構(gòu)造出特征子空間.根據(jù)生成好的訓(xùn)練集和特征子空間,生成多棵決策樹,完成停電敏感用戶分類算法的訓(xùn)練.對于待測樣本,根據(jù)每棵樹的分類結(jié)果,采用投票的機制決定每個樣本的分類結(jié)果.圖1給出POSCC算法的訓(xùn)練和預(yù)測流程.
停電用戶數(shù)據(jù)是直接從各個停電業(yè)務(wù)系統(tǒng)中獲取,存在數(shù)據(jù)缺失和數(shù)據(jù)不一致的情況.并且,通過整合而來的數(shù)據(jù)經(jīng)常會出現(xiàn)某些字段值缺失或異常等問題.如果不對這些臟數(shù)據(jù)進(jìn)行處理而直接在其上進(jìn)行敏感用戶劃分,則會嚴(yán)重影響預(yù)測的精度.因此,需要在建模前對數(shù)據(jù)進(jìn)行預(yù)處理,預(yù)處理的過程主要包括數(shù)據(jù)填充、異常值處理、數(shù)據(jù)規(guī)范化等.
2.2.1 數(shù)據(jù)填充
針對停電用戶數(shù)據(jù)的實際背景,本文采用的數(shù)據(jù)填充方案為:對于類別型字段,如行業(yè)分類、用電類別、電壓等級、客戶類別、行政區(qū)域、繳費類型等字段采用默認(rèn)值填充,分別填充預(yù)指定的缺失類別;對于數(shù)值型字段,采用平均值的方式處理.針對某個時刻缺失的記錄,根據(jù)相鄰多個時刻正常的記錄進(jìn)行求和取平均,將平均值作為該缺失值記錄的填充[14].計算方式如式(1)所示:
其中,xt表示第t時刻對應(yīng)的值,m為前相鄰時刻正常數(shù)據(jù)的記錄數(shù).這種方式綜合考慮了最近多個時刻的信息,弱化了其他因素的影響,可以更合理地對缺失值進(jìn)行填充,進(jìn)而保留了停電數(shù)據(jù)的連續(xù)性.
圖1 停電敏感用戶分類算法訓(xùn)練和預(yù)測過程
2.2.2 異常值處理
在對數(shù)據(jù)進(jìn)行處理的過程中會發(fā)現(xiàn),某些記錄一個或多個字段的值與其他記錄的值相差很大,或者根本沒有意義,那就認(rèn)為這些記錄是異常數(shù)據(jù).比如,用電量、停電次數(shù)、訴求次數(shù)等這些字段的值過大或者過小,甚至出現(xiàn)為負(fù)的情況,則說明這些字段存在異常值.處理異常值的方法與處理缺失值的方法類似,當(dāng)發(fā)現(xiàn)異常數(shù)據(jù)時,采用相鄰多個時刻正常數(shù)據(jù)的平均值來替換該異常值,從而降低噪聲對停電敏感用戶劃分的影響.平均值的計算參見式(1).
2.2.3 數(shù)據(jù)標(biāo)準(zhǔn)化
停電用戶數(shù)據(jù)中不同數(shù)值字段的取值范圍可能會存在較大差異.例如:合同容量、本月電量等普遍是以百位數(shù),千位數(shù)的數(shù)值居多,而停電次數(shù)、投訴次數(shù)等字段卻以個位數(shù)或者十位數(shù)的數(shù)值居多.因此需要進(jìn)行標(biāo)準(zhǔn)化處理,使不同值域的特征字段數(shù)據(jù)處在同一個量級范圍內(nèi),以便更好的進(jìn)行建模分析.
鑒于停電用戶數(shù)據(jù)的值域差異較大,且各個特征字段的最大值和最小值都可求,所以采用Min-Max標(biāo)準(zhǔn)化[15]來對數(shù)值字段數(shù)據(jù)進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化處理.在標(biāo)準(zhǔn)化過程中,若遇到某些特征字段值的最大值和最小值一樣時,則直接讓該字段的值都為0.5,不進(jìn)行線性變換.Min-Max標(biāo)準(zhǔn)化如式(2)所示:
其中,n為數(shù)據(jù)的記錄數(shù),max(xj)特征字段的最大值,min(xj)為特征字段的最小值,xi為特征字段的值,yi表示為標(biāo)準(zhǔn)化之后的值.
在停電敏感用戶劃分的研究中,由于真正屬于停電敏感用戶的數(shù)據(jù)相對較少,因此就會存在數(shù)據(jù)分布不均勻的現(xiàn)象.如果直接用這些少數(shù)類的數(shù)據(jù)進(jìn)行分類建模,則很容易讓模型學(xué)習(xí)到的信息過于特別而不夠泛化,從而讓模型產(chǎn)生過擬合的現(xiàn)象.因此,采用SMOTE算法[16]來解決數(shù)據(jù)分布不均勻問題,通過對少數(shù)停電敏感用戶類樣本數(shù)據(jù)進(jìn)行抽樣,并將抽樣的數(shù)據(jù)合成新樣本添加到數(shù)據(jù)集中,以此來提高少數(shù)類樣本的比例.使用SMOTE算法解決數(shù)據(jù)分布不均勻的流程如下:
(1)對于停電敏感用戶類中的每一個樣本xi,利用k近鄰算法[17]得到樣本xi的k個近鄰.
(2)然后從這k個近鄰中隨機選擇一個樣本xi(nn),再生成一個0到1之間的隨機數(shù)R0,1,根據(jù)式(3)合成一個新的樣本.
(3)將步驟2重復(fù)進(jìn)行N次,從而形成N個新的樣本,N即是根據(jù)采樣比例確定的采樣倍率.
SMOTE算法是通過隨機采樣來生成新樣本,并非直接從實例復(fù)制而來,這樣可以緩解過擬合的問題,同時不會損失有價值的信息.所以,采用SMOTE算法能夠有效的處理停電敏感用戶少數(shù)類數(shù)據(jù)分布不均勻問題.
在對停電敏感用戶分類模型的訓(xùn)練過程中,每一步都要求提升數(shù)據(jù)的純度,以便達(dá)到更好的分類效果.由于停電用戶數(shù)據(jù)中的特征較多,有些特征對于算法的貢獻(xiàn)度不高,甚至?xí)λ惴ǖ挠?xùn)練過程會產(chǎn)生負(fù)面影響.而且在高維特征空間中,往往存在部分冗余特征,因此需要對數(shù)據(jù)進(jìn)行特征選擇,使得每次選出的特征更具有代表性.特征選擇是指從高維特征集合中,根據(jù)某種評估標(biāo)準(zhǔn)選擇那些輸出性能最優(yōu)的特征構(gòu)成特征子集.然后,直接對這些特征子集進(jìn)行建模,從而降低模型的計算代價,提高模型算法的預(yù)測精度.
本文改進(jìn)隨機森林算法的特征選擇階段首先用Fisher比計算每個特征的重要性權(quán)值,根據(jù)權(quán)值進(jìn)行從大到小排序;然后以權(quán)值的均值為界,將特征空間劃分為兩個特征子空間;最后在劃分好的特征子空間中,按比例隨機選擇特征,構(gòu)造新的特征子空間.具體步驟如下:
(1)設(shè)停電數(shù)據(jù)集共有n個樣本,分屬于C個類別:對于第w類的集合,樣本個數(shù)為nw,第w類中第k維特征的均值為μwk,第w類中第k維特征的方差為σwk2,全部樣本的第k維特征的均值為μk,則類內(nèi)方差如式(4)所示:
類間方差如式(5)所示:
則Fisher比計算方式如式(6)所示:
(2)通過對每個特征計算Fisher比Fd之后,按Fd從大到小對特征進(jìn)行排列.然后計算所有特征Fd的均值,作為分界線,將特征劃分為重要特征區(qū)和次要特征區(qū),劃分方式如式(7)和式(8)所示.
(3)在每一次的特征選擇中,根據(jù)劃分好的重要特征區(qū)和次要特征區(qū),按比例從每個區(qū)中隨機抽樣m1st和m2nd個特征構(gòu)造成特征子空間.比例的計算公式如式(9)和式(10)所示.
其中,|F1st|和|F2nd|分別代表重要特征區(qū)總數(shù)和次要特征區(qū)總數(shù).
對特征進(jìn)行分區(qū),在一定程度上對特征選擇的隨機性做了約束,保證選取出來的特征更具有代表性.通過這一改進(jìn),可以有效的降低維度的增加和冗余屬性帶來的影響,并且能夠提高模型的性能.
應(yīng)用隨機森林算法構(gòu)建停電敏感用戶分類模型,并基于該模型預(yù)測測試數(shù)據(jù)中哪些用戶是停電敏感用戶.停電用戶最終分為停電敏感用戶和停電非敏感用戶,因此本文研究的是二分類問題.分類的具體步驟如下:
(1)采用Bootstrap策略,有放回地隨機抽取n1(n1 (2)分別對n1個用戶構(gòu)建決策分類樹,從原始的d個特征中隨機選取dtry個特征,再根據(jù)2.4節(jié)中介紹的Fisher比計算方法,按比例選取具有代表性的用戶特征構(gòu)造特征子空間; (3)基于構(gòu)造的特征子空間,最大限度的讓每棵樹進(jìn)行分裂生長,直到n1棵樹組成的隨機森林模型全部訓(xùn)練完成; (4)針對輸入的測試用戶數(shù)據(jù),由nl棵樹生成用戶是否屬于敏感用戶的nl個判斷,采用投票機制,取票數(shù)最高的類別作為用戶的最終類別.若該類別為敏感用戶類別,則判斷該用戶為敏感用戶. 本文所采用的數(shù)據(jù)是由南方某省各個地區(qū)在SG186、95 598業(yè)務(wù)支持系統(tǒng)、用電信息采集系統(tǒng)等采集匯總而來.具體為該省份從2016年1月至12月的停電客戶信息表,包含客戶檔案信息、客戶用電信息、臺區(qū)停電信息、臺區(qū)負(fù)荷信息、客戶停送電訴求信息等共56個特征字段,以及一個表示用戶是否為敏感用戶的類別字段.數(shù)據(jù)大小共 9563715 條,由于數(shù)據(jù)集過大,故采用Spark做并行化處理,提高算法處理效率.本文算法所涉及的字段信息如表1所示. 在對停電敏感用戶進(jìn)行劃分時,連續(xù)型的數(shù)據(jù)已經(jīng)被映射為離散型數(shù)據(jù).因此,可用混淆矩陣[18]來展示預(yù)測的結(jié)果.混淆矩陣可以直觀的展示各個類別的預(yù)測情況,是分類算法中一種常見的評價指標(biāo).矩陣的列表示預(yù)測類的實例,行表示實際類的實例.通過混淆矩陣的準(zhǔn)確率和召回率可以很好的衡量分類算法的精度.圖2為混淆矩陣兩類的分類結(jié)構(gòu). 表1 具體字段信息 圖2 混淆矩陣 圖2 中,TP (True Positives)為被正確地劃分為正類的數(shù)量;FP (False Positives)為被錯誤地劃分為正類的數(shù)量;FN (False Negatives)為被錯誤地劃分為負(fù)類的數(shù)量;TN (True Negatives)為被正確地劃分為負(fù)類的數(shù)量. 通過混淆矩陣可以計算出每個類別的準(zhǔn)確率、召回率和F1測度,這些都是評估分類模型常用的重要指標(biāo). (1)準(zhǔn)確率(Precision): 準(zhǔn)確率表示在預(yù)測結(jié)果中,預(yù)測為正類且確實為正類的數(shù)據(jù)量占預(yù)測為正類數(shù)據(jù)量的比例: (2)召回率(Recall): 召回率是覆蓋面的度量,表示為預(yù)測為正類且確實為正類的數(shù)據(jù)量占所有正類數(shù)據(jù)量的比例: (3)F1 測度 (F1-measure): F1測度是Precision和Recall加權(quán)調(diào)和平均,計算公式如式(13)所示: 基于改進(jìn)隨機森林算法的停電敏感用戶分類模型的代碼是基于Spark1.6.0實現(xiàn),所使用的實驗環(huán)境為8臺硬件配置為 Core Duo 2.0 GHz CPU、16 GB 內(nèi)存,軟件配置為Ubuntu 12.04的虛擬機組成的集群. 3.3.1 算法精度實驗 為了比較基于改進(jìn)隨機森林算法的性能,在實驗中采用基于Spark的標(biāo)準(zhǔn)隨機森林算法(RF)和SVM算法作為對比,檢驗不同算法構(gòu)建出來的停電敏感用戶分類模型在測試數(shù)據(jù)上的精度.選擇SVM算法的原因是,SVM算法泛化能力高,通過選取合適的核函數(shù)可以處理高維特征的數(shù)據(jù).每次實驗均通過10-折交叉驗證,模型訓(xùn)練20次,取均值作為模型運行一次的性能.改進(jìn)隨機森林算法的參數(shù)k表示森林的規(guī)模,本文實驗設(shè)置為300.參數(shù)fmax表示數(shù)據(jù)的最大特征數(shù),由于總特征數(shù)不多,取值為none,代表考慮所有特征數(shù).參數(shù)dmax表示樹的最大深度,根據(jù)實驗數(shù)據(jù)集的特征數(shù)取值為20.標(biāo)準(zhǔn)隨機森林算法的參數(shù)設(shè)置與本模型相同.SVM算法中的參數(shù)Gamma為核函數(shù)設(shè)置,一般設(shè)置為 1/m,m為屬性數(shù).參數(shù) cost為懲罰性因子,一般取值為1.0. 3.3.2 數(shù)據(jù)分布不均勻?qū)嶒?/p> 由于停電敏感用戶屬于少數(shù)類,約占數(shù)據(jù)集的0.16%.為了克服不平衡數(shù)據(jù)對算法精度的影響,采用基于Spark的并行SMOTE算法對數(shù)據(jù)做相應(yīng)的處理.SMOTE算法是通過過采樣方法重復(fù)選取少數(shù)類樣本,以提高少數(shù)類樣本的數(shù)據(jù)比例.在此基礎(chǔ)上采用不同過采樣比例進(jìn)行多組分類實驗,尋找最佳的過采樣比例,克服不均衡數(shù)據(jù)的局限性,以提高算法精度. 3.4.1 算法精度實驗 圖3、圖4、圖5為3種不同算法構(gòu)建出模型的準(zhǔn)確率、召回率和F1測度對比.從圖中可以看出,POSCC算法在三個指標(biāo)值上均高于其他的算法.這主要是因為本文算法通過對特征選擇步驟的改進(jìn),在一定程度上降低了特征選擇的隨機性,可以有效的處理多維向量相關(guān)的問題,降低模型泛化誤差,并且可以避免過擬合問題,提高了算法的分類精度.由于SVM算法的核函數(shù)是將高維數(shù)據(jù)映射到低維空間,存在部分?jǐn)?shù)據(jù)精度的缺失,所以精度較低,但又因為其泛化能力高,Recall值較高于標(biāo)準(zhǔn) RF 算法.綜上,POSCC 算法可以有效的對停電敏感用戶進(jìn)行分類. 圖3 不同算法的準(zhǔn)確率對比 圖4 不同算法的召回率對比 圖5 不同算法的F1 測度對比 圖6為三種算法構(gòu)建出的模型運行時間對比.從圖中可以看出,POSCC算法比標(biāo)準(zhǔn)隨機森林算法和SVM算法就有較好的時間性能.SVM算法需要對核矩陣進(jìn)行分析,需要大量的計算時間.標(biāo)準(zhǔn)RF算法直接將用戶的所有特征作為特征的輸入,因此也需要一定的運行時間.POSCC算法通過將Fisher比的特征選擇與隨機森林算法相結(jié)合,使得特征子空間更具有代表性,降低了高維特征的數(shù)據(jù)中存在部分冗余特征的影響,從而減少了模型在決策樹節(jié)點分裂時對于冗余特征的重復(fù)計算,有效的降低了算法分類判斷的計算量.因此POSCC算法運行時間較低. 3.4.2 數(shù)據(jù)分布不均勻?qū)嶒?/p> (1)采用SMOTE算法與未采用SMOTE算法的實驗結(jié)果 圖7為采用SMOTE算法與未采用SMOTE算法的實驗結(jié)果.從圖中可以看出,采用SMOTE算法處理后模型的三種指標(biāo)結(jié)果值比未采用SMOTE算法處理的結(jié)果高,這是因為采用SMOTE算法后,增加了停電敏感用戶類別的樣本數(shù),通過提升算法分類器的學(xué)習(xí)強度,并降低隨機森林中樹之間的相關(guān)性,最終讓模型在停電敏感用戶分類具有更好的分類效果. 圖6 不同算法的運行時間對比 圖7 采用SMOTE算法與未采用SMOTE算法的實驗結(jié)果 (2)不同過采樣比例實驗結(jié)果 使用SMOTE算法進(jìn)行過采樣,通過調(diào)整算法參數(shù),得到5組不同數(shù)據(jù)比例的實驗結(jié)果,如表2所示.從表中看出,隨著采樣比例的提高,準(zhǔn)確率和F1測度均有所下降,當(dāng)比例為4:5時就已經(jīng)接近為0.實驗表明,為了達(dá)到較高的準(zhǔn)確率,應(yīng)該保持較低的過采樣比例,而不能為了增加少數(shù)類樣本數(shù)理一味的提高過采樣比例.所以,本文采用1:5的比例作為SMOTE算法過采樣比例的標(biāo)準(zhǔn). 表2 不同過采樣比例結(jié)果 本文提出了一種基于改進(jìn)隨機森林算法的停電敏感用戶分類算法POSCC.通過引入SMOTE算法對少數(shù)類樣本進(jìn)行處理,提高停電敏感用戶類數(shù)據(jù)比例,降低模型算法的泛化誤差.再對停電用戶數(shù)據(jù)特征的深入分析,改進(jìn)隨機森林的特征選擇方法,根據(jù)Fisher比對特征進(jìn)行分區(qū),按比例選取有代表性的特征,在一定程度上降低算法的隨機性,提高了算法的性能.實驗表明,相比較于其他算法,本文提出的算法可以很好的對停電用戶的敏感度進(jìn)行分析,具有較高的準(zhǔn)確率和時間性能.由于停電數(shù)據(jù)是實時更新的,下一步的工作,將考慮設(shè)計基于增量分類算法的停電敏感用戶預(yù)測,以進(jìn)一步提升算法的準(zhǔn)確性與實用性.3 實驗結(jié)果與分析
3.1 數(shù)據(jù)集
3.2 評估指標(biāo)
3.3 實驗方案
3.4 實驗結(jié)果與分析
4 結(jié)束語