明均仁,肖 凱
(1.武漢大學 信息管理學院,武漢 430072;2.長江水利委員會網(wǎng)絡與信息中心水利發(fā)展研究所,武漢 430010)
水是生命之源、生產(chǎn)之要、生態(tài)之基。隨著我國社會經(jīng)濟的發(fā)展,水資源短缺的問題日益凸現(xiàn),這就需要對水資源進行更加嚴格而有效的管理。水資源管理的基礎工作是要對水資源量的準確掌握,其中包括供水量和需水量。因此需水預測就有著舉足輕重的地位和作用。本世紀以來,人口增加、氣候變化、耕地減少以及城市化進程更導致了地區(qū)需水量的變動加劇。尋找一種合理方法來預測地區(qū)需水量對于社會、經(jīng)濟和環(huán)境的協(xié)調發(fā)展具有重要的意義。
傳統(tǒng)的需水預測方法[1,2]多是利用定額法、回歸分析法、投入產(chǎn)出法、常規(guī)趨勢法、時間序列法等進行預測,但由于影響未來需水量的外生變量均受到各種外界環(huán)境的影響,具有一定的不確定性和模糊性,這些預測方法不能夠得出準確的結果。近年來也有學者利用神經(jīng)網(wǎng)絡模型[3]和模糊數(shù)學方法對區(qū)域需水量進行預測,這類方法充分考慮了外生變量的影響,能以任意精度逼近任何非線性連續(xù)函數(shù),可以利用歷史數(shù)據(jù)得出精確的未來數(shù)據(jù)。但其缺點在于對訓練樣本的依賴程度較大,由訓練數(shù)據(jù)得出的預測模型對檢驗數(shù)據(jù)的穩(wěn)健性不足,而且有可能因為過度訓練而造成過度擬合。為此,本文引入隨機森林方法,對需水預測研究提供有益的參考思路。
隨機森林方法是傳統(tǒng)決策樹方法的擴展,它將多個決策樹進行組合,來提高預測精度。下面首先回顧決策樹模型和組合算法,再對隨機森林理論進行介紹。
本文使用的隨機森林是利用分類回歸樹(CART)作為其基本組成單元,也可稱之為基學習器或是子模型。CART是決策樹技術的一種,也稱為二元回歸分解技術。利用CART可以自動探測出高度復雜數(shù)據(jù)的潛在結構、重要模式和關系;探測出的知識又可用來構造精確和可靠的預測模型。CART模型可分為分類樹和回歸樹兩種。分類樹用于因變量為分類數(shù)據(jù)的情況,樹的末端為因變量的分類值;回歸樹則可以用于因變量為連續(xù)變量的情況,樹的末端可以給出相應類別中的因變量描述或預測。
隨機森林是集成學習[4]算法的一種。集成學習是一種機器學習范式,它試圖通過連續(xù)調用單個學習算法,獲得不同的學習器,然后根據(jù)規(guī)則組合這些學習器來解決同一個問題,可以顯著的提高學習系統(tǒng)的泛化能力。組合多個學習器主要采用加權平均或投票的方法。常見的集成學習算法有裝袋算法、提升算法以及隨機森林三種方法。集成學習可以改善單一方法的不足。因此,集成學習已成為國際機器學習界的研究熱點。
其中裝袋算法是利用自助法的思路,對訓練樣本進行有放回抽樣,以建立多個樹模型,然后集成其預測結果提高預測效果。提升算法與裝袋算法相似,但其區(qū)別在于集成預測時會考慮不同子模型的權重,對表現(xiàn)優(yōu)良的子模型會給予較大的權重。
隨機森林方法與前兩者相似之處在于,它們都會對樣本進行有放回抽樣和集成預測,但區(qū)別在于隨機森林還對解釋變量進行了隨機抽樣。隨機森林不需要對樹模型進行剪枝,而是生成多個完整深度的樹模型。在回歸問題中,將多個樹模型的預測值進行平均,以計算最終預測值。對于分類問題,則通過多數(shù)投票方式來產(chǎn)生最終預測。
(1)從原始訓練樣本中隨機抽出M個樣本。
(2)從解釋變量中隨機抽出N個樣本,從抽中變量中選擇最能有效分割數(shù)據(jù)的變量,使分割后的子集內部變異性最小。對于連續(xù)數(shù)據(jù)通常是采用均方誤作為判斷指標,對于離散數(shù)據(jù)則多采用基尼值。
(3)依據(jù)步驟二得到的變量將數(shù)據(jù)分割為兩個純度較高的子集。
(4)對子集重復步驟三直到分割停止。這就完成了單棵樹的建模。
(5)重復步驟(1)到步驟(4)X次,就構建了有X棵樹的隨機森林模型。
為了建立需水預測模型,首先要確定必要解釋變量作為模型的輸入。根據(jù)資料條件,本文選取10個用水指標以充分表述需水預測的影響因素,這10個指標為:農(nóng)業(yè)灌溉畝均用水量(V2)、萬元GDP用水量(V3)、城鎮(zhèn)人均日用水量(V4)、地區(qū)生產(chǎn)總值(V5)、第一產(chǎn)業(yè)份額(V6)、第二產(chǎn)業(yè)份額(V7)、第三產(chǎn)業(yè)份額(V8)、有效灌溉面積(V9)、地區(qū)人口(V10)、地區(qū)糧食產(chǎn)量(V11)。上述10個影響因子為隨機森林需水預測模型的輸入,地區(qū)總需水量(V1)為模型的輸出變量,即被解釋變量。
利用2003~2008年之間的湖北統(tǒng)計年鑒和湖北水資源公報,從中收集整理了96個樣本數(shù)據(jù)。將其中一半數(shù)據(jù)作為訓練樣本建立模型,剩下一半數(shù)據(jù)作為檢驗樣本以衡量模型的預測能力。由于隨機森林方法對數(shù)據(jù)的量綱和單位并不敏感,所以并不需要進行標準化或歸一化處理。部分樣本數(shù)據(jù)列示在表1。

