- 簽證留學 |
- 筆譯 |
- 口譯
- 求職 |
- 日/韓語 |
- 德語
我們自然可以將不同的分類器組合起來,而這種組合結(jié)果則被稱為集成方法(ensemble method)或者元算法(meta-algorithm)。使用集成方法時會有多種形式:可以是不同算法的集成,也可以是同一算法在不同設置下的集成,還可以是數(shù)據(jù)集不同部分分配給不同分類器之后的集成。接下來,我們將介紹基于同一種分類器多個不同實例的兩種計算方法。在這些方法當中,數(shù)據(jù)集也會不斷變化,而后應用于不同的實例分類器上。最后,我們會討論如何利用機器學習問題的通用框架來應用AdaBoost算法。
AdaBoost
優(yōu)點:泛化錯誤率低,易編碼,可以應用在大部分分類器上,無參數(shù)調(diào)整。
缺點:對離群點敏感。
適用數(shù)據(jù)類型:數(shù)值型和標稱型數(shù)據(jù)。
1. bagging:基于數(shù)據(jù)隨機重抽樣的分類器構(gòu)建方法
自舉匯聚法(bootstrap aggregating),也稱為bagging方法,是在從原始數(shù)據(jù)集選擇S次后得到S個新數(shù)據(jù)集的一種技術。新數(shù)據(jù)集和原數(shù)據(jù)集的大小相等。每個數(shù)據(jù)集都是通過在原始數(shù)據(jù)集中隨機選擇一個樣本來進行替換而得到的。這里的替換就意味著可以多次地選擇同一樣本。這一性質(zhì)就允許新數(shù)據(jù)集中可以有重復的值,而原始數(shù)據(jù)集的某些值在新集合中則不再出現(xiàn)。
在S個數(shù)據(jù)集建好之后,將某個學習算法分別作用于每個數(shù)據(jù)集就得到了S個分類器。當我們要對新數(shù)據(jù)進行分類時,就可以應用這S個分類器進行分類。與此同時,選擇分類器投票結(jié)果中最多的類別作為最后的分類結(jié)果。
當然,還有一些更先進的bagging方法,比如隨機森林(random forest)。接下來我們將注意力轉(zhuǎn)向一個與bagging類似的集成分類器方法boosting。
1.2 boosting
boosting是一種與bagging很類似的技術。不論是在boosting還是bagging當中,所使用的多個分類器的類型都是一致的。但是在前者當中,不同的分類器是通過串行訓練而獲得的,每個新分類器都根據(jù)已訓練出的分類器的性能來進行訓練。boosting是通過集中關注被已有分類器錯分的
那些數(shù)據(jù)來獲得新的分類器。
由于boosting分類的結(jié)果是基于所有分類器的加權求和結(jié)果的,因此boosting與bagging不太一樣。bagging中的分類器權重是相等的,而boosting中的分類器權重并不相等,每個權重代表的是其對應分類器在上一輪迭代中的成功度。
boosting方法擁有多個版本,本章將只關注其中一個最流行的版本AdaBoost。
AdaBoost的一般流程
(1)收集數(shù)據(jù):可以使用任意方法。
(2)準備數(shù)據(jù):依賴于所使用的弱分類器類型,本章使用的是單層決策樹,這種分類器可以處理任何數(shù)據(jù)類型。當然也可以使用任意分類器作為弱分類器。作為弱分類器,簡單分類器的效果更好。
(3)分析數(shù)據(jù):可以使用任意方法。
(4)訓練算法:AdaBoost的大部分時間都用在訓練上,分類器將多次在同一數(shù)據(jù)集上訓練弱分類器。
(5)測試算法:計算分類的錯誤率。
(6)使用算法:同SVM一樣,AdaBoost預測兩個類別中的一個。如果想把它應用到多個類別的場合,那么就要像多類SVM中的做法一樣對AdaBoost進行修改。