機器學習技法07:Blending and Bagging

本文是機器學習基石系列文章第七篇。介紹了集成學習的基本算法——Blending 和 Bagging。



7 Blending and Bagging

Kernel Model 的作用是將多個特徵轉化爲 Kernel 表示,然後使用不同的機制求解對應的結果。上一節課通過將Kernel 延伸到Ridge Regression中,可以利用Represeter Theorem得到Kernel的形式,但是其結果不是稀疏解,導致訓練和預測需要花費更多的時間成本;爲了借鑑SVM得到稀疏解,使得權重向量可以被少數的 zz 表達出來,通過Regularized Tube Error和拉格朗日對偶,推到得到了Support Vector Regression。本節課程開始學習集成學習(Ensemble Learning)中的相關算法。本節課介紹 Blending 和 Bagging 算法,即將多種不同算法得到的最佳的假設結合起來,讓模型預測得更好,這樣的模型叫做融合模型(Aggregation Models)。


7.1 Motivation of Aggregation

先看一個例子,直觀地瞭解融合模型:
在這裏插入圖片描述
假設有T個朋友向你推薦要不要買股票,每個人的意見爲 gi,i=1,2,...,Tg_i,i=1,2,...,T ,那麼你應該如何選擇呢?有四種想法:

  • 選擇最信得過的朋友,即選擇炒股炒得最好的那位朋友的意見;
  • 綜合T位朋友的意見選擇是否買股票,每個人的意見權重相同;
  • 更進一步,給炒股炒得好的朋友的意見賦予更多的權重,再看投票結果;
  • 再進一步,根據不同的條件賦予不同的權重,比如有些人科技股票,有些人適合傳統產業股票。

有了以上直觀地理解,接下來看一下一般的數學表示,記假設函數爲 G(x)G(x) ,對應四種不同的假設有如下數學表示:
在這裏插入圖片描述

  • 從T位朋友的意見中選擇最佳的假設函數 gt(x)g_{t_{*}}(x) ,最佳的意思是說在一個比較小的驗證集的誤差 EvalE_{val} 最小;
  • 根據相等權重的投票選擇,推薦買的記爲 1,不推薦的記爲-1,然後取 sign 函數;
  • 更進一步,賦予每個人的投票不同的權重 αt\alpha_t,表示爲上式,可以看出前兩種假設是該假設的特例;
  • 再進一步,根據不同的條件賦予不同的權重,添加 qt(x)q_t(x) 表示條件判斷。

接下來看第一種情形:
在這裏插入圖片描述
如果不依據驗證集上的的 EvalE_{val} 做選擇,而是使用訓練集上的 EinE_{in} 做選擇可不可以?可以,但是算法複雜度會上升。即如果要求訓練誤差最小的話,會導致 VC Dimention dVCd_{VC} 很大。

如果要從 gtg^-_t 中選擇最佳的假設函數 gtg_{t_{*}} ,則需要 gtg^-_t 中包含有比較好的假設函數矩 gg 。即這種情形的假設是已經有了一堆不錯的模型(假設函數)或者說至少有一個比較好的模型,從中選擇最好的模型(假設函數)。

對選擇標準來說,選擇一個最佳的假設函數即可。但是,對於融合模型來說,其目的是選擇一堆可能看起來不是最好但還可以的假設函數,然後將其融合起來,使假設函數變得更好。這是未來的五節課程探討的問題。

那麼,爲什麼融合模型的表現更好呢?看一個二分類的例子:
在這裏插入圖片描述

  • 第一種情形,只使用水平線(圖中灰色的線,有一條)和垂直線(有兩條)做超平面,融合模型要做的是將這些水平線和垂直線的某些線段做組合,然後“融合”出分隔超平面,將輸入空間的樣本點二分;可以看出,雖然每條灰色的線分類效果並不是非常理想,但是其融合後的結果是一個比較複雜的分類邊界,可以很好地將輸入空間的樣本點分開,這就是融合模型的思想所在,也就是說,融合模型結合了不同模型的優點,拓展了模型的能力;直觀地說就是一根筷子跟一把筷子的區別。
  • 第二種情形,使用感知器做分類,圖中有無數條分類超平面(灰色的線),即假設空間中的假設函數,那麼應該如何選擇呢?對於PLA來說,可能會選擇任意一條;對於SVM,會選擇邊界最“胖”的那一條;現在想,將這些超平面做投票,然後將投票的結果作爲最終選擇的超平面,如圖中黑色的線所示,可以看出,選出了一條比較“中庸”的超平面,這條超平面就跟SVM中邊界最胖的超平面類似,相當於說是有正則化約束的情況下選擇的 large margin 的超平面。

