1. 程式人生 > >決策樹的改進--組合預測模型:裝袋技術

決策樹的改進--組合預測模型:裝袋技術

基本思想 通過Bootstrap抽樣(0.632自舉法),對樣本量為n的樣本,做k次有放回重複抽樣,得到k個樣本容量仍為n的隨機樣本Si,基於樣本Si,建立k棵分類迴歸樹,即k個預測模型。 對於分類問題,採用k個預測模型“投票”和“少數服從多數”的原則。哪個類別“得票”最多,就預測為哪個類別。對於迴歸問題,以k個預測模型給出的預測值的平均值作為最終的預測值。 若令k個預測模型為所有觀測投票預測,總有部分觀測參與建模,會導致預測誤差的估計偏樂觀。一般採用基於袋外(Out Of Bag,OOB)觀測的預測誤差。即若第i個觀測在建模過程中有q(q<k)次作為OOB觀測,則對第i個觀測進行預測時應有q個預測模型為其投票,並以得票最高的類別作為其預測類別。 對袋裝技術而言,袋外觀測的比例大約為36.8%。

下面以R語言分類預測–決策樹中的例子的基礎上,進行模型優化:

library('ipred')
#袋裝技術建立樹模型
#coob=TRUE:基於袋外觀測計算預測誤差;nbagg=25即抽樣次數k;control同單棵樹引數意義相同
tree_bag <- ipred::bagging(pres92~age+educ+degree+sex, data=df,nbagg=25, coob=TRUE, control=rc )
#使用模型對樣本所有觀測進行預測
ts2 <- predict(tree_bag, df, type='class')
#計算混淆矩陣
tb2 <- table(df$pres92,ts2)
#計算錯判率
t2 <- diag(tb2) rs2 <-vector() for(j in 1:3){ b = 1-t2[j]/sum(tb2[,j]) rs2 = c(rs2,b) };rs2

對角線為預測正確的觀測數 這裡寫圖片描述

則此時第1類錯判率為0.3168000即(66+132)/(427+66+132),第2類錯判率為0.3687500,第3類錯判率為0.2928437 這裡寫圖片描述 很明顯,整體而言,錯判率較單棵數降低10%左右