張梅,保富
(云南電網有限責任公司信息中心, 昆明 650217)
近年來,隨著供電企業管理水平的持續提升,客戶對優質服務的要求也逐漸提高。特別是95598電力服務監管水平的不斷提高,如何提高客戶滿意度,減少投訴,已成為電力公司重要的研究課題之一[1]。隨著人工智能技術的發展,使復雜的投訴工單預測成為可能。促進了事前預警、事中管控、事后分析等綜合投訴管理系統的建設,對客戶需求進行詳細的專門管理和分級管理,從預防的角度有效管理投訴[2]。因此,利用95598歷史工單數據建立投訴預測模型,對提升供電企業的服務水平具有重要意義。
目前,國內外許多學者對電力客戶投訴預測技術進行了研究。文獻[3]通過深度學習的方法構建用戶投訴預測模型,該模型使用深度網絡模型的深度置信網絡來自動學習用戶功能的非線性組合,并通過實驗驗證了該模型的自動學習能力。文獻[4]通過隨機森林算法構建用戶投訴預測模型,可以實現95598工單的直接投訴預測和轉化投訴預測。文獻[5]中通過隨機森林算法構建用戶投訴預測模型,從數據、指標、參數三個方面對模型進行優化,投訴預警模型已經進行了試點應用。文獻[6]中通過自然語言處理技術對投訴文本進行挖掘,采用隱馬爾可夫模型對投訴工單進行詞頻統計,并計算關鍵詞的權重,根據權重對服務策略進行調整,以客戶滿意為最終目的。文獻[7]構建了基于遺傳算法和BP神經網絡的客戶投訴預測模型,實現了較高準確率的客戶投訴預測。上述預測模型雖然取得了一定的效果,但是預測結果可能會陷入局部最優解的情況,預測準確度有待提高。
文章提出了一種基于局部線性嵌入和深度森林算法的客戶投訴智能預測模型,用于預測一周的投訴量,促進了事前預警、事中管控和事后分析的投訴綜合管理系統的建設。通過仿真對模型改進前后的有效性進行驗證。
基于大數據的客戶投訴智能預測模型的體系結構如圖1所示。其由三層組成,分別為數據采集層、數據挖掘建模層、模型應用層。