之前學習的模型中,特徵轉換和正則化是對立的,將其分別比作油門和剎車。如果進行特徵轉換,正則化效果就會很差,反之亦然。而通過以上可以看出,融合模型實際上相當於既做了特徵轉換,又加了正則化約束,相當於油門和剎車都控制的很好,使得模型的表徵特徵的能力更強,同時還能降低過擬合風險,提高泛化能力。這就是設計融合模型的動機。


習題1:
在這裏插入圖片描述


7.2 Uniform Blending

現在開始看如何將不同的假設函數融合起來,首先看 Blending。直觀地解釋就像榨果汁,將不同的水果蔬菜混合,榨一杯混合果汁,融合多種營養成分。

首先看Uinform Blending,即上一小節提到的,一人一票,每票同權。如果要做二元分類,其表達式如下:
在這裏插入圖片描述
仍然拿買不買股票的例子說明,+1 表示推薦買,-1表示不推薦買,然後根據多人的意見決定買不買,上式也很容易理解,如果推薦買的人多,那麼括號內一定是整的,反之是負的,再取sign函數就變爲 +1和-1兩種結果。這就是假設函數的 G(x)G(x) 的含義。

上圖中的三條灰色的垂直或者水平的線(三個不同的假設函數 gg)可以將輸入空間分割爲六個小區域,然後使用三個假設函數對每個小區域進行投票,確定正負類。投票的結果實際上是少數服從多數。如果是多分類的情況,此時就不是簡單的加加減減,而是看每個類別得多少票,然後選擇最多票的類別。

以上是分類的情況,如果是迴歸問題應該如何計算呢?
在這裏插入圖片描述
可以看出,相比分類任務,回顧問題沒有使用sign這樣的函數,將輸出離散化,而是對投票結果求平均,通過平均可以削弱某些不好的假設函數 gg 的影響,可以得到更好的結果。從理論上說,平均值計算可能是更穩定,更準確的一種估計方式。

如果要使得融合不同假設函數 gg 的融合模型可以work,有一個重要的前提是假設函數 gg 是不同的,可以想象上圖中的灰色的線(對應假設函數 gg ),如果 gg 都相同,也就是灰色的線都重合了,所以無論有多少水平或者豎直的直線,也只能將輸入空間的樣本點最多分爲四個小區域。這時候,分類邊界很有限,也就是說模型的容量太低,提取特徵的能力很差,很難擬合數據集,找出一條好的超平面;相反,如果 gg 都是不同的,那麼可以將輸入空間劃分爲很多的小區域,就可以擬合出更復雜的邊界。

融合模型最簡單的情形是一人一票,每票同權。根據少數服從多數的原則,對不同的假設函數 gg 在劃分成小區域的輸入空間中,劃分分隔超平面。

下面進一步分析迴歸問題中,Blending爲什麼表現比較好?
在這裏插入圖片描述
gt(x)f(x)g_t(x)-f(x) 表示假設函數的預測輸出 gt(x)g_t(x) 與期望輸出 f(x)f(x) 的差值。上式中的平均操作 avgavg 其實就相當於 G(x)G(x) 公式中的先求和再取平均。 然後將上式中的平方和展開,然後湊平方,進一步推導得到結果。其中, G(x)G(x) 是一個整體,可以看做一項,所以對其先求和再求平均,結果還是一樣的, G(x)2G(x)^2 同理,即 avg(G(x)2)=G(x)2avg(G(x)^2) = G(x)^2 。又因爲 G(x)=avg gtG(x) = avg \ g_t 所以可以寫爲上式中的導數第二步的形式。

以上是對單一的樣本 xx 操作,如果對整個輸入空間內的所有樣本操作,則有:
在這裏插入圖片描述

