R語言之回歸樹


參考自【數據挖掘與R語言】

rpart包可實現回歸樹。通常分為兩步建立回歸樹:1.生成一棵較大的樹  2.通過統計估計刪除一些結點來對樹進行修剪。

回歸樹基礎實現

library(rpart)

rpart(y~.,data=data1)  參數形式與lm()函數的參數形式相同

 

 

圖形化展示:

plot(rm)
text(rm)

 

rpart()函數構建樹時,滿足下列條件,樹構建過程將結束:

1、偏差的減少小於某一個給定界限值時;

2、當結點中的樣本數量小於某個給定界限時;

3、當樹的深度大於一個給定的界限值

這3個界限值由rpart()函數中的三個參數(cp、minsplit、maxdepth)來確定。默認值為0.01、20、30

修剪方法

rpart包中實現了一種復雜度損失修剪的修剪方法

這個方法使用R在每個樹結點計算的參數值cp,這種修剪方法試圖估計cp值以確保達到預測的准確性和樹的大小之間的最佳折中。

可用printcp()函數可生成回歸樹的一些子樹,並估計這些樹的性能。

 

plotcp(rm)

 

由rpart()函數建立的回歸樹是上面列表中的最后一個樹(樹9)。這個樹的cp值是0.01(cp的默認值),該樹包括九個測試和一個相對誤差值(與根結點相比)0.354。

R應用10折交叉驗證的內部過程,評估該樹的平均相對誤差為0.70241+0.11523

根據這些更穩健的性能估計信息,可以避免過度擬合問題。

可以看到,8號樹的預測相對誤差(0.67733)最小。

 

選擇好的回歸樹的准則:

1、以估計的cp值為准則;

2、1-SE規則;這包括檢查交叉驗證的估計誤差(xerror列)以及標准誤差(xstd列)。

在這個案例中,1-SE規則樹是最小的樹,誤差小於0.67733+0.10892=0.78625,而由1檢驗的2號樹的估計誤差為0.73358.

 

若想要選擇不是R建議的樹,可通過使用不同的cp值來建立這棵樹:

rm2=prune(rm,cp=0.08)

  

 

 

交互的對樹進行修剪:snip.rpart()

兩種方式:

1、指出需要修剪的那個地方的結點號(可以通過輸出樹對象來得到樹的結點號),返回樹對象

 

2、首先在圖形窗口畫出回歸樹,然后調用沒有第二參數的函數。點擊結點,即在這個結點對樹進行修剪。可持續執行,直到右擊結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM