使用威斯康星州乳腺癌數(shù)據(jù),劃分訓(xùn)練集和測試集阳啥,比較經(jīng)典決策樹和條件決策樹的效果铐姚。
條件決策樹
算法如下:
(1) 對輸出變量與每個預(yù)測變量間的關(guān)系計算p值证九。
(2) 選取p值最小的變量彭谁。
(3) 在因變量與被選中的變量間嘗試所有可能的二元分割(通過排列檢驗)吸奴,并選取最顯著的分割。
(4) 將數(shù)據(jù)集分成兩群缠局,并對每個子群重復(fù)上述步驟则奥。
(5) 重復(fù)直至所有分割都不顯著或已到達最小節(jié)點為止。
條件推斷樹可由party包中的ctree()函數(shù)獲得:
library(party)
fit.ctree <- ctree(class~., data=df.train)
plot(fit.ctree, main="Conditional Inference Tree")
ctree.pred <- predict(fit.ctree, df.validate, type="response")
ctree.perf <- table(df.validate$class, ctree.pred,dnn=c("Actual", "Predicted"))
ctree.perf
注:
值得注意的是狭园,對于條件推斷樹來說读处,剪枝不是必需的,其生成過程相對更自動化一些唱矛。另外档泽,party包也提供了許多圖像參數(shù)俊戳。
下圖展示了一棵條件推斷樹,每個節(jié)點中的陰影區(qū)域代表這個節(jié)點對應(yīng)的惡性腫瘤比例馆匿。
predict()函數(shù)用來對驗證集中的觀測點分類。結(jié)果給出了實際類別與預(yù)測類別的交叉表燥滑。整體來看渐北,條件決策樹中驗證集中的準(zhǔn)確率是95.2381%,經(jīng)典決策樹的準(zhǔn)確率是96%铭拧。
盡管在這個例子中赃蛛,傳統(tǒng)決策樹和條件推斷樹的準(zhǔn)確度比較相似,但有時它們可能會很不一樣搀菩。
總結(jié)
· rpart包的處理方式:
首先對所有自變量和所有分割點進行評估呕臂,最佳的選擇是使分割后組內(nèi)的數(shù)據(jù)更為"一致"(pure)。這里的"一致"是指組內(nèi)數(shù)據(jù)的因變量取值變異較小肪跋。
rpart包對這種"一致"性的默認(rèn)度量是Gini值("吉尼系數(shù)"也可以用來衡量樣本數(shù)據(jù)集的純度歧蒋。
吉尼系數(shù)越小,則表示該節(jié)點可以有效的把同一類聚集在一起州既。反之谜洽,分割后的類別越雜亂,則吉尼系數(shù)會越大吴叶。
在決策樹生成時阐虚,當(dāng)用到吉尼系數(shù)這個方法時,通常會計算每一個特征的吉尼系數(shù)蚌卤,接著比較各個特征下的吉尼系數(shù)实束,系數(shù)越小的特征越適合先作為內(nèi)部節(jié)點。)逊彭。
確定停止劃分的參數(shù)有很多(參見rpart.control)咸灿,確定這些參數(shù)是非常重要而微妙的,因為劃分越細(xì)诫龙,模型越復(fù)雜析显,越容易出現(xiàn)過度擬合的情況,而劃分過粗签赃,又會出現(xiàn)擬合不足谷异。
處理這個問題通常是使用"剪枝"(prune)方法。即先建立一個劃分較細(xì)較為復(fù)雜的樹模型锦聊,再根據(jù)交叉檢驗(Cross-Validation)的方法來估計不同"剪枝"條件下歹嘹,各模型的誤差,選擇誤差最小的樹模型孔庭。
· party包的處理方式:
它的背景理論是"條件推斷決策樹"(conditional inference trees):它根據(jù)統(tǒng)計檢驗來確定自變量和分割點的選擇尺上。
即先假設(shè)所有自變量與因變量均獨立材蛛。再對它們進行卡方獨立檢驗,檢驗P值小于閥值的自變量加入模型怎抛,相關(guān)性最強的自變量作為第一次分割的自變量卑吭。自變量選擇好后,用置換檢驗來選擇分割點马绝。
用party包建立的決策樹不需要剪枝豆赏,因為閥值就決定了模型的復(fù)雜程度。所以如何決定閥值參數(shù)是非常重要的(參見ctree_control)富稻。較為流行的做法是取不同的參數(shù)值進行交叉檢驗掷邦,選擇誤差最小的模型參數(shù)。