圖1 基于大數據的客戶投訴預測模型結構
數據采集層把多個電力系統信息(用戶信息、業務信息、投訴信息等)作為輸入數據[8-10]。數據挖掘建模層基于數據采集層信息應用局部線性嵌入和深度森林算法建立投訴預測模型,預測一周的投訴量,促進事前預警,事中管控和事后分析的綜合投訴管理系統建設。模型應用程序層顯示并發布預測數據,制定相關計劃,然后對其進行評估。
在建立客戶投訴模型的過程中,采用電力系統信息中的用戶信息、業務信息、投訴信息等作為輸入特征向量。這些信息主要包括用戶所在地區、工單成單時間、工單成單原因、工單業務類型、天氣因素、系統檢修計劃、設備檢修計劃等。這樣導致訓練模型的訓練集數據量大、特征向量維度高,使所建立的模型會出現以下問題:1)模型建立計算時間長,計算量大;2)類似數據的特征向量較多,導致模型陷入局部最優解[11-13]。其中陷入局部最優解的模型,當輸入特征向量中某一個特征參數發生變化時,無法準確輸出正確預測值[14-16]。比如當用戶信息、業務信息、投訴信息等特征向量不發生變化,僅業務日期發生變化改為節假日時,投訴數量會降低。但是由于非節假日特征向量數據過多,導致陷入局部最優解的模型依然會輸出預測較高的投訴數量。因此,首先需要對客戶投訴預測模型的輸入特征向量進行降維處理,將類似特征向量進行合并,不僅可以減少建模計算量,還可以提高預測準確度[17]。
文中客戶投訴預測模型的輸入特征向量設為X,其可以表述為:
X= (DR,TI,RE,KI,WE,TM,RC,SRP,ERP,TS)
(1)
式中DR為用戶所在地區向量;TI為工單成單時間向量;RE為工單成單原因向量;KI為工單業務類型向量;WE為天氣因素向量;TM為成單時溫度向量、為成單時風速向量;RC為用戶重復來電向量;SRP為系統檢修計劃向量;ERP為設備檢修計劃向量;TS為用戶投訴心態向量。一般一個省份一天的投訴工單約100~200件,且需要提取1~2年的投訴工單的特征向量訓練投訴預測模型。因此首先需要進行降維處理。
文中采用局部線性嵌入算法對原始數據進行降維處理。該算法屬于流形學習算法,降維時可以有效保留特征參數樣本局部的線性特征[18]。由于文中設置的客戶投訴預測模型的輸入特征向量X為非全局線性,且局部線性嵌入算法具有全局最優無需迭代的優點,因此文中采用局部線性嵌入算法對投訴預測輸入特征向量X進行降維處理。
局部線性嵌入算法可以將高維空間的特征向量投影至低維空間,在完成特征向量降維處理的同時,使計算前后相鄰特征參數之間的線性結構基本不變[19]。文章將N個特征參數組成的客戶投訴預測模型的輸入特征向量矩陣X=(x1,x2,…,xN)通過局部線性嵌入算法降維得到由D個特征參數組成的特征向量Y=(y1,y2,…,yD)[20-21],局部線性嵌入算法主要步驟包括:
步驟1:根據度量空間距離xij和xjk計算每個樣本點的鄰近點之間的歐式距離dij,如下所示:
(2)
式中p=2,最終可計算得到離樣本點距離最近的K個點作為鄰近點。
步驟2:計算重構權值矩陣,利用對誤差函數ε(W)進行定義,使重構誤差最小,如下所示:
(3)
式中xij(j=1,2,…,K)為樣本點xi的鄰近點;wij為xi與xij間的權值,wij滿足式(4)中的定義:
(4)
式(3)和式(4)可以合并,得到:
(5)
式中Xi=(xi-xi1,xi-xi2,…,xi-xk),Zi=XT。iXi是第i個樣本點的局部協方差矩陣。wi=[wi1,wi2,…,wik]T為第i個樣本點的局部重建權值向量。這樣求解式(5)成為了一個約束最小乘方問題,可以采用拉格朗日乘子的方法來解決該問題:
步驟3:將所有樣本點映射到低維空間,此時需要滿足如式(6)中的要求:
(6)
式中φ(Y)為輸出函數,yi為xi的輸出向量,yij(j=1,2,…,k)為yi的k個鄰近點,并可以滿足:
(7)
(8)
式中wij(i=1,2,…,N)可以放置在N×N的矩陣W中,且滿足:
(9)
式中Wi為矩陣W的第i列,Ii為N×N的單位矩陣第i列,Y為輸出向量,即Y=(y1,y2,…,yN),可以得出:
(10)
若需要誤差函數ε(W)趨近于0,則Y應為M的從小到大排列的d個非零特征值構成的特征向量。由于最小非零特征值已無限接近于0,文中選擇第2至第d+1個的非零特征值構成的特征向量作為降維處理后的輸出結果Y=(y1,y2,…,yd-1)。文中Y為降維后輸入到訓練模型中的客戶投訴預測特征向量。
國內學者周志華于2017年提出了深度森林算法,該算法模型屬于深度學習模型,其將傳統的隨機森林算法模型進行集成,可以有效進行預測[22]。深度森林算法又稱為多粒度級聯森林(gcForest,multi-grained cascade forest)算法,該算法可以在各層自動訓練模型參數,無需反向傳播,訓練時間短,適用于如投訴預測、負荷預測等具有較大數據量的預測模型建立。此外,由于深度森林模型的基本單元為隨機森林中的決策樹,需要人工設置參數數量較少,泛化能力較好。
gcForest算法模型主要由多粒度掃描和級聯森林組成[23]。其中,多粒度掃描為采用不同尺寸(粒度)的滑窗在原始特征向量上滑動取值采用,從而獲得更好的特征學習效果;級聯森林由多個隨機森林構成,對輸入的特征向量進行表征學習。這兩個部分的算法模型基礎均為隨機森林算法模型。
2.2.1 隨機森林算法
隨機森林算法為有監督算法,可用于數據分類和回歸預測[24]。在訓練模型時構建決策樹,通過提高決策樹的數量進行多次決策,輸出回歸預測概率或結果。該算法對多元線性特征向量具有較好的應用效果,可以有效解釋投訴預測這種大量數據的特征變量。
在該隨機森林算法中,對于設定好的訓練集數據XTi(i=1,2,3,…),響應變量為YTi(i=1,2,3,…),對訓練集生成的隨機數據樣本進行切割,利用決策樹進行擬合。若XTb和YTb為訓練集XTi和YTi的n個訓練樣本,對其訓練回歸樹fb,則輸出樣本xt的預測值為:
(11)
式中M為落袋次數。文中選用基尼指數(gini index,GI)作為構建隨機森林算法模型中的準則。在投訴預測中,對于投訴與非投訴而言,即為二分類問題,GI為:
(12)
式中pk為樣本,屬于k類別的概率。對他投訴預測特征向量數據集X,GI為:
(13)
式中Xk為第k類樣本數量。因此,根據特征向量T劃分的數據集GI為:
(14)
隨機森林算法模型通過重復采樣隨機生成多個訓練子集,將未采樣到的樣本組成袋外數據,并在各訓練子集上訓練預測決策樹。各決策樹的內部節點被抽取所有的特征參數作為該節點的分裂屬性集。文中各決策樹深度被設為4,內部節點和葉子節點最小樣本分裂值分別被設為2和1。在訓練集中,訓練特征向量數據如果超過分裂閾值,會被進行剪枝處理。
2.2.2 多粒度掃描
在多粒度掃描計算中,采用多個不同尺度的滑動窗口對原有特征進行重新表示。該方法不同于卷積操作的是滑動窗口只進行掃描特征,不涉及參數跳閘,所掃描的特征向量作為新的數據樣本。例如,初始投訴預測特征向量的維數為400,滑動窗口尺寸為100,則可以得到301個維數為100的特征向量,并作為新的預測特征向量數據樣本輸入到隨機森林中。對投訴預測特征向量進行多粒度掃描,可以提高其表征學習能力。具體算法過程如圖2所示,具體步驟如下:
步驟1:輸入完整的P維投訴預測特征向量數據樣本;
步驟2:采用長度為k的滑動窗口采樣,滑動步長為λ,可以得到S個k維特征子樣本向量,S的計算公式為:
S=(P-k)/λ+1
(15)
步驟3:將子樣本用于訓練隨機森林,并在每個森林獲得長度為C的概率向量和長度為S×C的表征向量;
步驟4:將各層的F個森林的輸出結果組合成為本層輸出向量。

