劉 倩,劉曉淞,李 時,孫 靜
(1.滁州職業技術學院 機電工程系,安徽 滁州 239000;2.國網滁州供電公司 營銷部,安徽 滁州 239000)
風能是發展最為迅速的綠色可再生資源,其資源豐富、永不衰竭,風力隨著季節和地理位置的不同具有特殊性,在夏季和白天較少、冬季和夜里較多,所以風電系統輸出功率具有波動性和間歇性的特點,電網對其準確快速地進行調度具有重要意義[1].風電功率的預測主要針對其準確性及快速性進行研究,現有的較多功率預測方法是利用歷史功率數據的預測模型[2-3],基于概率分布量化指標和灰色關聯決策[4],SVM預測方法采用大量歷史數據特征值作為基礎迭代出預測結果,隨著智能電網數據的日益增加,訓練和測試采用的特征值變得復雜和龐大,SVM預測方法如何在去除智能電網數據冗余的同時保證其訓練的精度和快速性成為如今研究的熱點,本文提出將MapReduce應用于SVM算法,并在Hadoop環境下對風電系統輸出功率進行仿真驗證.
SVM是一個有監督的學習模型,在分類、預測、模式識別、統計分類和回歸分析中應用廣泛,是一種求解二次規劃問題和回歸問題的監督式學習方法,以統計學習理論為基礎,可以處理線性或非線性樣本,在求解凸二次優化問題的過程中尋找最優分類超平面,避免求解陷入局部最小值.SVM回歸的原理[5]:通過一個非線性映射關系φ(x)將樣本映射到一個高維特征空間,并在特征空間求解下面的估計函數并進行線性回歸:

由于徑向基核函數優點多于其他核函數[5],在工程上得到較多使用,筆者采用徑向基函數(RBF)為核函數:

SVM預測方法具有堅實的數學理論基礎,該方法包含了大量以樣本數為階的矩陣計算,當數據集很大的時候,支持向量機的訓練時間和存儲空間也會非常巨大,普通商用計算機無法滿足.
智能電網數據規模的不斷擴大使得傳統支持向量機在處理大規模數據時表現出訓練時間長,內存不足的問題,無法實現較好的分類效果,于是出現并行式支持向量機,其算法是通過并行計算提高訓練速度,其過程:將大數據樣本集合TD隨機地分成N個組,各個組均勻分布成小數據塊,利用Map操作分別訓練N小數據塊[6],獲得優化后的N個支持向量,再利用Reduce進行合并,重復此過程,在此過程中每個并行數據集合相互獨立,在Map和Reduce階段就刪除了非支持向量[7-8],使訓練過程加快了,從而簡化了模型,原理圖[9-10]如圖 1 所示,圖 2 為 Map 過程,圖 3 為 Reduce 過程[11].

圖1 并行層疊支持向量機結構圖
圖1將原始數據集TD分成8個等分,D1-D8為第一層訓練集合,SV1-SV8為對D1-D8訓練之后的支持向量,然后將SV1-SV8兩兩合并,D9-D12為合并之后得到的第二層數據集.重復以上操作過程,再次對數據集進行訓練和合并,得到第三層數據集合和對應的支持向量,最后得到的支持向量集SV13作為最終的分類器模型.在此過程中,已將非支持向量進行過濾,能達到很好的并行效果.

圖2 Map過程

圖3 Reduce過程
MapReduce擁有高效簡單的并行編程框架,有著函數式編程范式思想.圖2 Map過程通過設置Random()函數,其作用是將TD1-TD6均勻分布到D1-D6塊中,這個過程能得到具有代表性的訓練樣本;圖3 Reduce過程將每個數據集進行訓練,這個過程整合Map的輸出結果,消除了非支持向量,使訓練過程加快了.
并行式支持向量機算法流程如下:
(1)判斷當前迭代的層數i;
(2)若當前迭代次數i∈(1,n),Map過程將原始數據集均勻隨機地分成2n-i個小數據塊;Reduce過程會分別獨立的將每個小數據塊進行訓練,去除非支持向量,得到支持向量并輸出,同時迭代層數i減1,否則本算法運行結束,輸出最終訓練模型.
注:在每個Map,Reduce優化階段數據分割和中間支持向量機的優化算法采用的梯度上升和下降算法:

其中Qi是核矩陣,ei是全1矩陣,根據上面公式來測試子數 據塊是否違反最優化KKT條件,如果有數據塊不滿足約束條件,則將其轉化為二次規劃問題,這個過程使原始目標函數變小,同時使得正確率更高.
本實驗采用5臺PC機和一臺交換機,其硬件配置:PC機均為雙核CPU,內存1 GB,硬盤100 GB,網絡環境為百兆局域網,Hadoop集群工作在Linux環境下,MapReduce程序使用Eclipse工具Java語言開發,集群間節點通信采用SSH服務.
實驗訓練和測試的數據集采用滁州市某風力電廠數據,對其預處理之后有12個特征值,分別為風速、有功功率、無功功率、環境溫度、油溫溫度、軸承溫度、相電流、發電機溫度、相電壓、機艙溫度、風向角、總電量,整個數據集共有7 284行,訓練數據和測試數據比例為3:1.
本實驗采用平均相對誤差作為風力發電功率預測結果評價指標:

式中Li、分別為風機發電功率的真實值和預測值.
用筆者算法提出的并行SVM算法和傳統單機SVM算法對風機數據集分別進行訓練和測試,采用2017年10月1日至11月30日的風機發電功率為訓練數據(部分數據如表1所示),預測2017年12月1日至6日,觀察記錄訓練所需的時間和正確性結果.圖4為兩種預測模型下日負荷預測曲線;表2顯示了兩種預測模型的平均相對誤差預測結果.

表1 風電場部分訓練狀態參數

表2 平均相對誤差預測結果對比 2017年
從表2可以看出經Hadoop優化后的SVM模型平均相對誤差值有所減少.
圖4為某天24小時內風電廠發出功率的日負荷預測圖,a曲線為當日風機實際發出功率的曲線,b曲線為本文算法預測的風電場日發出功率,c虛線為SVM預測的風電場日輸出功率曲線.從仿真結果可以看出在預測時間的3-10時、11-16時以及預測曲線末尾處本文算法的預測效果得到明顯改善,此實驗說明經過Hadoop優化之后的SVM預測模型在精度上能夠得到一定提升.

圖4日負荷預測曲線
圖5 為筆者采用的預測算法和傳統SVM預測算法在不同大小數據集的情形下系統運行時間對比曲線圖,可看出在訓練樣本較少的階段,由于筆者提出的分布式SVM結構在Map訓練階段和Reduce訓練階段也需要耗費時間,導致其在運行時間上并沒有優勢,說明在小樣本的情況下,本文算法模型在運行時間上并不足以體現出其分布式算法的特點;隨著訓練樣本數量的增加,傳統的SVM模型的訓練時間增加明顯,經Hadoop優化后的分布式SVM模型的訓練時間增幅不大,說明本文的算法在大數據集情況下在減少系統運行時間上有很大優勢,所以,將Hadoop優化后的分布式SVM模型運用于風電功率預測具有一定的理論基礎,可以取得較好的結果.

圖5 不同預測模型運行時間對比曲線
筆者針對現有的智能電網大數據情況下如何快速準確對風力發電功率進行預測問題,提出用Hadoop對SVM進行優化,利用MapReduce建立分布式SVM尋優模型,通過實驗對風電場輸出功率進行預測分析,實驗結果表明:在大數據特征集合下本文算法可快速有效地處理大規模的數據集,減少預測系統的訓練和預測時間,提高算法計算效率,得到較高正確率.