1. 程式人生 > >機器學習 —— 整合學習

機器學習 —— 整合學習

整合學習是什麼?

  目前,有三種常見的整合學習框架:bagging,boosting和stacking。國內,南京大學的周志華教授對整合學習有很深入的研究,其在09年發表的一篇概述性論文《Ensemble Learning》對這三種整合學習框架有了明確的定義,概括如下:

bagging:

從訓練集從進行子抽樣組成每個基模型所需要的子訓練集,對所有基模型預測的結果進行綜合產生最終的預測結果:

boosting:

訓練過程為階梯狀,基模型按次序一一進行訓練(實現上可以做到並行),基模型的訓練集按照某種策略每次都進行一定的轉化。對所有基模型預測的結果進行線性綜合產生最終的預測結果:

將訓練好的所有基模型對訓練基進行預測,第j個基模型對第i個訓練樣本的預測值將作為新的訓練集中第i個樣本的第j個特徵值,最後基於新的訓練集進行訓練。同理,預測的過程也要先經過所有基模型的預測形成新的測試集,最後再對測試集進行預測:

詳解可參考:機器學習 —— stacking
這裡寫圖片描述
有了這些基本概念之後,直覺將告訴我們,由於不再是單一的模型進行預測,所以模型有了“集思廣益”的能力,也就不容易產生過擬合現象。

偏差和方差

在統計學中,一個模型好壞,是根據偏差和方差來衡量的,偏差和方差可以描述模型在訓練集上的準確度和防止過擬合的能力:

這裡寫圖片描述

偏差(Bias):
描述的是預測值(估計值)的期望E’與真實值Y之間的差距。偏差越大,越偏離真實資料。Bias是由於模型太簡單而帶來的估計不準確的部分。

這裡寫圖片描述

高偏差的情況:
這裡寫圖片描述
方差(Variance):
描述的是預測值P的變化範圍,離散程度,是預測值的方差,也就是離其期望值E的距離。方差越大,資料的分佈越分散。Variance是由於模型太複雜而帶來的更大的變化空間和不確定性。

這裡寫圖片描述

高方差的情況:
這裡寫圖片描述

模型的真實誤差是兩者之和
即Error = Bias + Variance。如下圖:

這裡寫圖片描述

在實際中,為了讓Error儘量小,我們在選擇模型的時候需要平衡Bias和Variance所佔的比例,也就是平衡over-fitting和under-fitting。

偏差和方差與模型複雜度的關係
這裡寫圖片描述
當模型複雜度上升的時候,偏差會逐漸變小,而方差會逐漸變大。

對於模型中的偏差和方差,有以下幾點總結:

  1. 如果是小訓練集,高偏差/低方差的分類器(例如,樸素貝葉斯NB)效果更好。
  2. 如果是大訓練集,低偏差/高方差的分類器(例如,KNN)效果更好。
  3. bagging和stacking中的基模型為強模型(偏差低方差高),boosting中的基模型為弱模型。
  4. 對於bagging來說,整體模型的偏差和基模型近似,隨著訓練的進行,整體模型的方差降低
  5. 對於boosting來說,整體模型的初始偏差較高,方差較低,隨著訓練的進行,整體模型的偏差降低(雖然也不幸地伴隨著方差增高),當訓練過度時,因方差增高,整體模型的準確度反而降低。
  6. 整體模型的偏差和方差與基模型的偏差和方差息息相關

為什麼要整合?

(1)模型選擇(Model Selection)
假設各弱分類器間具有一定差異性(如不同的演算法,或相同演算法不同引數配置),這會導致生成的分類決策邊界不同,也就是說它們在決策時會犯不同的錯誤。將它們結合後能得到更合理的邊界,減少整體錯誤,實現更好的分類效果。

這裡寫圖片描述

(2)資料集過小或過大(Too much or too little data)
資料集較大時,可以分為不同的子集,分別進行訓練,然後再合成分類器。
資料集過小時,可使用自舉技術(bootstrapping),從原樣本集有放回的抽取m個子集,訓練m個分類器,進行整合。

(3)分治(Divide and Conquer)
若決策邊界過於複雜,則線性模型不能很好地描述真實情況。因此先訓練多個線性分類器,再將它們整合。
這裡寫圖片描述
(4)資料融合(Data Fusion)
當有多個不同資料來源,且每個資料來源的特徵集抽取方法都不同時(異構的特徵集),需要分別訓練分類器然後再整合。
這裡寫圖片描述

參考連結: