熱線電話:13121318867

登錄
首頁精彩閱讀R語言學習之決策樹
R語言學習之決策樹
2015-12-10
收藏

R語言學習之決策樹


決策樹最重要的2個問題:決策樹的生長問題,決策樹的剪枝問題。

    生長問題又包括了2個子問題:從分組變量的眾多取值中選擇一個最佳分割點和從眾多輸入變量中選擇當前最佳分組變量;
    剪枝問題包括2個子問題:預修剪(事先指定樹的最大深度,葉子的最小樣本量等)和后修剪(先讓樹充分生長,然后邊修剪邊檢驗)。
在R中,實現決策樹需要加載包library(rpart),如果想把分類圖畫的漂亮點,還可以加載這個包:library(rpart.plot)
## rpart.control對樹進行一些設置
## xval是10折交叉驗證
## minsplit是最小分支節點數,這里指大于等于20,那么該節點會繼續分劃下去,否則停止
## minbucket:葉子節點最小樣本數
## maxdepth:樹的深度
## cp全稱為complexity parameter,指某個點的復雜度,對每一步拆分,模型的擬合優度必須提高的程度,用來節省剪枝浪費的不必要的時間,R內部是怎么計算的還真不知道唉
ct <- rpart.control(xval=10, minsplit=20, cp=0.1)
## kyphosis是rpart這個包自帶的數據集
## na.action:缺失數據的處理辦法,默認為刪除因變量缺失的觀測而保留自變量缺失的觀測。         
## method:樹的末端數據類型選擇相應的變量分割方法:
## 連續性method=“anova”,離散型method=“class”,計數型method=“poisson”,生存分析型method=“exp”
## parms用來設置三個參數:先驗概率、損失矩陣、分類純度的度量方法(gini和information)
## cost我覺得是損失矩陣,在剪枝的時候,葉子節點的加權誤差與父節點的誤差進行比較,考慮損失矩陣的時候,從將“減少-誤差”調整為“減少-損失”
fit <- rpart(Kyphosis~Age + Number + Start, 
     data=kyphosis, method="class",control=ct,
             parms = list(prior = c(0.65,0.35), split = "information"));
## 作圖有2種方法
## 第一種:
par(mfrow=c(1,3));plot(fit); text(fit,use.n=T,all=T,cex=0.9)
## 第二種,這種會更漂亮一些:
rpart.plot(fit, branch=1, branch.type=2, type=1, extra=102,
           shadow.col="gray", box.col="green",
           border.col="blue", split.col="red",
           split.cex=1.2, main="Kyphosis決策樹");
## rpart包提供了復雜度損失修剪的修剪方法,printcp會告訴分裂到每一層,cp是多少,平均相對誤差是多少
## 交叉驗證的估計誤差(“xerror”列),以及標準誤差(“xstd”列),平均相對誤差=xerror±xstd
printcp(fit)
## 通過上面的分析來確定cp的值
## 我們可以用下面的辦法選擇具有最小xerror的cp的辦法:
## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])
fit2 <- prune(fit, cp=0.01)
待續。。。。。。

注:
1.在預測分類目標字段時為類別指定先驗概率。先驗概率是對總體(從中可提取訓練數據)中的每個目標分類的總相對頻率的估計。換句話說,先驗概率是對預測值有任何了解之前對每個可能的目標值的概率估計。確定決策樹分支準則的時候會用到,具體內部算法,我暫時還沒有查到。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