R語言(遞迴分割樹 傳統決策樹 )分類模型(二)

2021-08-02 02:31:37 字數 3842 閱讀 3095

遞迴分割樹視覺化

需要執行「r語言(遞迴分割樹)分類模型(一)」的步驟

#呼叫plot函式和text函式繪製分類樹

分類樹圖

也可以改變一些引數調整輸出結果

調整之後的輸出

plot( )函式可以實現簡單的分類樹視覺化,也可以呼叫text函式在圖中新增文字說明。

我們將margin賦值為0.1,這樣能夠在邊界增加乙個白色的邊框,防止要顯示的文字被圖形邊緣截斷,use.n = true,得到每個類別(no和yes)的實際觀測個數。

評測遞迴分割樹的**能力

借助分類樹,我們能夠**新觀測值的類別類標籤。在進行**前,我們先通過在測試資料集上建立乙個新的分類表來評測分類樹的**能力。

#呼叫predict函式生成測試資料集的分類表

predictions = predict(churn.rp,testset,type = "class")

#呼叫table建立測試資料集的分類表

table(testset$churn,predictions)

predictions

yesnoyes

10041

no18

859

#呼叫caret包提供的confusionmatrix生成混淆矩陣

library(caret)

confusionmatrix(table(predictions,testset$churn))

confusion matrix and statistics

reference

prediction yes no

yes 100

18 no 41

859 accuracy : 0.942

95% ci : (0.9259, 0.9556)

no information rate : 0.8615

p-value [acc > nir] : < 2.2e-16

mcnemar's test p-value : 0.004181

sensitivity : 0.70922

specificity : 0.97948

pos pred value : 0.84746

neg pred value : 0.95444

prevalence : 0.13851

detection rate : 0.09823

detection prevalence : 0.11591

balanced accuracy : 0.84435

'positive' class : yes

使用民乙個predict構建了乙個分類模型churn.rp,來**測試資料集中樣例可能的類標號。**類別(類標號)可能被編碼為no與yes,然後使用table函式在測試資料集上建立乙個分類表,從分類表可以得知,859個樣例被正確的測試為no,18個樣例被錯誤**為yes.100個樣例被正確**為yes,41個樣例被錯誤**為no。

**準確率有0.942

遞迴分割樹剪枝

#找到分類樹模型的最小交叉檢驗誤差

min(churn.rp$cptable[,"xerror"])

[1] 0.497076

#定位交叉檢驗最少的記錄

which.min(churn.rp$cptable[,"xerror"])

88

#獲取交叉檢驗誤差最小記錄成本複雜度引數引數值:

churn.cp = churn.rp$cptable[8,"cp"]

churn.cp

[1] 0.01

#設定引數cp值與交叉檢驗最小記錄的cp值相同以進行剪枝,然後繪圖

剪枝後的分叉樹

#接下來基於已剪枝的分類樹生成分類表

predictions1 = predict(prune.tree,testset,type = "class")

>

> table(testset$churn,predictions1)

predictions1

yesnoyes

9546

no14

863

#最後基於上述分類列表生成混淆矩陣

confusionmatrix(table(testset$churn,predictions1))

confusion matrix and statistics

predictions1

yes no

yes 95

46 no 14

863 accuracy : 0.9411

95% ci : (0.9248, 0.9547)

no information rate : 0.8929

p-value [acc > nir] : 5.609e-08

mcnemar's test p-value : 6.279e-05

sensitivity : 0.87156

specificity : 0.94939

pos pred value : 0.67376

neg pred value : 0.98404

prevalence : 0.10707

detection rate : 0.09332

detection prevalence : 0.13851

balanced accuracy : 0.91048

'positive' class : yes

很明顯經過剪枝後的分支要少於原始分支型別的分支樹個數,最後正確率略低於原始個數,這說明去掉了部分**條件,剪枝後的分類樹正確率未必優於原始分樹,使用者應該檢查剪枝對分類樹靈敏度和完整性的影響)不過剪枝分類樹的優勢在於它對分類模型的限定更模糊一些,這樣可以避免過度適應。

r語言決策樹

決策樹演算法 決策樹的建立 建立決策樹的問題可以用遞迴的形式表示 1 首先選擇乙個屬性放置在根節點,為每乙個可能的屬性值產生乙個分支 將樣本拆分為多個子集,乙個子集對應一種屬性值 2 在每乙個分支上遞迴地重複這個過程,選出真正達到這個分支的例項 3 如果在乙個節點上的所有例項擁有相同的類別,停止該部...

R分類演算法 決策樹演算法

它通過對訓練樣本的學習,並建立分類規則,然後依據分類規則,對新樣本資料進行分類 屬於有監督學習。優點 決策樹有易於理解和實現 決策樹可處理數值型和非數值型資料 基於條件的決策樹在party包裡 install.packages party ctree formula,data predic資料 pr...

決策樹分類

一 分類的概念 分類是一種重要的資料分析形式,分類方法用於 資料物件的離散類別,而 則用於 資料物件的連續取值 資料分類是兩個階段的過程,包括學習階段和分類階段 學習階段 訓練階段 就是建立描述預先定義的資料類或概念集的分類器 而訓練集是有資料庫元祖和與他們相互關聯的類標號組成 類標號屬性是離散值和...