圖2 多粒度掃描計算過程
2.2.3 級聯森林
級聯森林是深度森林算法模型的核心,即使不繼續多粒度掃描也可以用級聯森林計算,從而進行預測[25]。多粒度掃描的輸出結果作為級聯森林的輸入特征,各尺度的掃描結果輸入到級聯森林的第一級森林。級聯森林由多種隨機森林組成,其作用為對輸入特征進行表征學習。級聯森林的結構如圖3所示,每個級聯層均包括兩個隨機森林完全隨機森林,其中各隨機森林均含有若干棵決策樹,因此每個隨機森林或者完全隨機森林都會輸出一個特征向量預測結果。在級聯森林中,上一個級聯層的輸出結果作為下一個級聯層的輸入,可以將特征向量的特征信息傳至下一層,每一層都可以接收到上一層的特征信息和原始特征信息,提高了預測準確度。
文中將交叉驗證方法應用在級聯層的隨機森林中,從而實現自適應調節級聯森林的層數。即在某個級聯層訓練完畢后,將輸入特征向量作為驗證集進行預測結果計算,若該級聯層的預測準確率高于上個級聯層的預測準確率,則繼續進行級聯森林的構建,反之級聯森林構建結束。因此,級聯森林模型的層數可以實現自動收斂,且最后一層級聯層的輸出類向量為預測結果。

