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