熱線電話:13121318867

登錄
首頁精彩閱讀R語言使用boosting方法對數據分類與交叉驗證
R語言使用boosting方法對數據分類與交叉驗證
2018-01-19
收藏

R語言使用boosting方法對數據分類與交叉驗證

數據分類說明

與bagging方法類似,boosting算法也是先獲得簡單的分類器,然后通過調整錯分樣本的權重逐步改進分類器,使得后續分類器能夠學習前一輪分類器,adabag實現了AdaBoost.M1和SAMME兩個算法,因此用戶能夠使用adabag包實施集成學習。

數據分類操作

導入包
library(rpart)
library(adabag)
調用adabag包的boosting函數分類器:
churn.boost = boosting(churn ~ .,data = trainset,mfinal = 10,coeflearn = "Freund",boos = FALSE,control = rpart.control(maxdepth = 3))
使用boosting訓練模型對測試數據集進行分類預測:
churn.boost.pred = predict.boosting(churn.boost,newdata = testset)
基于預測結果生成分類表:
 churn.boost.pred$confusion
               Observed Class
Predicted Class yes  no
            no   41 858
            yes 100  19
根據分類結果計算平均誤差:
churn.boost.pred$error
[1] 0.0589391
數據分類原理
boosting算法的思想是通過對弱分類器(單一決策樹)的“逐步優化”,使之成為強分類器。假定當前在訓練集中存在n個點,對其權重分別賦值Wj(0<= j < n),在迭代的學習過程中(假定迭代次數為m),我們將根據每次迭代的分類結果,不斷調整這些點的權重,如果當前這些點分類是正確的,則調低其權值,否則,增加樣例點的權值。這樣,當整個迭代過程結束時,算法將得到m個合適的模型,最終,通過對每棵決策樹加權平均得到最后的預測結果,權值b由每棵決策樹的分類質量決定。

bagging和boosting都采用了集成學習的思想,即將多個弱分類器組成強分類器,兩者的不同在于,bagging是組合獨立的模型,而boosting則通過在迭代的過程學習的過程中盡可能用正確的分類模型來降低預測誤差。與bagging類似,用戶也需要指定用于分類的模型的公式與分類數據集,用戶還要自己指定諸如迭代次數(mfinal),權重更新系數(coeflearn)、觀測值權重(boos)以及rpart的控制方法(單一決策樹)等參數,本例中迭代次數為設置為10,采用Freund(AdaBoost.M1算法實現的方法)作為系數(coeflearn),設置boos的值是“false”,最大深度為3。
交叉驗證說明
adabag包支持對boosting方法的交叉驗證,該功能可以通過boosting.cv實現。
交叉驗證操作
獲得boosting方法交叉驗證后的最小估計錯誤:
調用boosting.cv對訓練數據集實施交叉驗證:
churn.boost.cv = boosting.cv(churn ~ .,v = 10,data = trainset,mfinal = 5,control=rpart.control(cp = 0.01))
從boosting結果生成混淆矩陣
churn.boost.cv$confusion
               Observed Class
Predicted Class  yes   no
            no   103 1936
            yes  239   37

得到boosting的平均誤差:
churn.boost.cv$error
[1] 0.06047516

交叉驗證原理

函數參數v值設置為10,mfinal的值設置為5,boosting算法會執行一個5次迭代的10折交叉驗證,另外可以設置參數進行rpart的匹配控制。我們將復雜度參數設置為0.01。

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

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

數據分析師資訊
更多

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