熱線電話:13121318867

登錄
首頁精彩閱讀基于R語言的分類算法之決策樹
基于R語言的分類算法之決策樹
2018-06-14
收藏

基于R語言的分類算法之決策樹

ID3 《= 最大信息熵增益,只能處理離散型數據

C4.5 《= 信息增益率,可處理連續性和離散型數據,相比ID3,減少了因變量過多導致的過擬合

C5.0 《= 信息增益率,運算性能比C4.5更強大

CART 《= 基尼指數最小原則,連續性和離散型數據均可

信息熵體現的是數據的雜亂程度,信息越雜亂,信息熵越大,反之越小。 例如:擁有四種連續型變量特征變量的信息熵一定比擁有三種的要大。

特征變量的N種可能性,每種可能性的概率相同,N越大,信息熵越大。

每種可能性的概率不同,越偏態,信息熵越小。

所有特征變量中,信息增益率的,就是根節點(root leaf),根節點一般是選擇N越大的特征變量,因為N越大,信息熵越大。

信息增益率是在信息熵的基礎上作懲罰計算,避免特征變量可能性多導致的高信息增益。

代碼相關

library(C50)

C5.0(x,y, trials = 1, rules=FALSE,weights=NULL,control=C5.0Control(),costs=NULL)

x為特征變量,y為應變量

trials 為迭代次數(這個值根據不同數據而不同,并非越大越好,一般介于5-15之間,可以用遍歷來尋找最高準確率的模型,對模型準確率的提升效果中等)


cost 為損失矩陣,R中應該傳入一個矩陣(據說是對準確率矩陣約束猜測錯誤的項,但是并沒特別明顯的規律,可以使用遍歷來尋找最好的cost,準確率提升效果?。?

costs <- matrix(c(1,2,1,2),
                ncol = 2, byrow = TRUE, 
                dimnames = list(c("yes","no"), c("yes","no")))


control 設置C5.0模型的其他參數,比如置信水平和節點最小樣本等(水很深,參數很多,可以自行查閱R的幫助文檔,我只設置了一個CF,準確率提升效果?。?

control = C5.0Control(CF = 0.25)


library(C50)


#對iris隨機劃分訓練集和測試集
set.seed(1234)

index <- sample(1:nrow(iris), size = 0.75*nrow(iris))
train <- iris[index,]
test <- iris[-index,]


#查看訓練集和測試集分布是否合理

prop.table(table(train$Species))
prop.table(table(test$Species))


#不設置任何參數

fit1 <- C5.0(x = train[,1:4], y = train[,5])

pred1 <- predict(fit1, newdata = test[,-5])
freq1 <- table(pred1, test[,5])
accuracy <- sum(diag(freq1))/sum(freq1)

pred1        setosa versicolor virginica
  setosa         16          0         0
  versicolor      0         13         1
  virginica       0          0         8

準確率為0.9736842,只有一個錯誤。。。顯然150個iris太少了,優化都省了。


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

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

數據分析師資訊
更多

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