整合學習原理

2022-01-22 13:06:03 字數 3760 閱讀 9307

看到乙個大牛的部落格,非常好:  整合學習原理小結

這個人的部落格裡還有其他演算法總結,跟著他一塊學習。

算是rf gbdt前傳 

整合學習 (ensemble learning) 可以說是現在非常火爆的機器學習方法了。它本身不是乙個單獨的機器學習演算法,而是通過構建並結合多個機器學習器來完成學習任務。也就是我們常說的 「博採眾長」。整合學習可以用於分類問題整合,回歸問題整合,特徵選取整合,異常點檢測整合等等,可以說所有的機器學習領域都可以看到整合學習的身影。本文就對整合學習的原理做乙個總結。

從下圖,我們可以對整合學習的思想做乙個概括。對於訓練集資料,我們通過訓練若干個個體學習器,通過一定的結合策略,就可以最終形成乙個強學習器,以達到博採眾長的目的。

也就是說,整合學習有兩個主要的問題需要解決,第一是如何得到若干個個體學習器,第二是如何選擇一種結合策略,將這些個體學習器集合成乙個強學習器。

上一節我們講到,整合學習的第乙個問題就是如何得到若干個個體學習器。這裡我們有兩種選擇。

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

目前來說,同質個體學習器的應用是最廣泛的,一般我們常說的整合學習的方法都是指的同質個體學習器。而同質個體學習器使用最多的模型是 cart 決策樹和神經網路。同質個體學習器按照個體學習器之間是否存在依賴關係可以分為兩類,第乙個是個體學習器之間存在強依賴關係,一系列個體學習器基本都需要序列生成,代表演算法是 boosting 系列演算法,第二個是個體學習器之間不存在強依賴關係,一系列個體學習器可以並行生成,代表演算法是 bagging 和隨機森林(random forest)系列演算法。下面就分別對這兩類演算法做乙個概括總結。

boosting 的演算法原理我們可以用一張圖做乙個概括如下:

從圖中可以看出,boosting 演算法的工作機制是首先從訓練集用初始權重訓練出乙個弱學習器 1,根據弱學習的學習誤差率表現來更新訓練樣本的權重,使得之前弱學習器 1 學習誤差率高的訓練樣本點的權重變高,使得這些誤差率高的點在後面的弱學習器 2 中得到更多的重視。然後基於調整權重後的訓練集來訓練弱學習器 2.,如此重複進行,直到弱學習器數達到事先指定的數目 t,最終將這 t 個弱學習器通過集合策略進行整合,得到最終的強學習器。

boosting 系列演算法裡最著名演算法主要有 adaboost 演算法和提公升樹 (boosting tree) 系列演算法。提公升樹系列演算法裡面應用最廣泛的是梯度提公升樹 (gradient boosting tree)。adaboost 和提公升樹演算法的原理在後面的文章中會專門來講。

bagging 的演算法原理和 boosting 不同,它的弱學習器之間沒有依賴關係,可以並行生成,我們可以用一張圖做乙個概括如下:

從上圖可以看出,bagging 的個體弱學習器的訓練集是通過隨機取樣得到的。通過 t 次的隨機取樣,我們就可以得到 t 個取樣集,對於這 t 個取樣集,我們可以分別獨立的訓練出 t 個弱學習器,再對這 t 個弱學習器通過集合策略來得到最終的強學習器。

對於這裡的隨機取樣有必要做進一步的介紹,這裡一般採用的是自助取樣法(bootstap sampling), 即對於 m 個樣本的原始訓練集,我們每次先隨機採集乙個樣本放入取樣集,接著把該樣本放回,也就是說下次取樣時該樣本仍有可能被採集到,這樣採集 m 次,最終可以得到 m 個樣本的取樣集,由於是隨機取樣,這樣每次的取樣集是和原始訓練集不同的,和其他取樣集也是不同的,這樣得到多個不同的弱學習器。