由上式可知,融合模型的誤差 Eout(G)E_{out}(G) 要比所有單個假設函數的平均誤差 avg(Eout(gt))avg(E_{out}(g_t)) 要小,說明融合模型的性能更好。

下面考慮一些特殊的 gtg_t
在這裏插入圖片描述
gˉ\bar{g} 記爲共識(consensus),Eout(gˉ)E_{out}(\bar{g}) 記爲共識的表現,通常又稱爲偏差(bias),表示這些共識與目標函數 ff 相差多少。avg(ε(gtgˉ)2)avg(\varepsilon(g_t-\bar{g})^2) 記爲對共識的期望偏差,通常又稱爲方差(variance)。Uniform Blending 算法的目的就是減少方差以實現更穩定的性能。


習題2:
在這裏插入圖片描述


7.3 Linear and Any Blending

上一小節講了 Uniform Blending,是一人一票,每票同權的情況。本小節介紹 Linear Blending,添加投票權重 αt\alpha_t ,線性如何理解呢,就是通過權重參數 α\alpha 對不同的假設函數 gg 做線性組合。那麼 α\alpha 應該如何計算,好的 α\alpha 評判標準是什麼呢?一個簡單的想法是好的 α\alpha 是使得 EinE_{in} 最低的那個。應該如何求解呢?可以寫成關於 α\alpha 的目標函數,然後求解最優化,使其對應的 EinE_{in} 最低。要求 α0\alpha \ge 0
在這裏插入圖片描述
對於使用 Linear Blending 處理迴歸問題的情況,其目標函數 EinE_{in} 如下所示:
在這裏插入圖片描述
其中,yny_n 表示期望輸出,gt(xn)g_t(x_n) 表示假設函數 gg 的預測輸出,可以看出Linear Blending處理迴歸問題的目標函數與帶特徵轉換(transformation)的線性迴歸的目標函數是很像的,不同點是 αt0\alpha_t\ge 0,而 wiw_i 的大小沒有限制。求解 α\alpha 的方法使用兩階段的方法,類似之前介紹的 probabilistic SVM的求解思路。先求出 gtxng_t{x_n},再使用線性迴歸求出 α\alpha。其有三部分組成,與之前相比,多了限制條件(constrains)α0\alpha \ge 0。有沒有辦法將這個條件去掉,做如下轉換:
在這裏插入圖片描述
在分類問題中,如果 αt<0\alpha_t < 0 ,則 αt>0\alpha_t >0, 如果樣本的正類的概率是 99%-99 \% ,也就是說負類的概率是 +99%+99 \% ,也就是說效果是相同的。所以可以將這個條件去掉,這樣就得到了 Linear Blending 的一般表達式。
在這裏插入圖片描述
Linear Blending中,一般來說,不同的假設函數 gg 是通過不同的模型最小化目標函數,即最小化訓練集上的誤差函數 EinE_{in} 得來的,然後從中選擇最優的 gg

那麼如果還使用訓練集上的誤差 EinE_{in} 來從不同的假設函數中 gg 選擇最優的假設函數的話,這相當於,既使用訓練集來訓練不同的模型得到最佳的假設函數 gg,又使用訓練集從這些不同的假設函數 gg ,通過最小化 EinE_{in} 選出其中最佳的假設函數 gg 。這使得算法複雜度很高,計算成本很高。

所以一般做法是,讓不同的模型在驗證集上訓練,即最小化驗證集上的誤差 EvalE_{val},找出這些模型最佳的假設函數 g1,g2,...,gTg^-_1,g^-_2,...,g^-_T ,然後,將這些假設函數在訓練集上訓練,找出最佳的假設函數 gtg_t。然後求解 α\alpha

求解一系列假設函數 gg 時,不要用訓練集上的誤差 EinE_{in} 求解,因爲複雜度高,計算消耗高,容易造成過擬合。應該選擇一個驗證集上的誤差 EvalE_{val} 最小的假設函數 gg^-。在訓練集上通過模型選擇找出最佳的 gtg_t
在這裏插入圖片描述
以上是Linear Blending,還有Any Blending。在 Linear Blending 中,融合模型的假設函數 G(t)G(t) 是各個模型假設函數 g(t)g(t) 的線性組合;在 Any Blending 中,G(t)G(t) 可以是 g(t)g(t) 的任意形式,比如非線性,也稱它爲Stacking。

