r語言c50
Ⅰ R語言C50為什麼運行不出來
可能是代碼有問題。
如果只是建立模型的那一行代碼跑的很慢,如果建立模型的代碼本身沒有提供並行計算功能,部分模型可以嘗試把公式換成則分別傳入x=,y=參數,多數模型無法加速。再除非有其他R包,可以建立同樣的模型,並且速度更快。
R語言是集統計分析與圖形顯示於一體的用於分析、繪圖的語言和操作環境的軟體。
Ⅱ 如何用R語言實現決策樹C5.0模型
R有專門的C5.0包:C50
Ⅲ 基於R語言的分類演算法之決策樹
基於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太少了,優化都省了。