統計學習方法 AdaBoost

2021-08-28 18:55:20 字數 3339 閱讀 9563

在之前的文章中,我們學習了幾種經典的分類演算法:knn,***** bayes,decision tree,logistic regression,svm。

接下來我們學習一種方法來提公升分類效果,這種方法的核心思想就是:三個臭皮匠,頂個諸葛亮。

我們先從整合方法講起,簡單介紹bagging和boosting,然後著重介紹提公升方法(boosting),然後給出一種常用的提公升方法adapt boost(adaboost),最後介紹一種adaboost的特例,提公升樹。

學習了那麼多經典的分類演算法,我們會發現,演算法有各自的優勢和缺點;處理了那麼多資料,我們會發現,資料有好壞均衡之分;那麼你有沒有想過,將不同的分類器、不同的資料集擇優訓練,結合得到乙個更好的分類器呢?

這就是整合方法,整合方法有這樣幾種思路:

不同基本分類器的整合

同一基本分類器在不同引數設定下的整合

資料集不同部分分配給不同或相同基本分類器後的整合(bagging(相同分類器時))

同一資料集不同權值分配給同一基本分類器的整合(boosting)

其中第三種思路,資料集不同部分分配給相同基本分類器後的整合,叫做自舉匯聚法(bootstrap aggregating),即bagging;第四種思路,同一資料集不同權值分配給同一基本分類器的整合叫提公升方法,即boosting,也是本文的重點。

這兩種方法的區別如下,

bagging過程:

建立s個新資料集

從原始資料集選擇s次後,得到s個新資料集:新資料集與原資料集大小相等,各資料集都是在原資料集中隨機選擇乙個樣本來進行替換得到的,即可以多次選擇同乙個資料放入某個新資料集中,而原資料集有些資料則不會存在於某個新資料集中。

學習分類器

將某個學習演算法分別作用於每s個新資料集,得到s個分類器

投票分類

要對新資料分類時,用學習到的s個新分類器進行分類,選擇分類器投票結果中最多的類別,作為該資料的最終分類結果

相比於bagging,boosting有這樣一些不同點:

新資料集不同

bagging,通過從原資料集中隨機選擇資料構造新資料集

boosting,通過改變原資料集各資料權重來構造新的資料集

加權方式不同

bagging,訓練得到的分類器,等權重投票

boosting,對訓練得到的分類器加權求和得到最終分類器,權重與分類器分類正確率正相關

下面我們學習提公升方法boosting。

基本思路

三個臭皮匠,頂個諸葛亮

對於乙個複雜任務來說,將多個專家的判斷進行適當的綜合所得出的判斷,要比其中任何乙個專家單獨的判斷好。

基本概念

乙個概念強可學習的充要條件是這個概念是弱可學習的。那麼,如果已經發現了弱可學習演算法,那麼能否將它提公升為強可學習演算法?

這就是提公升方法的由來。

我們再來看看提公升方法要解決的兩個問題

1. 在每一輪如何改變訓練資料的權值或概率分布?2. 如何將弱分類器合成乙個強分類器?

加權多數表決法:加大分類誤差小的弱分類器權值,減小分類誤差大的弱分類器權值

這就是提公升方法的原理和基本思路,下面我們介紹一種常用且有效的提公升方法。

adaboost是adapt boost的縮寫,即可適應提公升方法,這種方法可以適應每次優化的模型的訓練誤差,使得每次訓練的準確率都較上一次有盡可能大的提公升。

adaboost演算法

演算法特點:不改變所給訓練資料,通過不斷改變訓練資料權值的分布,使得訓練資料在基本分類器中起不同的作用

我們可以認為adaboost演算法是這樣的二分類學習方法:

模型為加法模型

損失函式為指數函式

學習演算法為前向分步演算法

其中,前向分步演算法是一種很重要的演算法思想,我認為可以總結為:分而治之。其基本思路是:對於乙個加法模型(如上述的f(x),如果能從前向後,每一步只學習乙個基函式及其係數,逐步逼近目標函式,那麼就可以簡化優化的複雜度。如此,前向分步演算法,將同時求解所有引數的優化問題簡化為逐次求解各個引數的優化問題。

前向分步演算法:

可以認為,adaboost是前向分步演算法的特例。

adaboost總體來說是一種演算法思路,並不是一種具體的演算法,因為演算法8.1中的步驟(a)的基本分類器並沒有指定。如果我們將基本分類器設定為決策樹,那麼此時的演算法就叫做「提公升樹」。

提公升樹是以分類樹/回歸樹為基本分類器的提公升方法(即,提公升樹是adaboost演算法的特例,其基本分類器是決策樹),被認為是統計學習中效能最好的方法之一。

不同的提公升樹演算法

分類問題的提公升樹 (損失函式為指數函式)

演算法:將演算法8.1中的基本分類器限制為分類決策樹即可

回歸問題的提公升樹 (損失函式為平方誤差函式)

演算法:

上述介紹的提公升方法,損失函式都是指數或平方損失函式,當損失函式為指數函式或平方損失函式時,每一步的優化都很簡單,但對一般損失函式而言,每一步的優化都不那麼容易,那麼能不能找到近似方法去求解呢?

能,這就是梯度提公升演算法,其關鍵點是,利用損失函式的負梯度在當前模型的值,作為回歸問題提公升樹演算法中殘差的近似值,擬合乙個回歸樹

本文先從整合方法講起,簡單介紹bagging和boosting,然後著重介紹提公升方法(boosting),然後給出一種常用的提公升方法adapt boost(adaboost),最後介紹一種adaboost的特例,提公升樹。

下期我們將利用python3實現adaboost演算法,敬請期待~

《統計學習方法》 李航 chapter8

統計學習方法 五 AdaBoost

如果我有寫過整合方法的話 沒有的話看這篇整合學習理論 整合方法的一大類就是boosting,其基本思想就是不斷地在迭代過程中訓練basemodel,並增加誤分樣本的權重,直到達到停止條件後,組合basemodel。從整合學習的理論我們知道boosting在組合過程中會增大模型的variance,所以...

《統計學習方法》筆記 AdaBoost

整合方法就是通過組合多個分類器的分類結果,獲得比簡單的分類器更好的分類結果。使用整合方法的多種形式 1 可以是不同演算法的整合 2 可以是同一演算法在不同設定下的整合 3 資料集不同部分分配給不同分類器之後的整合 下面介紹同一種分類器多個不同例項的兩種計算方法 基於資料隨機重抽樣的分類器構建方法 b...

統計學習方法 1 統計學習方法概論

統計學習的主要特點是 1 統計學習以計算機及網路為平台,是建立在計算機及網路之上的 2 統計學習以資料為研究物件,是資料驅動的學科 3 統計學習的目的是對資料進行 與分析 4 統計學習以方法為中心,統計學習方法構建模型並應用模型進行 與分析 5 統計學習是概率論 統計學 資訊理論 計算理論 最優化理...