機器學習算法(一) | Adaboost算法詳解

重磅乾貨,第一時間送達
機器學習算法(一) | Adaboost算法詳解算法

1

前言

用一條垂直於X軸或者Y軸的直線將藍色點和黃色點成功分離,不管這個直線是怎麼選取,這個分類都不可能達到100%的準確率。當年感知機的提出爲咱們解決線性問題提供瞭解題思路,當面對異或問題的時候,感知機卻無能爲力。後來引入了激活函數,解決了異或問題,給感知機注入了活力。回到正題,當一條直線沒法正確劃分這個分類的時候,要怎麼作呢?引入激活函數,能夠嗎?
機器學習算法(一) | Adaboost算法詳解api

2

Bagging

機器學習算法(一) | Adaboost算法詳解
Bagging訓練流程:網絡

  1. 在訓練數據個數爲X的數據集中,隨機抽取m個樣本集(基本分類器C訓練結束後將這些樣本放回)
  2. 經過對隨機抽取出來的m個樣本集進行訓練,造成一個偏差較小的基本分類器C1
  3. 對基本分類器C1賦予權重W1
  4. 回到步驟1,從新進行抽取m個樣本,最後將各個分類器按照必定的權重進行線性疊加,造成一個由基本分類器組成的強分類器

Bagging的特色:框架

A. 對每一個分類器,輸入數據都是從原始訓練數據中可重複的採樣, 每一個分類器的輸入服從相同的分佈,且各輸入之間相互獨立。而Boost中,各訓練數據的分佈不獨立,每一個分類器的輸入樣本之間也不獨立。
B. 各分類器能夠採用相同算法,不一樣的超參數;也可採用不一樣算法;
C. 每一個分類器的輸出沒有權重之分,都是平等的。
它的特色在「隨機採樣」。那麼什麼是隨機採樣?
隨機採樣(bootsrap)就是從咱們的訓練集裏面採集固定個數的樣本,可是每採集一個樣本後,都將樣本放回。也就是說,以前採集到的樣本在放回後有可能繼續被採集到。對於咱們的Bagging算法,通常會隨機採集和訓練集樣本數m同樣個數的樣本。這樣獲得的採樣集和訓練集樣本的個數相同,可是樣本內容不一樣。若是咱們對有m個樣本訓練集作T次的隨機採樣,,則因爲隨機性,T個採樣集各不相同。
此外Bagging在進行權重分配的時候有多種不一樣的分配方式:機器學習

  1. 簡單的投票法是相對多數投票法,也就是咱們常說的少數服從多數
  2. 稍微複雜的投票法是絕對多數投票法,也就是咱們常說的要票過半數。在相對多數投票法的基礎上,不光要求得到最高票,還要求票過半數。不然會拒絕預測。
  3. 更加複雜的是加權投票法,和加權平均法同樣,每一個弱學習器的分類票數要乘以一個權重,最終將各個類別的加權票數求和,最大的值對應的類別爲最終類別。

Bagging的缺點:

極可能在每次抽樣m個樣本的時候,會拿到與以前抽樣相同數據的狀況,致使分類器效果在進行線性組合後造成的強分類器效果不佳,在《機器學習》一書中也提到,若進行隨機採樣,將會有36.8%的樣本是不會被抽樣到,故因爲訓練集帶來的訓練偏差難以免ide

3

boost提高方法

機器學習算法(一) | Adaboost算法詳解

提高( boosting)方法是一種經常使用的統計學習方法,應用普遍且有效.在分類問題中,它經過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行線性組合,提升分類的性能。提高方法的思路和表明性的提高算法 Adaboost,Adaboost算法是1995年由 Freund和 Schapire提出的
集成學習是使用一系列學習器進行學習,並使用某種規則把各個學習結果進行整合從而得到比單個學習器更好的學習效果的一種機器學習方法。通常狀況下,集成學習中的多個學習器都是同質的"弱學習器"。函數

基學習算法(同質集成):例如「決策樹集成」、「神經網絡集成」(對應的個體學習器稱之爲基學習器)
異質集成:包含不一樣類型的個體學習器——同時包含決策樹和神經網絡等不一樣種類的學習方法性能

在機率近似正確學習的框架中, 若是存在一個多項式的學習算法可以學習它,而且正確率很高,那麼就稱這個概念是強可學習的;
若是存在一個多項式的學習算法可以學習它,學習的正確率僅比隨機猜想略好,那麼就稱這個概念是弱可學習的.
很是有趣的是 Schapire後來證實強可學習與弱可學習是等價的, 在學習中,若是已經發現了「弱學習算法」,那麼可否將它提高( boost)爲「強學習算法」.
你們知道,發現弱學習算法一般要比發現強學習算法容易得多.那麼如何具體實施提高,便成爲開發提高方法時所要解決的問題.學習

在集成的過程種極可能會發生如下三種狀況:

  1. 集成效果尚佳,分類效果提高
  2. 集成效果不明顯,分類效果無提高
  3. 集成效果差,分類效果降低

