1. 程式人生 > >1. 整合學習(Ensemble Learning)原理

1. 整合學習(Ensemble Learning)原理

1. 前言

我們之前介紹了很多的機器學習的演算法,大家有沒想過一個問題用所有的方法都試一遍,然後拿結果一起再來判斷。其實這種思路在機器學習中完全是可以的,並且有了自己的一個陣營,就是整合學習。整合學習顧名思義是結合了好多的演算法一起來進行預測。就像我們想看一部電影前,問問身邊看過的幾個朋友對這部電影的評價,然後作出一個綜合的判斷,要不要看這部電影。

2. 整合學習原理

我們之所以要把多個學習器組合在一起,是因為單個學習器往往可能效果不那麼好,而多個學習器可以互相幫助,各取所長,就有可能一起決策,把一個學習任務完成得比較漂亮。單個學習器我們稱為弱學習器,相對的整合學習則是強學習器。

  • 弱學習器:常指泛化效能略優於隨機猜測的學習器:例如在二分類問題桑精度略高於50%的分類器。
  • 強學習器:通過一定的方式整合一些弱學習器,達到了超過所有弱學習器的準確度的分類器。

image

根據個體學習器的種類的個數,我們可以分為兩種整合學習。

  1. 所有的個體學習器都是一個種類的,或者說是同質的。比如都是決策樹個體學習器,或者都是神經網路個體學習器。
  2. 所有的個體學習器不全是一個種類的,或者說是異質的。比如我們有一個分類問題,對訓練集採用支援向量機個體學習器,邏輯迴歸個體學習器和樸素貝葉斯個體學習器來學習,再通過某種結合策略來確定最終的分類強學習器,這種整合學習成為Stacking。

同質個體學習器按照個體學習器之間是否存在依賴關係可以分為兩類:

  1. 個體學習器之間存在強依賴關係
    ,一系列個體學習器基本都需要序列生成,代表演算法是Boosting系列演算法
  2. 個體學習器之間不存在強依賴關係,一系列個體學習器可以並行生成,代表演算法是Bagging和隨機森林(Random Forest)系列演算法。下面就分別對這兩類演算法做一個概括總結。

3. Bagging介紹

image

Bagging的個體弱學習器的訓練集是通過隨機取樣得到的。通過\(T\)次的隨機取樣,我們就可以得到\(T\)個取樣集,對於這\(T\)個取樣集,我們可以分別獨立的訓練出\(T\)個弱學習器,再對這\(T\)個弱學習器通過集合策略來得到最終的強學習器。

下圖是決策樹的Bagging和KNN的Bagging決策邊界:

image

4. Boosting介紹

Boosting的主要的過程如下圖:

image

Boosting演算法的工作機制:

  1. 首先從訓練集用初始權重訓練出一個弱學習器1.
  2. 根據學習器1的學習誤差率來更新訓練樣本的權重,使得之前弱學習器1學習誤差率高的訓練樣本點的權重變高,使得這些誤差率高的點在後面的弱學習器2中得到更多的重視。
  3. 然後基於調整權重後的訓練集來訓練弱學習器2。
  4. 如此重複進行,直到弱學習器數達到事先指定的數目\(T\)
  5. 最終將這\(T\)個弱學習器通過集合策略進行整合,得到最終的強學習器。

Boosting系列演算法裡最著名演算法主要有AdaBoost演算法和提升樹(GBDT)系列演算法

下圖是AdaBoost不同弱學習器個數的決策邊界:

image

5. Stacking介紹

image

當使用Stacking的結合策略時, 我們不是對弱學習器的結果做簡單的邏輯處理,而是再加上一層學習器,也就是說,我們將訓練集弱學習器的學習結果作為輸入,將訓練集的輸出作為輸出,重新訓練一個學習器來得到最終結果。

image

6. 結合策略

6.1 平均法

  • 簡單平均法
  • 加權平均法

6.2 投票法

  • 絕對多數投票法:得票過半數的標記,否則拒絕預測(可靠性要求較高的學習任務)
  • 相對多數投票法:得票最多的標記(學習任務要求必須提供預測結果)
  • 加權投票法

(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected]