段俊陽 佘春華
(銅仁學(xué)院,貴州 銅仁 554300)
某些高濃度的有害藻類嚴(yán)重破壞著河流的生態(tài)環(huán)境,因此,能夠監(jiān)測并及早對(duì)海藻的繁殖進(jìn)行預(yù)測對(duì)提高河流的質(zhì)量是很有必要的。在約一年時(shí)間內(nèi),在不同的時(shí)間收集了多條不同河流的水樣。每個(gè)水樣測定了它們不同的化學(xué)性質(zhì)和7種有害藻類的存在頻率。還記錄了如收集的季節(jié)、河流大小和水流速度。
案例研究動(dòng)機(jī):化學(xué)監(jiān)測相對(duì)人工檢測價(jià)格便宜,且易于自動(dòng)化更好地了解藻類的頻率和水樣的某些化學(xué)性質(zhì)以及其他特性 (如季節(jié)、河流類型等)是如何相關(guān)的。
R是一套完整的數(shù)據(jù)處理、計(jì)算和制圖軟件系統(tǒng)。其功能包括:數(shù)據(jù)存儲(chǔ)和處理系統(tǒng);數(shù)組運(yùn)算工具 (其向量、矩陣運(yùn)算方面功能尤其強(qiáng)大)[2];完整連貫的統(tǒng)計(jì)分析工具;優(yōu)秀的統(tǒng)計(jì)制圖功能;簡便而強(qiáng)大的編程語言:可操縱數(shù)據(jù)的輸入和輸出,可實(shí)現(xiàn)分支、循環(huán),用戶可自定義功能。R在語義上是函數(shù)設(shè)計(jì)語言。它允許在“語言上計(jì)算”。這使得它可以把表達(dá)式作為函數(shù)的輸入?yún)?shù),而這種做法對(duì)統(tǒng)計(jì)模擬和繪圖非常有用。R是一個(gè)免費(fèi)的自由軟件。本案例使用的是R的3.0版。
我們考慮使用回歸樹預(yù)測。建立回歸樹:
library(rpart)
data(algae)
algae< -algae[-manyNAs(algae),]
rt.a1< -rpart(a1~.,data=algae [,1:12])
我們第一步讀入數(shù)據(jù):說明我們的數(shù)據(jù)集中首行并不是變量的名稱,col.names是給這些變量一個(gè)名稱,na.strings=c("XXXXXXX")是說數(shù)據(jù)中缺失的變量是用XXXXXXX表示的。
數(shù)據(jù)集中的season表示采集樣本所在的季節(jié),size表示河流的規(guī)模,speed是流速,mxPH之類的是河流的一些化學(xué)屬性,后面的a1,a2,……,a7是我們需要預(yù)測的一些變量。是對(duì)于水藻生長集中程度的一種度量。algae[1:5,]##這個(gè)表示顯示數(shù)據(jù)集的前五行,結(jié)果如下圖1:
函數(shù)的形式是用數(shù)據(jù)中其他所有變量來預(yù)測a1,data是用來設(shè)定建模所用的數(shù)據(jù)集。
回歸樹 rt.a1 的圖形表示的兩種方法:[1]plot(rt.a1),text(rt.a1)或 prettyTree(rt.a1)
建立回歸樹通常分兩步。最初,生成一棵較大的樹,然后通過統(tǒng)計(jì)估計(jì)刪除底部的一些結(jié)點(diǎn)來對(duì)樹進(jìn)行修剪。這樣是為了防止過度擬合。[4]用已有的訓(xùn)練數(shù)據(jù)獲得模型的性能指標(biāo)是不可靠的,因?yàn)檫@些計(jì)算是有偏的。實(shí)際上,有的模型可以很容易獲得訓(xùn)練數(shù)據(jù)的零誤差預(yù)測。然而,這一優(yōu)秀性能很難推廣到目標(biāo)變量值未知的新樣本上。這種現(xiàn)象我們通常稱為過度擬合訓(xùn)練數(shù)據(jù)。我們需要一個(gè)模型,使它在未知數(shù)據(jù)上有可靠的預(yù)測性能。
1、查看比較結(jié)果的摘要:summary(res),首先我們得到這個(gè)數(shù)據(jù)集的一個(gè)描述性統(tǒng)計(jì):我們用的函數(shù)是summary截圖是從R的工作臺(tái)中直接復(fù)制過來的,給出了所有變量的基本的描述統(tǒng)計(jì)量,對(duì)于控制變量 (季節(jié)之類的),給出的是頻數(shù)統(tǒng)計(jì),對(duì)于數(shù)值變量,給出的是最小值,均值,中位數(shù),最大值,25%分位數(shù),75%分位數(shù)這些最常用的統(tǒng)計(jì)量。
2、可通過以下代碼查看模型所對(duì)應(yīng)的參數(shù):得到一棵完整的回歸樹如下圖生成回歸樹:
1、函數(shù)來證實(shí)組合方法的優(yōu)勢
bestScores(res.all)
對(duì)于某些問題,隨機(jī)森林給出很好的結(jié)果。但像海藻7,結(jié)果還不能令人滿意。
2、為每種藻類選擇最優(yōu)的預(yù)測模型。funcs保存最優(yōu)模型的函數(shù)名;函數(shù)strsplit()提取模型名稱;parSetts接受每個(gè)最優(yōu)模型的參數(shù);getVariant()返回模型類對(duì)象;"@"操作符用來訪問對(duì)象的屬性;最后,調(diào)用do.call()得到相應(yīng)的7個(gè)最優(yōu)模型,并賦給bestModels。
3、填補(bǔ)測試集中的缺失值。遵守預(yù)測模型的黃金法則“不要應(yīng)用測試集中的任何信息來建立預(yù)測模型”,[4]應(yīng)該使用訓(xùn)練集數(shù)據(jù)的關(guān)系來填補(bǔ)測試集中的缺失值。
4、獲取預(yù)測值矩陣
5、預(yù)測值與真實(shí)值的比
這里以目標(biāo)變量的均值作為基準(zhǔn)模型的預(yù)測值,然后通過計(jì)算NMSE值評(píng)估預(yù)測結(jié)果的質(zhì)量。最終得到的結(jié)果與前面交叉驗(yàn)證的估計(jì)結(jié)果相一致。它再次確認(rèn)很難得到海藻7的較好的預(yù)測,而其他海藻的估計(jì)結(jié)果相對(duì)較好,海藻1的估計(jì)結(jié)果為最佳。
[1]朱迪茨.實(shí)用教據(jù)挖掘 [M].北京:電子工業(yè)出版社,2004.
[2]魏萍萍,王翠茹,王保義,張振興.數(shù)據(jù)挖掘技術(shù)及其在高校教學(xué)系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)工程,2003(7).
[3](英)漢德 (Hand,D.)著.數(shù)據(jù)挖掘原理 [M].張銀奎,等譯.北京:機(jī)械工業(yè)出版社,2003.
[4]于承敏.數(shù)據(jù)挖掘技術(shù)運(yùn)用ff-4t育領(lǐng)域之探討[J].聊城大學(xué)學(xué)報(bào),2005(6).