機器學習元演算法
元演算法將不同的分類器組合起來,具體使用有多種形式,可以是不同演算法的整合,也可以是不同演算法在不同設定下的整合,還可以是資料集不同部分分配給不同分類器之後的整合。
一、bagging:基於資料隨機重抽樣的分類器構建演算法
自舉匯聚法(bootstrap aggregating),也稱為bagging方法,是在從原始資料集選擇S次後得到S個新資料集的一種技術。新書記集和原始資料集大小相等。每個資料集都是通過在原始資料集中隨機選擇一個樣本來進行替換得到的。替換意味著可以多次地選擇同一樣本,這一性質就允許新資料集中可以有重複的值,而原始資料集中某些值在新集合中則不出現。
在S個數據集建好之後,將某個學習演算法分別作用於每個資料集就得到了S個分類器。當對新資料進行分類時,可以應用這S個分類器進行分類,選擇分類器投票結果中最多的類別作為最後的分類結果
二、boosting
boosting是一種與bagging很類似的技術。boosting通過集中關注被已有分類器錯分的那些資料來獲得新的分類器。由於boosting分類的結果是基於所有分類器的加權求和結果的,因此boosting與bagging不太一樣。bagging中分類器的權重是相等的,而boosting中的分類器權重並不相等,每個權重代表的是其對應分類器在上一輪迭代中的成功度。
三、AdaBoost
AdaBoost是boosting方法的一個最流行的版本。弱分類器中的弱是指分類器的效能比隨機猜測要略好,但也不會好太多,即在二分類的情況下弱分類器的錯誤率會高於50%,而“強”分類器的錯誤率將會低很多,這是AdaBoost演算法的理論問題來源。
AdaBoost的執行過程:
訓練資料中的每個樣本,並賦予一個權重,這些權重構成了向量D。一開始這些權重都初始化為相等值。首先在訓練資料上訓練出一個弱分類器並計算該分類器的錯誤率,然後再同一資料集上再次訓練弱分類器。在分類器的第二次訓練當中,將會重新調整每個樣本的權重,其中第一次分對的樣本的權重將會降低,而第一次分錯的樣本的權重就會提高。為了從所有的弱分類器中得到最終的分類結果,AdaBoost對每個分類器都分配了一個權重alpha,這些alpha值是基於每個弱分類器的錯誤率進行計算的。錯誤率 = 未正確分類的樣本數目 / 所有樣本數目