機器學習算法(一) | Adaboost算法詳解

4

Adaboost提高思路

這樣,對提高方法來講,有兩個問題須要回答:
1.在每一輪如何改變訓練數據的權值或機率分佈;
2.如何將弱分類器組合成一個強分類器.
Adaboost算法的核心思想就是由分類效果較差的弱分類器逐步的強化成一個分類效果較好的強分類器。
而強化的過程,就是以下圖所示,逐步的改變樣本權重,樣本權重的高低,表明其在分類器訓練過程當中的重要程度。而分類器在訓練的過程當中會更加看重這些樣本,進行「特殊照顧」
所謂「三個臭皮匠,頂個諸葛亮」正是這個道理,能夠看到在每一次分類的過程當中,被分類錯誤的點的面積(即權重)在上升,分類正確的點的面積(即權重)在降低,可以更好的使得分類器注意到這些點。測試

機器學習算法(一) | Adaboost算法詳解

不過有幾個具體的問題Boosting算法沒有詳細說明

  1. 如何計算學習偏差率e
  2. 如何獲得弱學習器權重係數 α
  3. 如何更新樣本權重D
  4. 使用何種結合策略
    這是Adaboost整個的算法流程,公式看起來枯燥無味,不如舉個例子看看。
    機器學習算法(一) | Adaboost算法詳解

訓練數據集T={(x1,y1),(x2,y2),...,(xN,yN)},其中x表示輸入樣本,y∈{+1,−1}爲對應的標籤。
輸出:最終分類器G(x)
機器學習算法(一) | Adaboost算法詳解
(a)在權值分佈爲D1的訓練數據上,閾值ν取2.5時分類偏差率最低,故基本分類器爲
機器學習算法(一) | Adaboost算法詳解
(b)G(x)在訓練數據集上的偏差率
機器學習算法(一) | Adaboost算法詳解
(c)計算G(x)的係數
機器學習算法(一) | Adaboost算法詳解
(d)更新訓練數據的權值分佈
機器學習算法(一) | Adaboost算法詳解
原先權值(表1):
機器學習算法(一) | Adaboost算法詳解

如今更新後的權值(表2)
機器學習算法(一) | Adaboost算法詳解
能夠注意到被分類錯誤的點的權值是上升了,這是由於在公式中
機器學習算法(一) | Adaboost算法詳解

當判斷一致的時候,指數函數的指數是負數,exp(-α)<1,
當判斷不一致的時候,指數函數的指數是正數,exp(α)>1
根據表2的權值,咱們應該着重關注x=6,7,8這三個點。

機器學習算法(一) | Adaboost算法詳解
機器學習算法(一) | Adaboost算法詳解

如今更新後的權值(表3)
機器學習算法(一) | Adaboost算法詳解
能夠看到,因爲第二個分類器的在x=3,4,5上分類預測錯誤,相對應的權值都會上升。基本分類器2的權值爲何會比基本分類器1的權值高呢?那是由於基本分類器2的預測偏差率比1的小,基本分類器1的偏差率爲0.1+0.1+0.1=0.3,而基本分類器2的偏差率爲0.0715+0.0715+0.0715=0.2143,當偏差率下降的時候,分類器的權重會上升,表明着這個分類器進行「投票」的時候比重是比1大的。同理構造分類器3。
機器學習算法(一) | Adaboost算法詳解
機器學習算法(一) | Adaboost算法詳解
機器學習算法(一) | Adaboost算法詳解

總結:權值變化表(紅色標註的爲該分類器分類錯誤的權值變化)
機器學習算法(一) | Adaboost算法詳解

機器學習算法(一) | Adaboost算法詳解
注意:須要注意的是,boosting 算法在訓練的每一輪都須要檢查當前生成的基學習器是否知足基本條件,一旦條件不知足則基學習器被拋棄。初始設置的學習輪數T也許未達到,可能致使最終集成的學習器性能不佳。

5

總結

機器學習算法(一) | Adaboost算法詳解

6

案例

利用Adaboost從疝氣病症預測病馬的死亡率

機器學習算法(一) | Adaboost算法詳解
機器學習算法(一) | Adaboost算法詳解
從上述結果中能夠看出,當弱分類器數目達到50個的時候,訓練集和測試集的預測準確率均達到了一個比較高的值,可是若是繼續増增長弱分類器數量的話,測試集的準確率反而開始降低了,這就是所謂的過擬合(overfitting)

機器學習算法(一) | Adaboost算法詳解
Tensorflow的55個經典案例
AutoML綜述
機器學習算法和算法有什麼聯繫(附機器學習實戰PDF)
Tensorflow 3w+star例子帶你學
實戰 | CNN+BLSTM+CTC的驗證碼識別從訓練到部署

機器學習算法(一) | Adaboost算法詳解

識別二維碼
機器學習算法(一) | Adaboost算法詳解關注咱們

相關文章
相關標籤/搜索