隨機森林是 bagging 的乙個特化高階版,所謂的特化是因為隨機森林的弱學習器都是決策樹。所謂的高階是隨機森林在 bagging 的樣本隨機取樣基礎上,又加上了特徵的隨機選擇,其基本思想沒有脫離 bagging 的範疇。bagging 和隨機森林演算法的原理在後面的文章中會專門來講。

在上面幾節裡面我們主要關注於學習器,提到了學習器的結合策略但沒有細講,本節就對整合學習之結合策略做乙個總結。我們假定我得到的 t 個弱學習器是 

'>

對於數值類的回歸**問題,通常使用的結合策略是平均法,也就是說,對於若干和弱學習器的輸出進行平均得到最終的**輸出。

最簡單的平均是算術平均,也就是說最終**是h(

如果每個個體學習器有乙個權重 w

'>w

w,則最終**是h(

其中 w

i'>wi

是個體學習器 h

i'>h

i 的權重,通常有wi

對於分類問題的**,我們通常使用的是投票法。假設我們的**類別是 

'>

, 對於任意乙個**樣本 x,我們的 t 個弱學習器的**結果分別是 (h1

(x),

h2(x

)...

ht(x

))'>(h1(x),h2(x)...ht(x))

(h1(x),h2(x)...ht(x))。

最簡單的投票法是相對多數投票法,也就是我們常說的少數服從多數,也就是 t 個弱學習器的對樣本 x 的**結果中,數量最多的類別 c

i'>ci

ci 為最終的分類類別。如果不止乙個類別獲得最高票,則隨機選擇乙個做最終類別。

稍微複雜的投票法是絕對多數投票法,也就是我們常說的要票過半數。在相對多數投票法的基礎上,不光要求獲得最高票,還要求票過半數。否則會拒絕**。

更加複雜的是加權投票法,和加權平均法一樣,每個弱學習器的分類票數要乘以乙個權重,最終將各個類別的加權票數求和,最大的值對應的類別為最終類別。

上兩節的方法都是對弱學習器的結果做平均或者投票,相對比較簡單,但是可能學習誤差較大,於是就有了學習法這種方法,對於學習法,代表方法是 stacking,當使用 stacking 的結合策略時, 我們不是對弱學習器的結果做簡單的邏輯處理,而是再加上一層學習器,也就是說,我們將訓練集弱學習器的學習結果作為輸入,將訓練集的輸出作為輸出,重新訓練乙個學習器來得到最終結果。

在這種情況下,我們將弱學習器稱為初級學習器,將用於結合的學習器稱為次級學習器。對於測試集,我們首先用初級學習器**一次,得到次級學習器的輸入樣本,再用次級學習器**一次,得到最終的**結果。

以上就是整合學習原理的乙個總結,後面會分別對 adaboost, 提公升樹,bagging 和隨機森林的演算法原理做乙個總結,敬請期待。

整合學習原理 Adaboost

整合學習通過從大量的特徵中挑出最優的特徵,並將其轉化為對應的弱分類器進行分類使用,從而達到對目標進行分類的目的。它是一種迭代演算法,其核心思想是針對同乙個訓練集訓練不同的分類器 弱分類器 然後把這些若分類器集合起來,構成乙個更強的最終分類器 強分類器 其演算法本身是通過改變資料分布來實現的,它根據每...

整合學習和Boosting原理總結

接自 bagging與隨機森林。整合學習 ensemble learing 通過構建並結合多個學習器來完成學習任務,有時也被稱為多酚類器系統 multi classifier system 基於委員會的學習 sommittee baseslearing 等。以下整合學習介紹來自西瓜書 個人感覺頗有幾...

Spring web整合原理

2 配置web.xml contextconfiglocation classpath spring context xml org.springframework.web.context.contextloaderlistener 這個類可以直接獲取配置在web.xml中的所有物件。1 在web....