【機器學習 07】Aggregation Models — Part 1 — Blending, Bootstrap aggregation, Boosting

Min
Becoming a data scientist
6 min readAug 20, 2022
此系列文章是參考自林軒田老師的機器學習基石與技法之課程筆記。

在我們認識許多不同模型後,是否有方法能夠混合這些模型,得到更好的表現呢?有的,就是本篇和下篇文章要介紹的 aggregation models。

首先,先來認識 decision stump 這個詞,這是在描述一個預測效果很差的模型,若自己單獨存在的話很弱,但是經過 aggregation 之後就可以達到很好的效果。

Aggregation 主要分成兩種:

  1. 在得到 gₜ 之後才做 aggregation,不會修改原本模型,只是藉由不同的模型選擇、結合方式,以決定最終結果。
    其中依照結合方式的不同,可分為 uniform blending、linear blending 和 non-linear blending。
  2. 一邊調整模型 gₜ,一邊做 aggregation。
    依照調整模型方式的不同,可分為 bagging(bootstrap aggregation) 和 boosting。

在這篇文章中我們會介紹 aggregation 的第一種方法,以及第二種方法的 bagging 和 boosting 前言。

Blending

讓我們從 blending 開始認識吧!可分為以下幾種方式:

  • 選擇表現最好的(selection by validation)
    G(x) = gₜ(x) with t = argmin {t ∈ {1,2,…,T}}
  • Uniform blending:人人投票,票票等值(vote uniformly)
  • Linear blending:人人投票,票票不等值(vote non-uniformly)
  • 有條件地結合(combine conditionally)

讓我們一一介紹這些方法吧。

Uniform blending

目的:降低變異性,以獲得更穩定的表現

  • Uniform blending for classification:基本上就是投票,可以投一或多個類別。如果大家很不一點的話,多數可以改正少數。
  • Uniform blending for regression
Uniform blending for classification
Uniform blending for regression

Linear Blending

有線性加權

Linear Blending for classification
Linear blending for regression

Any Blending

不一定只有線性加權,任何模型都可以拿來做 blending

  • 優點:強而有力,且能夠得到 conditional blending 的效果
  • 缺點:有 overfitting 的可能性

再複習一次,blending 是在 gₜ 產生後,才會結合、做 aggregation。

現在,則讓我們來看另外一種方式,一邊產生 gₜ,一邊做 aggregation。

Bootstrap aggregation (BAGging)

在介紹 bootstrap aggregation,也就是俗稱的 bagging 之前,我們先來看何謂 bootstrap。

Bootstrapping 是從同一組樣本反覆抽樣、取後放回的過程,以估計抽樣分佈(sampling distribution)。

一般的抽樣分佈是從母體抽樣出不同組樣本,計算每組樣本的估計值,再會製成抽樣分佈。然而,在現實世界中,我們無法獲得母體本身,因此只能藉由 bootstrap 此方法,利用 bootstrap distribution 估算抽樣分佈。

而 bootstrap aggregation 的演算法是類似上述過程,利用變換原本的資料以製造不同組 gₜ,再利用 uniform combination 結合這些 gₜ。

Algorithm1. request size-N data Dₜ from bootstrapping
2. obtain gₜ by A(Dₜ). G = Uniform({gₜ})

Boosting

以上都沒有使用 boosting,意即沒有在 training 的過程中想要重新修改模型。而 boosting 是讓在產生每個 gₜ 時讓模型整體更完善,互相補短。

bagging 是不斷變換 data 以達到變異度,但模型架構本身不變。而 boosting 是在變換 data 時會凸顯原本做錯的 data,降低原本做對的。

至於要如何凸顯做錯的 data 呢?會使用 weighted base algorithm,利用 uₙ 紀錄在資料中佔的比例。若有資料犯錯時,會依照 uₙ 提高這些資料的比例,而 gₜ 負責降低 bootstrap-weighted error。

原本的 D = {(x₁,y₁),(x₂,y₂),(x₃,y₃),(x₄,y₄)}
經過 bootstrap ⇒ Dₜ = {(x₁,y₁),(x₁,y₁),(x₂,y₂),(x₄,y₄)}
u₁ = 2
u₂ = 1
u₃ = 0
u₄ = 1
weighed E on D

每次選 hypothesis 時,都要選越不同越好,如果 gₜ 在 uᵗ⁺¹ 上表現不好,gₜ 就不會選到任何跟 gₜ₊₁ 很相似的。

至於 boosting 要如何實際運用在模型中,例如常聽到的 adaptive boosting、gradient boosting 和 decision tree 的原理是什麼呢?讓我們下一篇再來介紹吧!

想要更深入了解的話,別忘了去最上面的目錄看其他章的課程筆記!

喜歡這篇文章或是對你有幫助的話,別忘了拍手給我鼓勵哦 👏🏻

參考資料

  1. 林軒田,機器學習基石與技法:https://www.youtube.com/c/hsuantien/playlists
  2. https://www.ycc.idv.tw/ml-course-techniques_4.html

--

--