布雷特-蘭茨在其《機器學習與R語言》一書中講到,C5.0算法適用於大多數類型的問題,而且可以直接使用。與其他先進的機器學習模型相比(神經網絡和SVM),通過C5.0算法建立的決策樹一般都表現得與其它先進的模型幾乎一樣好,而且更容易理解和部署。
C5.0算法的優點之一就是它可以自動修剪,即它關注許多決策,能自動使用相當合理的默認值。該算法的總體策略就是事後修剪決策樹,它先生成一個過度擬合訓練數據的大決策樹,然後刪除對分類誤差影響不大的節點和分枝。
1.C5.0函數的語法C5.0(x,y,trials = 1,rules = FALSE,weights = NULL,control = C5.0Control(),costs = NULL,...)參數C5.0Control(subset = TRUE, bands = 0, winnow = FALSE, noGlobalPruning = FALSE, CF = 0.25, minCases = 2, fuzzyThreshold = FALSE, sample = 0, seed = sample.int(4096, size = 1) - 1L, earlyStopping = TRUE, label = "outcome")
參數library(C50)library(RWeka)library(rpart.plot)library(survival)data <- na.omit(lung[,-c(1:2)])data$status <- as.factor(ifelse(data$status==1,'Alive','Dead'))head(data)ID3 <- rpart(status~.,data,parms = list(split='information'))summary(ID3)rpart.plot(ID3,branch=1,type=0,cex=0.8,extra = 1)# 基尼係數算法:CARTCART <- rpart(status~.,data,parms = list(split='gini'))summary(CART)rpart.plot(CART,branch=1,type=0,cex=0.8,extra = 1)C45 <- J48(status~.,data)summary(C45)plot(C45)C50 <- C5.0(status~.,data,trails=10)summary(C50)plot(C50)table(predict(ID3,newdata = data,type = 'class'),data$status)table(predict(CART,newdata = data,type = 'class'),data$status)table(predict(C45,newdata = data,type = 'class'),data$status)table(predict(C50,newdata = data,type = 'class'),data$status)結合混淆矩陣中的真陽性和真陰性,在此數據集中可以看出C50算法的準確率最高,當然,我們只是簡單比較下,比如剪枝的操作我們在ID3和CART算法中都還未進行。
這期就到這裡,R包的學習本人只能給個引子,如若希望更詳細更系統的學習,建議翻閱R包英文幫助文檔和對應的參考文獻。
下期分享決策樹在醫學論文中的詳細應用。