close

當原始資料太多的屬性太多或是決策樹演算法本身屬性的選擇偏好,容易造成Over-fitting以致於產生的樹狀結構太過於複雜,因此必須做適當的修剪。

rpart(formula,data,weights,subset,na.action=na.rpart,method,parms,control…)

-formula 表示模型的公式:Y~x1+x2+x3..

-data 建立模型的資料來源

-weights 表示data的權重非必要參數

-subset 表示只使用部分子集資料,非必要函數

-na.action表示對遺失值的處理方式,預設會刪除

-method 使用的方法,“anova”,“poisson”,“class”,“exp”

-parms 根據上面不同的方法給不同的引數

-control 表示控制此演算法的引數,可以在rpart.control中設定

rpart.control(minsplit=20,minbucket=round(minsplit/3),cp=0,maxdepth=30,…)

-minsplit 表示建立一個新節點最少需要多少資料

-minbucket表示建立一個???結點最少需要多少資料

-cp 決定計算複雜度的參數,用來修剪數的分支

-maxdepth 表示樹的深度

 

80/20 train/test

 

set.seed(11)
n=nrow(iris)
idx=sample(n,size=round(0.2*n))
test_data=iris[idx,]
train_data=iris[-idx,]

 

建立決策樹模型

iris_tree=rpart(Species~.,data=train_data,method = "class",control = rpart.control(
  minsplit = 5,cp=0.001,maxdepth = 30))
prp(iris_tree,         # 模型
    faclen=0,           # 呈現的變數不要縮寫
    fallen.leaves=TRUE, # 讓樹枝以垂直方式呈現
    shadow.col="gray",  # 最下面的節點塗上陰影
    # number of correct classifications / number of observations in that node
    extra=2)

 

1558672753732.jpg

iris_tree

summary(iris_tree)

可以看決策樹的內部資料

預測

1558673640172.jpg

計算預測準確率 = 對角線的數量/總數量

1558673651516.jpg

 

 

arrow
arrow
    文章標籤
    rpart rpart.plot
    全站熱搜
    創作者介紹
    創作者 whchang 的頭像
    whchang

    W.H 的學習筆記

    whchang 發表在 痞客邦 留言(0) 人氣()