明均仁,肖 凱
(1.武漢大學(xué) 信息管理學(xué)院,武漢 430072;2.長江水利委員會網(wǎng)絡(luò)與信息中心水利發(fā)展研究所,武漢 430010)
水是生命之源、生產(chǎn)之要、生態(tài)之基。隨著我國社會經(jīng)濟(jì)的發(fā)展,水資源短缺的問題日益凸現(xiàn),這就需要對水資源進(jìn)行更加嚴(yán)格而有效的管理。水資源管理的基礎(chǔ)工作是要對水資源量的準(zhǔn)確掌握,其中包括供水量和需水量。因此需水預(yù)測就有著舉足輕重的地位和作用。本世紀(jì)以來,人口增加、氣候變化、耕地減少以及城市化進(jìn)程更導(dǎo)致了地區(qū)需水量的變動加劇。尋找一種合理方法來預(yù)測地區(qū)需水量對于社會、經(jīng)濟(jì)和環(huán)境的協(xié)調(diào)發(fā)展具有重要的意義。
傳統(tǒng)的需水預(yù)測方法[1,2]多是利用定額法、回歸分析法、投入產(chǎn)出法、常規(guī)趨勢法、時(shí)間序列法等進(jìn)行預(yù)測,但由于影響未來需水量的外生變量均受到各種外界環(huán)境的影響,具有一定的不確定性和模糊性,這些預(yù)測方法不能夠得出準(zhǔn)確的結(jié)果。近年來也有學(xué)者利用神經(jīng)網(wǎng)絡(luò)模型[3]和模糊數(shù)學(xué)方法對區(qū)域需水量進(jìn)行預(yù)測,這類方法充分考慮了外生變量的影響,能以任意精度逼近任何非線性連續(xù)函數(shù),可以利用歷史數(shù)據(jù)得出精確的未來數(shù)據(jù)。但其缺點(diǎn)在于對訓(xùn)練樣本的依賴程度較大,由訓(xùn)練數(shù)據(jù)得出的預(yù)測模型對檢驗(yàn)數(shù)據(jù)的穩(wěn)健性不足,而且有可能因?yàn)檫^度訓(xùn)練而造成過度擬合。為此,本文引入隨機(jī)森林方法,對需水預(yù)測研究提供有益的參考思路。
隨機(jī)森林方法是傳統(tǒng)決策樹方法的擴(kuò)展,它將多個(gè)決策樹進(jìn)行組合,來提高預(yù)測精度。下面首先回顧決策樹模型和組合算法,再對隨機(jī)森林理論進(jìn)行介紹。
本文使用的隨機(jī)森林是利用分類回歸樹(CART)作為其基本組成單元,也可稱之為基學(xué)習(xí)器或是子模型。CART是決策樹技術(shù)的一種,也稱為二元回歸分解技術(shù)。利用CART可以自動探測出高度復(fù)雜數(shù)據(jù)的潛在結(jié)構(gòu)、重要模式和關(guān)系;探測出的知識又可用來構(gòu)造精確和可靠的預(yù)測模型。CART模型可分為分類樹和回歸樹兩種。分類樹用于因變量為分類數(shù)據(jù)的情況,樹的末端為因變量的分類值;回歸樹則可以用于因變量為連續(xù)變量的情況,樹的末端可以給出相應(yīng)類別中的因變量描述或預(yù)測。
隨機(jī)森林是集成學(xué)習(xí)[4]算法的一種。集成學(xué)習(xí)是一種機(jī)器學(xué)習(xí)范式,它試圖通過連續(xù)調(diào)用單個(gè)學(xué)習(xí)算法,獲得不同的學(xué)習(xí)器,然后根據(jù)規(guī)則組合這些學(xué)習(xí)器來解決同一個(gè)問題,可以顯著的提高學(xué)習(xí)系統(tǒng)的泛化能力。組合多個(gè)學(xué)習(xí)器主要采用加權(quán)平均或投票的方法。常見的集成學(xué)習(xí)算法有裝袋算法、提升算法以及隨機(jī)森林三種方法。集成學(xué)習(xí)可以改善單一方法的不足。因此,集成學(xué)習(xí)已成為國際機(jī)器學(xué)習(xí)界的研究熱點(diǎn)。
其中裝袋算法是利用自助法的思路,對訓(xùn)練樣本進(jìn)行有放回抽樣,以建立多個(gè)樹模型,然后集成其預(yù)測結(jié)果提高預(yù)測效果。提升算法與裝袋算法相似,但其區(qū)別在于集成預(yù)測時(shí)會考慮不同子模型的權(quán)重,對表現(xiàn)優(yōu)良的子模型會給予較大的權(quán)重。
隨機(jī)森林方法與前兩者相似之處在于,它們都會對樣本進(jìn)行有放回抽樣和集成預(yù)測,但區(qū)別在于隨機(jī)森林還對解釋變量進(jìn)行了隨機(jī)抽樣。隨機(jī)森林不需要對樹模型進(jìn)行剪枝,而是生成多個(gè)完整深度的樹模型。在回歸問題中,將多個(gè)樹模型的預(yù)測值進(jìn)行平均,以計(jì)算最終預(yù)測值。對于分類問題,則通過多數(shù)投票方式來產(chǎn)生最終預(yù)測。
(1)從原始訓(xùn)練樣本中隨機(jī)抽出M個(gè)樣本。
(2)從解釋變量中隨機(jī)抽出N個(gè)樣本,從抽中變量中選擇最能有效分割數(shù)據(jù)的變量,使分割后的子集內(nèi)部變異性最小。對于連續(xù)數(shù)據(jù)通常是采用均方誤作為判斷指標(biāo),對于離散數(shù)據(jù)則多采用基尼值。
(3)依據(jù)步驟二得到的變量將數(shù)據(jù)分割為兩個(gè)純度較高的子集。
(4)對子集重復(fù)步驟三直到分割停止。這就完成了單棵樹的建模。
(5)重復(fù)步驟(1)到步驟(4)X次,就構(gòu)建了有X棵樹的隨機(jī)森林模型。
為了建立需水預(yù)測模型,首先要確定必要解釋變量作為模型的輸入。根據(jù)資料條件,本文選取10個(gè)用水指標(biāo)以充分表述需水預(yù)測的影響因素,這10個(gè)指標(biāo)為:農(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個(gè)影響因子為隨機(jī)森林需水預(yù)測模型的輸入,地區(qū)總需水量(V1)為模型的輸出變量,即被解釋變量。
利用2003~2008年之間的湖北統(tǒng)計(jì)年鑒和湖北水資源公報(bào),從中收集整理了96個(gè)樣本數(shù)據(jù)。將其中一半數(shù)據(jù)作為訓(xùn)練樣本建立模型,剩下一半數(shù)據(jù)作為檢驗(yàn)樣本以衡量模型的預(yù)測能力。由于隨機(jī)森林方法對數(shù)據(jù)的量綱和單位并不敏感,所以并不需要進(jìn)行標(biāo)準(zhǔn)化或歸一化處理。部分樣本數(shù)據(jù)列示在表1。
表1 部分樣本數(shù)據(jù)列表
為了評價(jià)模型的擬合及預(yù)測能力,本研究根據(jù)以下三種指標(biāo)來做出評價(jià)。分別是平均絕對誤差(MAE)、平均誤差平方和(MSE)、相對誤差平方和(NMSE)。指標(biāo)數(shù)字越小則說明模型的預(yù)測值與真實(shí)值之間差異越小,模型的預(yù)測能力越強(qiáng)。
本研究用以實(shí)現(xiàn)的軟件工具是開源軟件R語言[6-8],其中的randomForest程序包可以方便的建立隨機(jī)森林模型。由于R語言比其他統(tǒng)計(jì)學(xué)或數(shù)學(xué)專用的編程語言有更強(qiáng)的面向?qū)ο蠊δ埽栽撥浖趪獗粡V泛使用,包括Google和Facebook公司均使用它進(jìn)行數(shù)據(jù)分析的各項(xiàng)工作。
表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í)抽取多少個(gè)變量,這里通常的做法是選擇解釋變量數(shù)目的平方根,本文的輸入變量有10個(gè),所以這里的參數(shù)設(shè)置為3。建模結(jié)果存入rf變量,之后再利用predict命令得到需水量的預(yù)測值,表3將部分預(yù)測值與真實(shí)值進(jìn)行比較,可初步了解模型的預(yù)測能力。
表3 隨機(jī)森林預(yù)測值與真實(shí)值對照
首先繪制模型的誤差曲線圖如圖1所示,其縱軸為模型的均方誤,橫軸為隨機(jī)森林中包括樹的個(gè)數(shù)。從圖1中可以看到隨著森林中樹的數(shù)量增加,模型誤差逐漸遞減,在100的時(shí)候達(dá)到相對最小,之后有所回升,但總體來看數(shù)量越大模型誤差越小。
圖1
為了評價(jià)模型的預(yù)測能力,根據(jù)3.2節(jié)所述的三個(gè)指標(biāo),計(jì)算隨機(jī)森林模型的對應(yīng)結(jié)果,為了對比分析不同建模方法之間的預(yù)測能力,還利用相同的訓(xùn)練樣本建立了BP神經(jīng)網(wǎng)絡(luò)模型和多元線性回歸模型,其結(jié)果均在表4中列示。由表4可見,隨機(jī)森林模型在三種指標(biāo)上都為最小值,相對其它建模方法預(yù)測誤差較小,體現(xiàn)其預(yù)測能力和抗干擾能力很強(qiáng)。
表4 三種建模方法的預(yù)測誤差比較
表4中模型的指標(biāo)有可能是樣本的偶然性造成的,為了盡量減少訓(xùn)練樣本分布對建模結(jié)果的影響,本文采用六重交叉檢驗(yàn)的方法再次評價(jià)三種模型的預(yù)測能力。六重交叉數(shù)據(jù)檢驗(yàn)的思路就是:先將全部訓(xùn)練數(shù)據(jù)隨機(jī)地分為等量的6部分,選擇其中的5份作為訓(xùn)練數(shù)據(jù),剩下1份作為檢測數(shù)據(jù)來計(jì)算模型的相對誤差平方和。然后更換其中的1份數(shù)據(jù),重復(fù)實(shí)驗(yàn)。這樣得到6組不同的相對誤差平方和,最后綜合評判各模型的表現(xiàn)。其結(jié)果如表5如示。隨機(jī)森林模型相對其它建模方法NMSE值最小,顯示預(yù)測能力較強(qiáng)。
表5 六重交叉檢驗(yàn)得到三種模型的誤差數(shù)據(jù)
利用隨機(jī)森林模型進(jìn)行解釋變量的重要性排序,這樣可以使研究者了解在需水量中,哪些解釋變量是比較重要的。從圖2可以看到變量重要性度量,變量重要性度量就是假設(shè)某個(gè)變量不包括在模型中,會對模型的誤差造成多大的影響。左側(cè)圖形的誤差計(jì)算依據(jù)是袋外數(shù)據(jù)(OOB data),因?yàn)殡S機(jī)森林方法會有放回地隨機(jī)從原始訓(xùn)練集中抽取N個(gè)樣本,組成一個(gè)新的訓(xùn)練集,對于單棵樹而言,有近37%的數(shù)據(jù)可能未被選中,這部分?jǐn)?shù)據(jù)稱為袋外數(shù)據(jù),可以用它來作為測試數(shù)據(jù)對該樹模型的誤差進(jìn)行估計(jì)。右側(cè)圖形的誤差計(jì)算是依賴劃分后子集的純度。根據(jù)圖形顯示,本模型中最重要的解釋變量是V10人口,其次是V9有效灌溉面積,之后則是V5地區(qū)生產(chǎn)總值與V11糧食產(chǎn)量。因此,在實(shí)際工作中對模型進(jìn)行外推預(yù)測的時(shí)候,要注意對這四個(gè)變量的預(yù)測精度進(jìn)行控制。
圖2 各解釋變量的重要性度量
本文建立的隨機(jī)森林模型對需水預(yù)測研究提供了一種新的方法,具有一定的參考意義。隨機(jī)森林擅長計(jì)算大規(guī)模數(shù)據(jù),而本文由于資料所限,所用的樣本數(shù)偏少。在實(shí)際研究工作中加大采樣范圍可以彌補(bǔ)預(yù)測精度的不足。樣本中所涉及的解釋變量還可以增加。這些都是影響模型結(jié)果準(zhǔn)確率的主要原因。另外實(shí)驗(yàn)還發(fā)現(xiàn)模型在預(yù)測極端數(shù)據(jù)時(shí)誤差較大,在這一點(diǎn)上不如神經(jīng)網(wǎng)絡(luò)模型精度高。因此利用隨機(jī)森林方法時(shí),預(yù)測范圍不要外推超過訓(xùn)練樣本范圍。
隨機(jī)森林方法是一種樹型分類器的組合算法。它的優(yōu)點(diǎn)在于能高效的處理大數(shù)據(jù)集,而且預(yù)測精度較高。數(shù)據(jù)在分析前不需要過多的預(yù)處理,不需要標(biāo)準(zhǔn)化或是歸一化,但需將缺失值補(bǔ)足。在有大量相關(guān)的解釋變量情況下,也不需要進(jìn)行變量篩選工作,隨機(jī)森林可以自動辨識最重要的輸入變量。從模型運(yùn)行結(jié)果分析可以看出,相比較BP神經(jīng)網(wǎng)絡(luò)和多元線性回歸等方法,其預(yù)測誤差較小。由于隨機(jī)森林的抽樣特性,其子模型之間相互獨(dú)立,因此隨機(jī)森林不會受到異常值和噪聲的影響而出現(xiàn)過度擬合的情況。隨機(jī)森林建模過程中產(chǎn)生的OOB數(shù)據(jù)可用來估計(jì)模型的泛化誤差。還能同時(shí)處理連續(xù)型變量和分類變量,模型預(yù)測穩(wěn)健性較高。隨機(jī)森林的缺點(diǎn)在于因?yàn)闆]有剪枝過程,對某些數(shù)據(jù)集可能會形成過度擬合。
[1]賀麗媛,夏軍,張利平.水資源需求預(yù)測的研究現(xiàn)狀及發(fā)展趨勢[J].長江科學(xué)院院報(bào),2007,(2).
[2]張成才,崔雅博,胡彩虹.需水量預(yù)測方法研究[J].氣象與環(huán)境科學(xué),2009,(2).
[3]凌和良,桂發(fā)亮,樓明珠.BP神經(jīng)網(wǎng)絡(luò)算法在需水預(yù)測與評價(jià)中的應(yīng)用[J].數(shù)學(xué)的實(shí)踐與認(rèn)識,2007,(11).
[4]Jiawei Han,Micheline Kamber.數(shù)據(jù)挖掘概念與技術(shù)[M].范明,孟小峰譯.北京:機(jī)械工業(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.