白 雪,劉 剛+,黃 蕾,鐘 韜,喬 丹,楊執鈞
(1.上海電力大學 自動化工程學院,上海 200090; 2.上海電力大學 圖書館,上海 200090)
在世界能源消耗和相關二氧化碳排放量中,建筑能耗占據著相當的比例。相關研究結果表明[1],建筑能能耗約占我國整體能耗的1/3,因此建筑節能管理變得尤為重要。研究者們自20世紀90年代早期開始開發建筑能耗預測仿真工具,這些仿真工具可以進一步劃分為工程方法、智能算法以及混合方法3類[2],其中智能算法具有計算速度快、模型簡單、學習能力強等優勢,逐漸成為研究重點。
智能算法預測建筑能耗可分為使用單一學習算法進行預測和集成多種基礎預測方法以提高預測精度的集成模型預測方法,其中集成模型提供了一種克服假設空間中表征性不足的方法,成為更好的選擇[3,4]。與單一預測模型相比,集成預測方法具有更高的預測精度,成為近年來的研究熱點。Fan等初步開發了基于數據挖掘的集成模型來預測第二天的能耗和峰值功率需求[5];周峰等建立基于支持向量機的大型公共建筑能耗預測模型,分析并預測建筑的逐日能耗[6];何春華等分別用人工神經網絡中的前饋神經網絡和物理原理建立預測模型,對兩種方法進行評估后發現兩種模型均適用且內部負荷對預測的影響更大[7];姚麗麗等通過建立一種基于BP神經網絡的模型配置方法,創建可配置化的預測模型[8]。
在建筑能耗預測中,高維度的數據會導致算法運行性能以及準確性的降低,選擇有效的特征子集能夠優化集成模型的效果。本文提出一種基于隨機森林特征選擇算法的集成回歸模型(RF-GBDT)建筑能源預測方法,利用隨機森林特征選擇算法選取分類正確率最高的特征子集作為數據集,建立集成模型并進行測試,實驗結果表明,提出的RF-GBDT模型比傳統集成模型性能有大幅提升。
隨機森林(random forest,RF)算法由Breiman開發用于分類和回歸問題[9]。RF已被證明非常適合處理高維問題方面,有良好的泛化性能[10]。
本文采用隨機森林算法的變量重要性度量對特征進行排序,然后使用序列后向選擇方法(sequential backward selection,SBS)從特征的全集開始搜索,每次從特征子集中去掉一個特征,選出分類準確率最高的特征子集作為集成模型的輸入數據集。為驗證分類性能,本文采用10折交叉驗證法將數據集分為訓練集和驗證集。算法過程如下:
(1)輸入完整的數據集S
1) 設置最大分類正確率TGMaxAcc=0
2) For(ft in N-2)
3) 將S隨機劃分為10等份
4) 設置局部最大分類準確率TLMaxAcc=0
5) 設置局部平均分類準確率
TLMeanAcc=0
6) 初始化10折交叉驗證中每次迭代的分類準確率
TLAcc[1:10]=0
(2)For(i in 1:10)
1) 在S訓練集上使用隨機森林算法創建分類器
2) 在測試集上進行分類并比較結果,計算準確率TLAcc
3) TLMeanAcc=TLMeanAcc+TLAcc[i]/10
4) If(TLMaxAcc<=TLAcc[i])
則TLMaxAcc=TLAcc[i]
對特征按變量重要性排序得到FSort
5) If(TGMaxAcc<=TLMeanAcc)
則TGMaxAcc=TLMeanAcc
FGSort=MAS
6) 從MAS中去掉特征重要性得分最低的特征成為新的S
(3)輸出分類準確率最高的特征子集MAS
其中ft代表循環變量,N為數據集中所有特征的個數
基于基礎算法的選擇,集成預測模型可以進一步分為兩種類型,即同構集成模型和異質集成模型,同構集成模型由一種算法對不同數據子集進行學習后集成,異構集成模型是不同算法對同一訓練集學習后集成[11]。本文使用異構集成模型,選取6個常用機器學習算法作為基礎算法進行集成。由于每種預測算法都有各自的優缺點,因此集成模型能夠使基本模型互相補充,從而有助于提高泛化性能。
梯度提升決策樹(gradient boosting decision tree,GBDT)是由Friedman提出并改進的集成學習算法[12],主要思想是基于之前建立的基學習器的損失函數的梯度下降方向來建立下一個新的基學習器,不斷縮小損失函數,使得模型的回歸預測性能不斷提高。算法如下
(1)初始化弱學習器
(1)
輸入訓練樣本T={((xi,yi)(i=1,2,…N))}最大迭代次數M,γ為使損失函數L最小化的常數,損失函數L選取平方誤差損失函數
(2)
其中,yi為實際值,g(xi)為預測值。
(2)對迭代輪數m=1,2,…M有:
1)對每個樣本i=1,2,…,N,計算負梯度
(3)
2)將上一步計算的數據(xi,γim)(i=1,2,…N,m=1,2,…M)作為下棵樹的訓練數據,得到一顆新的回歸樹fm(x),其對應的葉子節點區域為Rm,j,j=1,2,…J。其中J為回歸樹m的葉子節點的個數。
3)對葉子區域j=1,2,…,J計算最佳擬合值
γmj=argmin∑xi∈RmjL(yi,fm-1(xi)+γ)
(4)
4)更新強學習器
(5)
(3)得到強學習器f(x)
(6)
本文使用基于隨機森林的特征選擇算法生成最優特征子集,然后采用梯度提升決策樹算法(GBDT)建立的RF-GBDT集成回歸模型流程如圖1所示。

