AdaBoost

一、元算法(集成算法)

元算法就是對其餘算法進行組合的一種方式。也稱爲集成算法(ensemble method),例如bagging方法和boosting方法。它能夠是不一樣算法的集成;也能夠是同一算法在不一樣設置下的集成;還能夠是數據集不一樣部分分配給不一樣分類器以後的集成。算法

二、bagging和boosting

1)、bagging

自舉匯聚法(bootstrap aggregating),也成爲bagging方法。bootstrap

其是從原始數據選擇S次後獲得S個新數據集的一種技術,新數據集和原始數據集大小相等。(每一個數據集都是從原始集合中隨機選擇一個樣本,而後隨機選擇另外一個樣原本替換它。有的書中,也認爲是放回取樣獲得的——好比要獲得一個大小爲n的數據集,該數據集的每個樣本都是在原始數據集中隨機抽樣獲得的。所以,新的數據集可能有重複的樣本,原始數據集中的某些樣本也可能不在新的數據集中。)性能

在S個數據集建好後,將某個學習算法分別做用於每一個數據集獲得S個分類器。對新數據分類時,選擇分類器投票結果中最多的類別做爲最後的分類結果。學習

2)、boosting

Boosting和bagging相似,可是boosting經過串行訓練得到不一樣的分類器,每一個分類器根據已訓練出的分類器的性能進行訓練,集中關注被已有分類器錯分的數據。測試

並且,boosting分類結果是基於全部分類器的加權求和獲得的,每一個分類器的權重不相等(bagging中分類器權重相等),每一個權重表明對應分類器在上一輪迭代的成功度。spa

其中,AdaBoost是其中較爲流行的版本。blog

三、AdaBoost

一、訓練方法

AdaBoost是adaptive boosting(自適應boosting)的縮寫。class

其過程以下:重構

①對訓練數據中的每一個樣本賦予一個權重,這些權重構成向量D。一開始,這些權重都相等。循環

②首先在訓練數據上訓練出一個弱分類器,並計算該分類器的錯誤率ε:

併爲該分類器分配權重α:

③對該分類器進行二次訓練,從新調整每一個樣本的權重,第一次分對的樣本權重會下降:

第一次分錯的樣本的權重會提升:

④進入下一輪迭代,訓練新的弱分類器。

⑤直至 爲0或者弱分類器數目達到指定值。

二、基於單層決策樹實現

單層決策樹僅基於單個特徵進行決策。經過使用多棵單層決策樹,就能夠構造對數據集正確分類的多個弱分類器。

一、單層決策樹肯定

設最小錯誤率爲ε=INF,數據集的樣本個數爲m,每一個樣本的特徵個數爲n,當前各個樣本的權重列向量爲D。

①第一層循環:遍歷各個特徵,設當前特徵爲i

②第二層循環:獲得該特徵取值的最小值min和最大值max,設最大步長stepsize,獲得步長數steps,遍歷步長從-1到steps,設當前步長爲j:

③第三層循環:獲得當前閾值min+j*stepsize,第一種狀況設大於等於閾值的樣本爲1類;第二種狀況設小於閾值的樣本爲1類,其他爲-1類。

④循環節:獲得當前分類下分錯的樣本,此處基於權重向量D,獲得分錯樣本的權重和Ecur,來評價分類器。若Ecur<ε,則更新最佳分類器和錯誤率。

⑤遍歷結束後,獲得最低錯誤率下分類的特徵、閾值、分類不等號方向。

二、訓練過程

①初始化,設D爲全1/m列向量。同時設置m維的全0列向量classEst,記錄每一個樣本的累計類別估計值。設置最大迭代次數。

②對每次迭代,找到當前狀況下的最佳單層決策樹及其最低錯誤率和類別向量cls。

③經過爲該分類器分配權重α

④經過α調整樣本權重向量D:classEst+=α*cls

⑤根據classEst的正負獲得當前分類錯誤率,若爲0,則退出迭代。

三、測試過程

①獲得測試數據在各個分類器的預測結果(1類或-1類),乘以相應分類器的權重並求和,便獲得每一個測試樣本的分類結果,根據其正負判斷最後爲1類仍是-1類。

相關文章
相關標籤/搜索