遞迴分割樹視覺化
需要執行「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...
決策樹分類
一 分類的概念 分類是一種重要的資料分析形式,分類方法用於 資料物件的離散類別,而 則用於 資料物件的連續取值 資料分類是兩個階段的過程,包括學習階段和分類階段 學習階段 訓練階段 就是建立描述預先定義的資料類或概念集的分類器 而訓練集是有資料庫元祖和與他們相互關聯的類標號組成 類標號屬性是離散值和...