引言
本文是一個簡短的教程,在R中拟合BRT(提升回歸樹)模型。我們的目标是使BRT(提升回歸樹)模型應用于生态學資料,并解釋結果。
本教程的目的是幫助你學習如何在R中開發一個BRT模型。
有兩套短鳍鳗的記錄資料。一個用于模型訓練(建立),一個用于模型測試(評估)。在下面的例子中,我們加載的是訓練資料。存在(1)和不存在(0)被記錄在第2列。環境變量在第3至14列。
1.
2. > head(train)

拟合模型
拟合gbm模型,你需要決定使用什麼設定,本文為你提供經驗法則使用的資訊。這些資料有1000個地點,包括202條短鳍鳗的存在記錄。你可以假設:1. 有足夠的資料來建立具有合理複雜性的互相作用模型 2. 大約0.01的lr學習率可能是一個合理的初始點。下面的例子顯示如何确定最佳樹數(nt)。
1. step(data= train, x = 3:13,
2. family = "bernoulli", comp = 5,
3. lr = 0.01, bag.fr = 0.5)
對提升回歸樹模型進行交叉驗證優化。
使用1000個觀測值和11個預測因子,建立10個50棵樹的初始模型。
上面我們使用了交叉驗證的。我們定義了:資料;預測變量;因變量--表示物種資料的列号;樹的複雜度--我們首先嘗試樹的複雜度為5;學習率--我們嘗試用0. 01。
運作一個如上所述的模型,将輸出進度報告,做出圖形。首先,你能看到的東西。這個模型是用預設的10倍交叉驗證法建立的。黑色實心曲線是預測偏差變化的平均值,點狀曲線是1個标準誤差(即在交叉驗證上測量的結果)。紅線表示平均值的最小值,綠線表示生成該值的樹的數量。模型對象中傳回的最終模型是在完整的資料集上建立的,使用的是最優的樹數量。
length(fitted)
傳回的結果包含 fitted - 來自最終樹的拟合值,fitted.vars - 拟合值的方差, residuals - 拟合值的殘差,contribution - 變量的相對重要性。 statistics - 相關的評估統計量。cv.statistics 這些是最合适的評估統計資料。
我們在每個交叉驗證中計算每個統計量(在确定的最佳樹數下,根據所有交叉驗證中預測偏差的平均變化進行計算),然後在此呈現這些基于交叉驗證的統計量的平均值和标準誤差。 weights - 拟合模型時使用的權重(預設情況下,每個觀測值為 "1",即權重相等)。 trees. fitted - 階段性拟合過程中每一步所拟合的樹的數量記錄;training.loss.values - 訓練資料上偏差的階段性變化 ,cv.values - 階段性過程中每一步所計算的預測偏差的CV估計值的平均值。
你可以用摘要函數檢視變量的重要性
> summary(lr )
選擇設定
以上是對設定的初步猜測,使用了Elith等人(2008)中讨論的經驗法則。它做出的模型隻有650棵樹,是以我們的下一步将是減少lr。例如,嘗試lr = 0.005,争取超過1000棵樹。
1. step(data=train, x = 3:13,
2. tree.co = 5,
3. + lr = 0.005
為了探索其他設定是否表現更好,你可以将資料分成訓練集和測試集,或者使用交叉驗證結果,改變tc、lr和bagging,然後比較結果。
簡化模型
簡化會建立了許多模型,是以它可能很慢。在其中,我們評估了簡化lr為0.005的模型的價值,但隻測試剔除最多5個變量("n.drop "參數;預設是自動規則一直持續到預測偏差的平均變化超過gbm.step中計算的原始标準誤差)。
對于我們的運作,估計要剔除的最佳變量數是1;可以使用紅色垂直線訓示的數字。現在,建立一個剔除1個預測變量的模型,使用[[1]]表示我們要剔除一個變量。
step( x= pred.list[[1]], )
現在這已經形成了一個新的模型,但是考慮到我們并不特别想要一個更簡單的模型(因為在這種規模的資料集中,包含的變量貢獻很小是可以接受的),我們不會繼續使用它。
繪制模型的函數和拟合值
由我們的函數建立的BRT模型的拟合函數可以用plot來繪制。
> plot( lr005 )
這個函數的附加參數允許對圖進行平滑表示。根據環境空間内觀測值的分布,拟合函數可以給出與每個預測因子有關的拟合值分布。
fits( lr005)
每張圖上方的數值表示與每個非因素預測因子有關的拟合值的權重平均值。
繪制互動作用
該代碼評估資料中成對的互動作用的程度。
inter( lr005)
傳回一個清單。前兩個部分是對結果的總結,首先是5個最重要的互動作用的排名清單,其次是所有互動作用的表格。
f$intera
你可以像這樣繪制互動作用。
persp( lr005, z.range=c(0,0.6)
對新資料進行預測
如果您想對一組地點進行預測(而不是對整個地圖進行預測),一般的程式是建立一個資料架構,行代表地點,列代表您模型中的變量。我們用于預測站點的資料集在一個名為test的檔案中。 "列需要轉換為一個因子變量,其水準與模組化資料中的水準一緻。使用predict對BRT模型中的站點進行預測,預測結果在一個名為preds的向量中。
1. preds <- predict(lr005,test,
2. deviance(obs=test, pred=preds)
1. > d <- cbind(obs, preds)
2. > e <- evaluate(p=pres, a=abs)
gbm中預測的一個有用的特點是可以預測不同數量的樹。
1. tree<- seq(100, 5000, by=100)
2. predict( n.trees=tree, "response")
上面的代碼會形成一個矩陣,每一列都是模型對tree.list中該元素所指定的樹數量的預測,例如,第5列的預測是針對tree.list[5]=500棵樹。現在來計算所有這些結果的偏差,然後繪制。
1. > for (i in 1:50) {
2. calc.devi(obs,
3. + pred[,i])
4. + }
5. > plot(tree.list,deviance
空間預測
這裡我們展示了如何對整張地圖進行預測。
> plot(grids)
我們用一個常量值("因子 "類)建立一個data.frame,并将其傳遞給預測函數。
1. > p <- predict(grids, lr005,
2. > plot(p)