1. 程式人生 > >R語言分類演算法之整合學習(Bootstrap Aggregating)

R語言分類演算法之整合學習(Bootstrap Aggregating)

1.整合學習(Bootstrap Aggregating)原理分析:
Bagging是Bootstrap Aggregating的縮寫,簡單來說,就是通過使用boostrap抽樣得到若干不同的訓練集,以這些訓練集分別建立模型,即得到一系列的基分類器,這些分類器由於來自不同的訓練樣本,他們對同一測試集的預測效果不一樣.因此,Bagging演算法隨後對基分類器的一系列預測結果進行投票(分類問題)和平均(迴歸問題),從而得到每一個測試集樣本的最終預測結果,這一整合後的結果往往是準確而穩定的.
比如現在基分類器1至10,他們對某樣本的預測結果分別為類別1/2/1/1/1/1/2/1/1/2,則Bagging給出的最終結果為”該樣本屬於類別1”,因為大多數基分類器將票投給了1.
AdaBoost(Adaptive Boosting)相對於Bagging演算法更為巧妙,且一般來說是效果更優的整合分類演算法,尤其在資料集分佈不均衡的情況下,其優勢更為顯著.該演算法的提出先於Bagging,但在複雜度和效果上高於Bagging.
AdaBoost同樣是在若干基分類器基礎上的一種整合演算法,但不同於Bagging對一系列預測結果的簡單綜合,該演算法在依次構建基分類器的過程中,會根據上一個基分類器對各訓練集樣本的預測結果,自行調整在本次基分類器構造時,個樣本被抽中的概率.具體來說,如果在上一基分類器的預測中,樣本i被錯誤分類了,那麼,在這一次基分類器的訓練樣本抽取過程中,樣本i就會被賦予較高的權重,以使其能夠以較大的可能被抽中,從而提高其被正確分類的概率.
這樣一個實時調節權重的過程正是AdaBoost演算法的優勢所在,它通過將若干具有互補性質的基分類器集合於一體,顯著提高了整合分類器的穩定性和準確性.另外,Bagging和AdaBoost的基分類器選取都是任意的,但絕大多數我們使用決策樹,因為決策樹可以同時處理數值/類別/次序等各型別變數,且變數的選擇也較容易.
R語言高階演算法之整合學習(


2.在R語言中的應用
整合學習演算法主要運用到了adabag包中的bossting函式。
bossting(formula,data,boos=TRUE,mfinal=100,coeflearn=’Breiman’,control)
3.以iris資料集為例進行分析
1)應用模型並檢視模型的相應引數
fit_bag=bagging(Species~.,data_train,mfinal=5,control=rpart.control(maxdepth=3))
fit_bag[1:length(bag)]
R語言高階演算法之整合學習(Bootstrap Aggregating)
R語言高階演算法之整合學習(Bootstrap Aggregating)
2)預測分析
pre_bag=predict(fit_bag,data_test)
R語言高階演算法之整合學習(Bootstrap Aggregating)