Any Blending 的優點是模型複雜度比較高,可以獲得更好的模型;缺點是容易導致過擬合。所以通常結合正則化的方法,提高模型的泛化能力。


習題3:
在這裏插入圖片描述


7.4 Bagging (Bootstrap Aggregation)

在這裏插入圖片描述
前三小節介紹了Blending算法,已經有了許多個模型訓練出來的假設函數 gg,如何將它們組合成融合模型,從最簡單的 uniform Blending開始,根據投票原則,即一人一票,每票同權;對於分類問題,先求和,再取sign函數;對於迴歸問題,使用對各個假設函數的預測結果取加權平均。然後 linear Blending,將各種假設函數根據不同的權重進行線性組合。最後是有條件的Blending,即stacking,根據不同的條件決定加權的多少。
在這裏插入圖片描述

那麼應該如何得到不同的 gtg_t 呢?

  • 從不同的假設空間 HH 中選出不同的假設函數 gTg_T ,也就是使用不同的模型產生不同的假設函數;
  • 設置不同的參數,比如學習率 ;
  • 應用算法的隨機性,設置不同的隨機種子產生隨機的PLA算法;
  • 應用樣本的隨機性,比如設置交叉驗證來獲取假設函數 gg^-

下面考慮如何從已有的數據集中訓練出多個不同的假設函數 gtg_t
在這裏插入圖片描述

回顧第二小節推導的理論,Bias-Variance,也就是說演算法 AA 的平均表現可以拆分成 Bias 和 Variance,這樣拆分有什麼優勢呢?Bias表示所有假設函數 gtg_t 的共識(consensus),Variance是不同假設函數 gtg_t 之間的差距。 gtg_t 是通過不同的模型在不同的數據集上計算得到的,但是隻有一個數據集的情況下,應該如何構造不同的數據集,從而得到不同的 gtg_t 呢?其中 gˉ\bar{g} 是在假設函數個數 T 趨於無窮的條件下,對不同的假設函數 gtg_t 取平均的假設函數。可以將其做近似,需滿足如下兩個條件:

  • 有限的 T (足夠多);
  • 從已知數據集 DD 中構造出 t 個數據集 DtD_t ,然後通過演算法從這t個數據集中求出t個假設函數 gtg_t

那麼應該如何構造 DtD_t 呢?
在這裏插入圖片描述

統計學上有種方法叫做 bootstrapping,直接翻譯爲拔靴法。它要做的事情是從已知數據集中模擬不一樣的數據,其實就是有放回取樣。利用 bootstrapping 對假設函數進行融合的操作就稱爲 Bagging,翻譯爲裝袋算法。

下面演示了一個 Bagging Pocket 的例子。
在這裏插入圖片描述
其中灰色線表示 Bagging Pocket 中包含的假設函數算出的分隔超平面,然後使用 bootstrapping 計算得到黑色的線,即最終的分隔超平面。原來的假設函數做出的超平面都是線性的,現在通過Bagging Pocket 融合這些假設函數,得到非線性的分類邊界。只有當演算法對數據分佈比較敏感時,Bagging Pocket 纔有比較好的表現。


習題4:
在這裏插入圖片描述


Summary

本節課介紹了Blending 和 Bagging,都屬於集成學習模型。通過將不同演算法得到的假設函數 gg 融合(aggregation)得到最終的假設函數 G(x)G(x) ,介紹了三種方法來融合不同的假設函數 gg ,以使得融合後的假設函數有更好的性能。先從Linear的情況說起,講解了分類和迴歸的目標函數;如果要改爲non-linear,其實也很簡單,只需要做一個兩階段的變換即可。最後介紹瞭如何通過bootstrapping來得到算法中不同的假設函數 gg ,然後再把它們融合。

下一節課開始介紹能不能使用bagging得到更不一樣的假設函數,從而得到更不同的最後融合的假設函數 G(x)G(x)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章