表1 部分樣本數(shù)據(jù)列表
為了評價模型的擬合及預測能力,本研究根據(jù)以下三種指標來做出評價。分別是平均絕對誤差(MAE)、平均誤差平方和(MSE)、相對誤差平方和(NMSE)。指標數(shù)字越小則說明模型的預測值與真實值之間差異越小,模型的預測能力越強。

本研究用以實現(xiàn)的軟件工具是開源軟件R語言[6-8],其中的randomForest程序包可以方便的建立隨機森林模型。由于R語言比其他統(tǒng)計學或數(shù)學專用的編程語言有更強的面向對象功能,所以該軟件在國外被廣泛使用,包括Google和Facebook公司均使用它進行數(shù)據(jù)分析的各項工作。
表2簡單羅列了randomForest包中用到的主要函數(shù)。

表2 randomForest包主要函數(shù)名稱與功能
首先讀入樣本數(shù)據(jù),然后輸入如下命令以建立模型。
rf=randomForest(V1~.,data,ntree=500,mtry=3,importance=T)a
其中V1表示輸出變量,data表示數(shù)據(jù)集存放名,ntree表示模型中包括的單棵樹數(shù)量,樹太少對建模有一定影響,一般建議不要少于100,不過數(shù)量太多并不會對模型造成影響。mtry表示在分割數(shù)據(jù)時抽取多少個變量,這里通常的做法是選擇解釋變量數(shù)目的平方根,本文的輸入變量有10個,所以這里的參數(shù)設置為3。建模結果存入rf變量,之后再利用predict命令得到需水量的預測值,表3將部分預測值與真實值進行比較,可初步了解模型的預測能力。

表3 隨機森林預測值與真實值對照
首先繪制模型的誤差曲線圖如圖1所示,其縱軸為模型的均方誤,橫軸為隨機森林中包括樹的個數(shù)。從圖1中可以看到隨著森林中樹的數(shù)量增加,模型誤差逐漸遞減,在100的時候達到相對最小,之后有所回升,但總體來看數(shù)量越大模型誤差越小。

圖1
為了評價模型的預測能力,根據(jù)3.2節(jié)所述的三個指標,計算隨機森林模型的對應結果,為了對比分析不同建模方法之間的預測能力,還利用相同的訓練樣本建立了BP神經(jīng)網(wǎng)絡模型和多元線性回歸模型,其結果均在表4中列示。由表4可見,隨機森林模型在三種指標上都為最小值,相對其它建模方法預測誤差較小,體現(xiàn)其預測能力和抗干擾能力很強。