圖1 RF-GBDT模型
本文選取某校園建筑兩年的小時耗電量數據集,包括溫度、濕度比、氣壓等環境特性、居住比特性等14個特征屬性。表1是14個特征屬性描述。

表1 特征屬性描述
其中coshour將每個小時相對于一天內的時間量化為一個-1到1之間的數值,即
(7)
本文通過對比使用原始數據集和以Pearson數據相關性以及隨機森林兩種特征選擇方法選出的特征子集訓練的3種集成模型的性能來驗證RF-GBDT,使用python語言編程實現。
Pearson相關性的計算公式如下
(8)

集成模型選擇6個常用機器算法作為基礎算法,分別是MLR(多元線性回歸)、LASSO(套索回歸)、EN(彈性網絡回歸)、SVM(支持向量機)、KNN(K近鄰算法)、CART(分類與回歸樹)其中MLR、LASSO、EN為線性算法,CART、SVM、KNN為非線性算法。
進行多次調參實驗后,建立的模型相關參數如下:基礎算法中的KNN經近鄰個數為7,集成算法GBDT主要參數:弱學習器最大迭代次數為7370,每個弱學習器的步長為0.1,決策樹深度為3,內部節點再劃分所需最小樣本數5,特征子集分為70%訓練集和30%測試集。
本文的評價指標使用均方根誤差(root mean square error,RMSE)和決定系數(R-square,R2),兩個指標的定義如式(9)、式(10)所示
RMSE
(9)
R2
(10)

使用Pearson相關性分析和隨機森林特征選擇算法從原始數據集中篩選出的特征子集見表2,可以看出無論是從數據相關性還是從特征重要性來看,用電量與時間點(coshour)和居住者行為的關系都相當密切,這與實際的生活情況也是相吻合的;開始測量和結束測量的時間點與用電量的數據Pearson相關性較低,但在使用隨機森林算法進行特征選擇時在所有數據特征中位居前列,這是因為其與時間點(coshour)密切相關。而外部環境因素中,光照、溫度、壓強、濕度對預測結果有著較大的影響。

表2 Pearson特征子集與MAS特征子集
分別將兩種特征子集作為輸入數據集所建立的集成模型的預測結果見表3,使用數據相關性較高的特征作為數據集時,得到的預測結果相比于全部特征的預測精度要低,而使用隨機森林特征選擇算法選出的特征子集(MAS)作為數據集進行預測所得到的預測結果精度要略高于其它兩組。圖2表示兩個特征子集建立的集成模型的預測結果與實際值的對比,使用隨機森林特征選擇算法篩選出的MAS子集的模型的預測精度要明顯高于基于Pearson相關性分析篩選出的特征子集。觀察Pearson相關性分析子集的預測曲線發現其在某些時間段的較低能耗值的預測結果呈規律性的預測偏差,其原因與子集中的某些特征有關。

表3 不同特征數據集預測精度對比

圖2 兩種輸入數據集的預測效果對比
為了進一步驗證RF-GBDT模型的性能,本文通過實驗對比了使用不同集成算法進行集成的模型的性能以及RF-GBDT模型中的基礎算法在集成前后的性能,實驗結果見表4、表5。相比隨機森林(random forest,RF)和Adaboost集成算法,RF-GBDT模型的性能表現要優秀得多。預測結果顯示RF-GBDT集成回歸模型的性能要明顯優于單一預測算法,而單一模型中SVM、KNN的表現優于MLR、LASSO、EN,可見建筑能源預測這一問題更多表現為非線性。集成后各基礎算法的表現不一,且并不是所有的算法性能都得到了提高,相反,有些算法的精度反而下降了。

表4 集成算法優化性能對比

表5 基礎算法性能對比
由表4、表5數據分析可得,集成后的RF-GBDT模型相比單一算法的預測RMSE平均減小了64.9%,R2平均提高了42.5%,預測性能有了大幅度的提升。集成前后單一算法的預測性能有小幅波動,LASSO、MLR等線性回歸算法的性能普遍有所提升,而KNN、SVM等非線性算法的性能變化不大甚至略有下降,可見集成模型性能的優化并不是靠簡單的提升單一算法預測精度來實現的。
本文提出一種基于隨機森林特征選擇算法的集成回歸模型(RF-GBDT)建筑能源預測方法,使用基于隨機森林的特征選擇算法生成最優特征子集,采用梯度提升決策樹算法集成6種基本算法,并采用該模型對某校園建筑兩年的小時耗電量數據進行預測分析。實驗結果表明,該集成回歸模型精度不僅明顯優于基本模型,且優于使用隨機森林(random forest,RF)和Adaboost集成算法建立的集成回歸模型。
利用神經網絡模型,依據各算法預測精度來確定每個基本算法的權重并進行優化后集成,從而進一步提高集成算法的性能是下一步的研究內容。