圖3 級聯森林結構圖
采用MATLAB 2014a作為仿真軟件進行仿真測試,操作系統為Windows 10。計算機配置為:處理器為Inter i5-7200U,處理器主頻為2.7 GHz,計算機內存為8 GB。
使用某地2015年7月至2017年11月的數據作為訓練集,共計131 837個投訴工單;使用2017年12月至2018年9月的數據作為測試集,共計69 376個投訴工單。由于時間跨越較長,數據量較大且特征向量維度較高,通過局部線性嵌入算法對原始數據進行降維處理。然后對降維后的投訴預測特征向量進行多粒度掃描。最后基于級聯森林建立深度森林算法模型,建立基于局部線性嵌入和深度森林算法的電力客戶投訴預測模型,輸出一周后的投訴量預測值。
對2019年9月至2019年12月之間選取10周數據進行預測。將文獻[7]提出的GA-BP網絡預測模型和不采用降維處理建立的深度森林預測模型進行比較,對深度森林預測模型的有效性進行驗證。圖4為一周后投訴量預測結果與實際值之間的比較。

圖4 預測結果與真實值對比
從圖4可以看出,基于深度森林算法預測結果相對于基于GA-BP神經網絡算法的預測結果更接近于真實值。但是深度森林預測模型在三個時間間隔的預測效果相對較低。圖5所示預測誤差較大的區域。
對誤差較大區域進行分析,從圖5中可以看出,誤差變大的時段是2019年10月1日至2019年10月7日,也就是國慶節期間。國家電網公司規定,國慶長假期間欠費的用戶不予停電處理,長假對電力相關業務也有一定影響。大大減少了國定假日投訴數量,所以預測誤差較大。從10月15日到10月18日,由于工單系統計劃維護,未將投訴量納入系統,所以預測誤差很大。從11月21日到12月1日,由于繳費系統較大,無法付款,投訴迅速增加,所以造成很大的預測誤差。

圖5 預測誤差較大區域
由于長假期影響、短假期影響和系統維護和故障影響持續時間相比于正常工作日的特征向量數據過少,導致不采用局部線性嵌入降維的深度森林預測模型會陷入局部最優解,而陷入局部最優解的模型依然會輸出預測較高的投訴數量。此外,在工單系統故障或者維護時,該系統無法獲得任何投訴共度。因此,根據此特殊事件的影響,需要采用局部線性嵌入算法對客戶投訴預測模型的輸入特征向量進行降維處理,將類似特征向量進行合并,不僅可以減少建模計算量,還可以避免陷入局部最優解,從而提高預測準確度。
將文中所提出投訴預測模型計算得到的一周后投訴量仿真結果與投訴量實際值進行比較,如圖6所示。

圖6 優化后的預測結果與真實值對比
對優化前和后的仿真試驗結果與實際值之間的相對誤差進行了計算,計算公式如式(16)所示,其中相對誤差小于10%、20%和30%的數據占比百分比,如表1所示。

(16)
由圖6和表1中數據可知,采用局部線性嵌入算法對高維投訴預測特征向量進行降維處理,預測效果更為接近真實值,驗證了基于深度森林算法的客戶投訴預測模型的準確性和實用性。文中模型可以實現電力公司一周投訴量的預測。也可應用于其他類型的工單及其他領域,具有一定的推廣應用價值。

表1 優化前后誤差對比
文中在電力客戶投訴預測模型結構的基礎上,提出了一種將局部線性嵌入和深度森林算法相結合的電力客戶投訴預測模型。局部線性嵌入算法對高維特征向量進行降維處理,可以避免深度森林預測模型陷入局部最優解;多粒度掃描可以提高深度森林的表征學習能力。采用MATLAB仿真軟件進行測試,驗證了預測模型的參考價值。結果表明,該預測模型可以更準確地預測客戶投訴趨勢。考慮到當前的實驗設備和數據規模,文中所做工作仍處于起步階段。下一步研究工作的重點是不斷改進和完善基于改進BP神經網絡電力客戶投訴預測模型。