一種基於spark的Ftrl電壓預測方法與流程
2023-05-16 03:20:32 2

本發明涉及數據挖掘技術領域,特別是一種基於spark的ftrl電壓預測方法。
背景技術:
配電網中的低電壓現象受多維度因素的影響。總結可能會有以下原因:
1)季節因素。很多地區的用電負荷隨著天氣溫度影響變化幅度很大,再精密的考慮也無法做到電網系統可以應對所有的負荷狀態。需要配電系統可以智能化,根據歷史數據來進行預測調整,讓電壓穩定在一個合理的區間。
2)人為因素。在農村鄉鎮比較顯著,特別農村低電壓線路為三相四線型,工作人員容易在電線桿導線接電,容易造成三相不平衡。
3)地域因素。工業發達城市、綠化城市、學校、工廠、公司等,不同區域的用電方式、高峰期有差異。
對這些因素結合海量歷史數據進行分析,提取出低電壓相關的有效特徵,用大數據框架處理,算法優化模型,可以對低電壓預測提供有效的支持。
大數據已經融入到各行各業,且已經在很多領域取得顯著成功,網際網路大數據思想可以應用到很多場景,在電網類企業,目前也應用極為廣泛。低電壓包含的歷史數據也是海量級別。需要分布式存儲系統、計算框架、以及高容錯機制才能滿足低電壓預測告警的準確、實時、安全性。
針對電壓類數據,每個區域每時可能會產生數t級別數據,需要用業界廣泛實用的hive分區進行存儲。在分布式計算框架選擇上,國內外比較流行的有hadoop、spark等。相對於hadoop,spark將中間數據寫入內存,省去了mapreduce大量的讀寫磁碟io操作,而且spark提供的數據集操作類型很多,而hadoop只有map和reduce。對於迭代運算,以及低電壓預測實時要求高的場景更加適合,也更加快速。
目前基於大數據的低電壓預測業界已經有一些比較成熟的研究。例如,利用自組織神經網絡、邏輯回歸進行低電壓預測,根據用電信息系統數據處理,建立數據分析平臺對電壓實時監測。但是傳統的批量算法無法有效處理超大規模電網類數據和在線數據流。對此提出基於spark的ftrl算法應用於低電壓預測。在線ftrl算法google公司從理論到實踐已經工程化實現,需要結合低電壓應用場景,將算法拓展到分布式spark集群下,
技術實現要素:
本發明的目的在於提供一種基於spark的ftrl電壓預測方法,以克服現有技術中存在的缺陷。
為實現上述目的,本發明的技術方案是:一種基於spark的ftrl電壓預測方法,包括如下步驟:
步驟s1:獲取歷史電力負荷數據以及日均溫度,建立特徵維度,建立特徵平臺;
步驟s2:spark數據特徵處理;
步驟s3:建立基於ftrl在線訓練模型;
步驟s4:根據實際獲取的電力負荷數據以及日均氣溫,通過所建立的基於ftrl在線訓練模型,進行低電壓預測。
在本發明一實施例中,在所述步驟s1中,利用配電網原始數據,結合業務場景,對電壓影響因素進行分層歸類;建立特徵工程,通過離線數據驗證特徵的有效性,將評估效果符合預設標準的特徵加入到線上實時模型。
在本發明一實施例中,所述配電網原始數據從業務應用系統、電能服務管理平臺、營銷業務管控平臺、電源運營管理以及實時監測系統的日誌數據中獲取;所述特徵包括:設備層、運營系統以及用戶類;所述設備層包括:供電半徑、線徑大小以及配變容量;所述運營系統包括:發電量、負荷類以及功率電壓電流;用戶類包括:用戶負荷曲線、凍結電能示值以及低壓投訴。
在本發明一實施例中,在所述步驟s2中,所述特徵平臺對按天對電網類數據進行spark任務調度處理,採用hive分區存儲,數據按日期分區進行存儲,不同類型數據根據預設規則創建對應的hive表,每天的實時數據寫入當天日期對應的分區中;
在進行特徵數據存儲時,剔除丟失電壓數據、電流數據以及採集點數據;在spark讀取hive分區數據時,啟動一個map任務將缺失的數據過濾掉;在提取特徵時做歸一化處理,將數據標準化輸出到保持特徵的hive表中,並按分區存儲;
在進行特徵數據提取時,對對應的數據進行join,過濾掉key對應的value數量大於預設標準數量的數據,提高shuffle操作並行度,採樣產生傾斜的key拆分進行join操作,以解決數據傾斜。
在本發明一實施例中,在所述步驟s3中,包括離線訓練和在線實時訓練;所述在線實時訓練在線計算結果權重,所述離線訓練離線計算結果權重;根據auc對兩種村聯方式的結果權重進行效果對比,將得分高的結果寫入緩存中,並將效果對比結果以及得分高的結果發送至在線實時訓練;所述在線實時訓練通過實時計算,輸出在線計算結果;根據實時計算結果以及得分高的結果更新計算結果權重。
在本發明一實施例中,在出現故障的情況下,將所述離線訓練的歷史訓練權重數據導入至所述在線實時訓練。
在本發明一實施例中,所述離線訓練按天進行增量式訓練,根據影響電壓質量的特徵指標構建訓練數據樣本集,並對數據樣本集進行測試集驗證集劃分;通過spark任務,將auc值最高的一組參數對應的數據轉換成json串保存到hive分區表中;將每天訓練樣本加進來,首先讀取hive中的歷史訓練結果,解析json進行增量式訓練,且將hive分區表中存儲的取出歷史訓練樣本和新增樣本作為訓練樣本進行增量訓練。
在本發明一實施例中,所述在線實時訓練完成實時對樣本數據的計算,得出低電壓程度結果值,根據歷史數據用回歸模型進行結果轉換,預測低電壓結果;所述在線實時訓練每次新樣本處理後的權重更新公式如下:
對上式進行改寫展開後,等價於求解一個最優化問題:
其中,g(1:t)w是對損失函數的估計,λ1||w||1表示l1正則,表示l2正則,σs表示學習速率。
相較於現有技術,本發明具有以下有益效果:本發明所提出的一種基於spark的ftrl電壓預測方法,整體的模型比較複雜,有效特徵提取是其中關鍵的部分,對於電壓影響因素,通過對數據預處理分析,提取有用的模型特徵,對不同維度特徵建立離線模型去驗證結果。採用基於spark框架提出ftrl算法,針對海量電壓數據,提取有效特徵,搭建ftrl實時計算平臺,建立高容錯、實時、準確、快速的低電壓預測系統,該系統可以有效實現低電壓預測告警,相對目前的人工監測機制有了很大改善,保持了高性能,高容錯,有效對低電壓進行預測告警。
附圖說明
圖1為本發明一實施例中spark架構圖。
圖2為本發明一實施例中spark應用調度流程圖。
圖3為本發明一實施例中低電壓預測的特徵維度。
圖4為本發明一實施例中ftrl低電壓預測整體業務邏輯圖。
圖5為本發明一實施例中離線ftrl不同周期auc評估圖。
具體實施方式
下面結合附圖,對本發明的技術方案進行具體說明。
進一步的,在本實施例中,spark採用分布式框架中經典的master-slaver模型。如圖1~2所示,master作為集群主調控制元,負責整個集群任務的調度與執行。worker是其中的計算節點,執行master的調度命令,以及通過心跳向主控節點定期匯報狀態。executor負責任務的調度執行。client作為客戶端提交應用,driver負責一個應用的執行。
spark在模塊間通信用基於scala開發的akka框架。actors是一些包含狀態和行為的對象。彼此之間用顯式傳遞消息進行通信,每個對象維持一個消息隊列,發送和接受的消息會被存放在他們的信箱中。sprak有三種不同的模式:local模式,本地單機環境,主要為了測試應用,無實際價值;standalone模式;yarn模式。整體上看,有四個調度級別,application調度、job調度、stage調度、任務調度。下圖概述了調度過程。
從已有數據提取有效特徵,結合特徵提取最合適的參數,是最優化問題。針對大規模的臺區配電數據,傳統的批量離線處理在性能以及實時性上已經無法滿足要求,特別低電壓預測這種場景下,需要有在線處理的方法來解決這類問題。例如,在對一系列電壓數據進行訓練後,來了一條新的數據,需要預測這條樣本數據是否會產生異常電壓。這類問題表示為:針對一個輸入x=[x1,x2,...,xn],通過某個函數h(x)計算,輸出結果y。根據y連續還是離散,預測被分為分類或者回歸問題。利用樣本數據{(xj,yj)|j=1,2,...,m}訓練h(x)的過程就是最優化求解的過程。常見的求解方法有梯度下降、牛頓法、擬牛頓等批量離線處理方法,笨重不高效。ftrl的提出為在線最優化帶來了福音,可以有效解決高緯度數據量中常出現的稀疏性問題。
在線學習在低電壓預測時,優勢在於每來一個新的電壓特徵數據樣本,就用該樣本產生的loss和梯度對已有的增量式模型做一次迭代,一個一個進行實時訓練,可以滿足大規模數據的場景。ftrl工程實現如下程序所示,對每一維w單獨訓練更新,每維特徵用不一樣的學習率,在代碼中就是lamda2前面的一項。和w全部特徵利用相同的學習率比起來,這種方案充分解決了樣本數據在不同類別特徵分布不均勻性。比如低電壓預測中,天氣維度的特徵訓練樣本比較少,那麼這個維度的特徵在對樣本訓練中,速度可以維持一個比較大的值,這樣每來一個訓練樣本,就能做到在之前的梯度上增加一大步,不用和其他特徵維持一個統一的步調。這種實現對樣本分布不均勻的場景非常合適。
本發明實施例提供一種基於spark的ftrl電壓預測方法。該方法主要包括如下步驟:
步驟s1:如圖3所示,建立特徵維度:綜合原始數據,結合業務場景,對電壓的各類影響因素進行分層歸類。建立特徵工程。對特徵的有效性可以通過離線數據來進行驗證,評估效果好的特徵加入到線上實時模型中去。
進一步的,由於配電網整體系統非常龐大複雜,包括業務應用系統、電能服務管理平臺、營銷業務管控平臺、電源運營管理、實時監測系統等。這些數據可以反應電網的負荷、安全健康程度。在本實施例中,低電壓預測很多訓練數據,特徵生成數據可以從這些系統日誌數據去獲取。
在本實施例中,將獲取的歷史電力負荷數據以及日均溫度作為綜合原始數據。
步驟s2:spark數據特徵處理:對於海量電網系統數據,首先要考慮的是存儲機制。傳統的關係資料庫已經無法滿足存儲要求。hive是基於hadoop分布式的數據倉庫,查詢功能和普通的sql一樣。可以將普通的sql查詢語句轉換成map-reduce任務在分布式集群上執行。數據按日期分區進行存儲,不同類型數據按規則創建對應的hive表,每天的實時數據寫入當天日期對應的分區中。這樣的話spark後續讀取數據按分區載入,速度性能會明顯快很多。
進一步的,特徵平臺對按天對電網類數據進行spark任務調度處理。首先需要剔除各類髒數據,例如丟失的電壓、電流、採集點數據等。在本實施例中,為了保持樣本的完整性,需要在spark讀取hive分區數據時啟動一個map任務將缺失的數據過濾掉。為了加快後面算法層的收斂速度,需要在提取特徵時做歸一化處理,將數據標準化輸出到保持特徵的hive表中,同樣按分區存儲。
進一步的,特徵提取中存在spark中一個非常影響性能的因素:數據傾斜。電網不同系統產生的數據存儲在不同的hive表中,提取特徵過程需要對這些數據進行join。但是有的時候大部分task的執行都非常快,個別task執行極慢,或者原本正常的spark作業可以執行,突然報出oom(內存溢出)錯誤。原因很簡單:數據傾斜,shuffle的時候,需要將key一樣的數據拉取到一個task上執行,如果某個key對應的value非常龐大,導致這個task執行很慢,整個spark作業進度由這個task的時間決定,就會造成這種問題。不同task任務的執行時間的差異,有的相差很多倍,造成數據傾斜。在本實施例中,可以通過過濾掉少數key對應value數量明顯大於標準的數據。提高shuffle操作並行度,採樣產生傾斜的key拆分進行join操作來有效解決數據傾斜導致的問題。
步驟s3:建立基於ftrl在線訓練模型:模型的構建主要分為倆大塊:離線訓練和在線實時計算,如下圖4所示。增加離線訓練,主要為了做容錯備份機制。在線實時計算任務可能會出故障,訓練的數據寫入緩存,但是緩存出故障或者某天的數據異常,導致歷史積累的權重數據丟失,造成的影響是無法回滾有個離線訓練機制,在線任務出故障,前期累積的訓練權重可以從離線導入在線。
進一步的,離線訓練按天進行增量式訓練,根據影響電壓質量的特徵指標構建訓練數據樣本。不斷加入比較典型的臺區數據進行補充完善。對數據集進行測試集驗證集劃分。不斷優化。auc最好的一組參數通過spark任務將結果轉換成json串保存到hive中。每天訓練樣本加進來,首先讀取hive中的歷史訓練結果,解析json進行增量式訓練。每天的結果存儲在分區表中,是備份容錯的一個很好的措施。不至於因為一次的訓練樣本效果不佳而影響歷史訓練結果。可以取出歷史的某一天結果來和新的樣本進行增量訓練。如圖5所示,為離線訓練不同時間周期auc評估圖。
進一步的,在線ftrl算法綜合考慮了fobos和rda算法關於正則項和w的區別,每次新樣本處理後的權重更新公式如下所示:
ftrl算法的前身是ftr,每次找到讓之前所有損失函數之和最小的參數,算法大概流程如下:
1):隨機初始化w;隨機初始化比直接賦值效果好;
2):fortin1,2,...,n
a)得到損失函數ft
b)更新權重
ftrl在ftr的基礎上增加了一個正則項。上面給出了ftrl權重更新公式,其中,g(1:t)w是對損失函數的一個估計,是控制w(也就是model)每次迭代中變化不要太大,λ1||w||1代表l1正則,用於獲取稀釋解。σs表示學習速率,學習速率可以通過超參數自適應學習其中α和β是超參數,t表示第t次迭代。
上述公式中出現l2正則項和正則項,這一項的引入不影響ftrl的稀疏性,使計算結果更加平滑。公式看上去很複雜,進行改寫展開後會發現等價於求解一個最優化問題:
針對特徵權重各個維度拆解成n個獨立的標量最小化問題。上式中最後一項相對於w來說是一個常數項,並且令那麼上式等價於:
上式可以看出,引入l2正則化對於ftrl結果的稀疏性產生任何影響。在一個標準ogd中使用的是一個全局學習策略,這個策略保證了學習率是一個正的非增長序列,對於每個特徵的緯度都是一樣的。
算法的迭代速度非常快,在線計算這種實時場景下非常有實用性,低電壓預測可以實時進行處理給出預測結果反饋給業務端。
進一步的,在線ftrl可以完成實時對樣本數據進行計算,得出低電壓程度這樣的結果值,可以根據歷史數據用回歸模型進行結果轉換,預測結果。
通過實施例提供的上述方案,將ftrl作為低電壓預測的算法,將離線訓練和在線實時計算有效的聯繫了起來,同時,在處理過程中,沒有破壞數據的原始性;另外,針對數據集不充分的缺陷,設置邊際增量加以補充;而對於傳統的將負荷轉化為時間序列處理中,無法進行中長期預測的問題,本方案得到了很好的解決。
進一步的,上述實施例可以通過軟體實現,也可以藉助軟體加必要的web應用平臺的方式來實現,且可以以系統產品的形式體現出來,外部可以調用封裝好的api接口,而無需掌握內部實現細節。
以上是本發明的較佳實施例,凡依本發明技術方案所作的改變,所產生的功能作用未超出本發明技術方案的範圍時,均屬於本發明的保護範圍。