bagging方法
boosting方法
boosting和bagging都是整合學習(ensemble learning)領域的基本演算法[2]。
整合學習是指將若干弱分類器組合之後產生乙個強分類器。弱分類器(weak learner)指那些分類準確率只稍好於隨機猜測的分類器(error rate < 50%)。
整合演算法成功的關鍵在於能保證弱分類器的多樣性(diversity)。整合不穩定的學習演算法能得到更明顯的效能提公升。
為什麼要整合?
以下是polikar給出的解釋 [3]:
模型選擇(model selection)
假設各弱分類器間具有一定差異性(如不同的演算法,或相同演算法不同引數配置),這會導致生成的分類決策邊界不同,也就是說它們在決策時會犯不同的錯誤。將它們結合後能得到更合理的邊界,減少整體錯誤,實現更好的分類效果。
分治(divide and conquer)
若決策邊界過於複雜,則線性模型不能很好地描述真實情況。因此先訓練多個線性分類器,再將它們整合。
資料融合(data fusion)
當有多個不同資料來源,且每個資料來源的特徵集抽取方法都不同時(異構的特徵集),需要分別訓練分類器然後再整合。
資料融合(data fusion)
置信度估計(confidence estimation)
可以為整合分類器計算分類結果的置信度。如使用多個弱分類器分類某個未知樣本,且經過多數投票後得到的標籤為y。如果投y的分類器越多,這個結果的置信度越高;反之則越低。
bagging也叫自舉匯聚法(bootstrap aggregating),是一種在原始資料集上通過有放回抽樣重新選出s個新資料集來訓練分類器的整合技術。也就是說這些新資料集是允許重複的。
使用訓練出來的分類器集合來對新樣本進行分類,然後用多數投票或者對輸出求均值的方法統計所有分類器的分類結果,結果最高的類別即為最終標籤。
分類器集合是在迭代中序列地產生的。訓練時著重關注訓練集中那些不容易區分的樣本。adaboost是一種常見的boosting演算法,下面是對演算法的描述。
adaboost
即adaptive boosting,是一種迭代演算法。每輪迭代中會在訓練集上產生乙個新的分類器,然後使用該分類器對所有樣本進行分類,以評估每個樣本的重要性(informative)。
具體來說,演算法會為每個訓練樣本賦予乙個權值。每次用訓練完的新分類器標註各個樣本,若某個樣本點已被分類正確,則將其權值降低;若樣本點未被正確分類,則提高其權值。權值越高的樣本在下一次訓練中所佔的比重越大,也就是說越難區分的樣本在訓練過程中會變得越來越重要。
整個迭代過程直到錯誤率足夠小或達到一定次數為止。
訓練過程
為每個樣本初始化權值w=
1n;開始迭代,在第
t 輪迭代中:
1. 使用訓練集訓練分類器ct
,訓練誤差e=
所有被分
類錯誤樣
本的權值
之和2. 計算分類器的權值為α=
12ln
(1−e
e)3. 更新樣本當前的權值wt
: - 若分類正確,則減少權值,wt
+1=w
t∗e−
α ;
- 若分類錯誤,則加大權值,wt
+1=w
t∗eα
4. 將所有樣本的權值歸一化,使其相加為1
分類過程
用生成的所有分類器**未知樣本x,最終結果為所有分類器輸出的加權平均。
分析
優點:泛化錯誤率降低,易實現,無需調整引數,可以處理不均衡的樣本集。
缺點:對於離群點很敏感,易過擬合。
參考了
july的部落格
《機器學習實戰》
整合學習 bagging和boosting
bagging boostrap aggregating 對樣本再取樣 boostrap 對每一重取樣的子樣本訓練乙個模型,最後取平均,所以是降低模型的variance。bagging比如random forest這種先天並行的演算法都有這個效果。boosting則是迭代演算法,每一次迭代都根據上一...
Boosting演算法和Adaboost演算法的關係
1990年,schapire就首先構造出一種多項式級的演算法,將弱學習演算法提公升為強學習演算法,就是最初的boosting演算法。boosting意思為提公升 加強,現在一般指將弱學習提公升為強學習的一類演算法。級聯分類器就是將多個強分類器連線在一起進行操作,每乙個強分類器都由若干個弱分類器加權組...
整合學習 Boosting和Bagging異同
整合學習 ensemble learning 有時也被籠統地稱作提公升 boosting 方法,廣泛用於分類和回歸任務。它最初的思想很簡單 使用一些 不同的 方法改變原始訓練樣本的分布,從而構建多個不同的分類器,並將這些分類器線性組合得到乙個更強大的分類器,來做最後的決策。也就是常說的 三個臭皮匠頂...