表4 三種建模方法的預測誤差比較
表4中模型的指標有可能是樣本的偶然性造成的,為了盡量減少訓練樣本分布對建模結果的影響,本文采用六重交叉檢驗的方法再次評價三種模型的預測能力。六重交叉數(shù)據(jù)檢驗的思路就是:先將全部訓練數(shù)據(jù)隨機地分為等量的6部分,選擇其中的5份作為訓練數(shù)據(jù),剩下1份作為檢測數(shù)據(jù)來計算模型的相對誤差平方和。然后更換其中的1份數(shù)據(jù),重復實驗。這樣得到6組不同的相對誤差平方和,最后綜合評判各模型的表現(xiàn)。其結果如表5如示。隨機森林模型相對其它建模方法NMSE值最小,顯示預測能力較強。

表5 六重交叉檢驗得到三種模型的誤差數(shù)據(jù)
利用隨機森林模型進行解釋變量的重要性排序,這樣可以使研究者了解在需水量中,哪些解釋變量是比較重要的。從圖2可以看到變量重要性度量,變量重要性度量就是假設某個變量不包括在模型中,會對模型的誤差造成多大的影響。左側圖形的誤差計算依據(jù)是袋外數(shù)據(jù)(OOB data),因為隨機森林方法會有放回地隨機從原始訓練集中抽取N個樣本,組成一個新的訓練集,對于單棵樹而言,有近37%的數(shù)據(jù)可能未被選中,這部分數(shù)據(jù)稱為袋外數(shù)據(jù),可以用它來作為測試數(shù)據(jù)對該樹模型的誤差進行估計。右側圖形的誤差計算是依賴劃分后子集的純度。根據(jù)圖形顯示,本模型中最重要的解釋變量是V10人口,其次是V9有效灌溉面積,之后則是V5地區(qū)生產(chǎn)總值與V11糧食產(chǎn)量。因此,在實際工作中對模型進行外推預測的時候,要注意對這四個變量的預測精度進行控制。

圖2 各解釋變量的重要性度量
本文建立的隨機森林模型對需水預測研究提供了一種新的方法,具有一定的參考意義。隨機森林擅長計算大規(guī)模數(shù)據(jù),而本文由于資料所限,所用的樣本數(shù)偏少。在實際研究工作中加大采樣范圍可以彌補預測精度的不足。樣本中所涉及的解釋變量還可以增加。這些都是影響模型結果準確率的主要原因。另外實驗還發(fā)現(xiàn)模型在預測極端數(shù)據(jù)時誤差較大,在這一點上不如神經(jīng)網(wǎng)絡模型精度高。因此利用隨機森林方法時,預測范圍不要外推超過訓練樣本范圍。
隨機森林方法是一種樹型分類器的組合算法。它的優(yōu)點在于能高效的處理大數(shù)據(jù)集,而且預測精度較高。數(shù)據(jù)在分析前不需要過多的預處理,不需要標準化或是歸一化,但需將缺失值補足。在有大量相關的解釋變量情況下,也不需要進行變量篩選工作,隨機森林可以自動辨識最重要的輸入變量。從模型運行結果分析可以看出,相比較BP神經(jīng)網(wǎng)絡和多元線性回歸等方法,其預測誤差較小。由于隨機森林的抽樣特性,其子模型之間相互獨立,因此隨機森林不會受到異常值和噪聲的影響而出現(xiàn)過度擬合的情況。隨機森林建模過程中產(chǎn)生的OOB數(shù)據(jù)可用來估計模型的泛化誤差。還能同時處理連續(xù)型變量和分類變量,模型預測穩(wěn)健性較高。隨機森林的缺點在于因為沒有剪枝過程,對某些數(shù)據(jù)集可能會形成過度擬合。
[1]賀麗媛,夏軍,張利平.水資源需求預測的研究現(xiàn)狀及發(fā)展趨勢[J].長江科學院院報,2007,(2).
[2]張成才,崔雅博,胡彩虹.需水量預測方法研究[J].氣象與環(huán)境科學,2009,(2).
[3]凌和良,桂發(fā)亮,樓明珠.BP神經(jīng)網(wǎng)絡算法在需水預測與評價中的應用[J].數(shù)學的實踐與認識,2007,(11).
[4]Jiawei Han,Micheline Kamber.數(shù)據(jù)挖掘概念與技術[M].范明,孟小峰譯.北京:機械工業(yè)出版社,2008.
[5]Luis Torgo.Data Mining with R:Learning by Case Studies[M].New York:Chapman and Hall/CRC,2010.
[6]Venabl Esen,Ripl Eybd.Modern Applied Statistics with S[M].Berlin:Springer,2002.
[7]Joseph Adler.R in a Nutshell[Z].O'reilly,2010.