天天看點

Ensemble 協同工作

Ensemble的架構

Ensemble 協同工作

Ensemble的方法就是一種團隊合作,好幾個模型一起上的方法。

  • 第一步:通常情況是有很多的classifier,想把他們集合在一起發揮更強大的功能,這些classifier一般是diverse的,這些classifier有不同的屬性和不同的作用。
  • 第二步:就是要把classifier用比較好的方法集合在一起,就好像打王的時候坦和DD都站不同的位置,通常用ensemble可以讓我們的表現提升一個檔次,一般在kaggle之類的比賽中,ensemble用的最多的也是效果最好的,一般前幾名都需要用ensemble。

Bagging

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

 上圖表示了用自己采樣的資料進行Bagging的過程。在原來的N筆訓練資料中進行采樣,過程就是每次從N筆訓練資料中取N‘(通常N=N’)建立很多個dataset,

 這個過程抽取到的可能會有重複的資料,但是每次抽取的是随機形成的dataset。每個dataset都有N'筆data,但是每個dataset的資料都是不一樣的,接下來就是用一個複雜的模型對四個dataset都進行學習得到四個function,

 接下來在testing的時候,就把這testing data放到這四個function裡面,再把得出來的結果做平均(回歸)或者投票(分類),通常來說表現(variance比較小)都比之前的好,這樣就不容易産生過拟合。

 做Bagging的情況:模型比較複雜,容易産生過拟合。(容易産生過拟合的模型:決策樹)目的:降低方差

Ensemble 協同工作

決策樹的實際例子:初音問題

Ensemble 協同工作
Ensemble 協同工作

上圖可以看到,深度是5的時候效果并不好,圖中白色的就是class1,黑色的是class2.當深度是10的時候有一點初音的樣子,當深度是15的時候,基本初音的輪廓就出來了,但是一些細節還是很奇怪(比如一些凸起來的邊角)

當深度是20的時候,就可以完美的把class1和class2的位置差別開來,就可以完美地把初音的樣子勾勒出來了。對于決策樹,理想的狀況下可以達到錯誤是0的時候,最極端的就是每一筆data point就是很深的樹的一個節點,這樣正确率就可以達到100%(樹夠深,決策樹可以做出任何的function)但是決策樹很容易過拟合,如果隻用決策樹一般很難達到好的結果

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

 強調一點是做Bagging更不會使模型能fit data,所有用深度為5的時候還是不能fit出一個function,所有就是5顆樹的一個平均,相當于得到一個比較平滑的樹。當深度是10的時候,大緻的形狀能看出來了,當15的時候效果就還不錯,但是細節沒那麼好,當20 的時候就可以完美的把初音分出來。

Ensemble 協同工作

 Boosting是用在很弱的模型上的,當我們有很弱的模型的時候,不能fit我們的data的時候,我們就可以用Boosting的方法

Boosting的訓練是有順序的(sequentially),Bagging是沒有順序的(可以同時train)

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

權重的更改

Ensemble 協同工作

 下面數學推導d1

Ensemble 協同工作
Ensemble 協同工作

 那麼這個算法的實作過程

Ensemble 協同工作
Ensemble 協同工作

錯誤率低的classifier,arfa(t)大,最後在最終結果的投票上會有比較大的權重

下面舉個例子

Ensemble 協同工作

讓分類對的權重小些,分類錯的權重大些

同理t=2

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

 結果整合:這個三個分類器把平面分割成六個部分,左上角三個分類器都是藍色的,那就肯定就藍色的。上面中間部分第一個分類器是紅色的,第二個第三個是藍色的,但是後面兩個加起來的權重比第一個大,

 是以最終中間那塊是藍色的,對于右邊部分,第一個第二個分類器合起來的權重比第三個藍色的權重大,是以就是紅色的。下面部分也是按照同樣道理,分别得到藍色,紅色和紅色。

 是以這三個弱分類器其實本事都會犯錯,但是我們把這三個整合起來就能達到100%的正确率了。

AdaBoost證明推導

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

證明上界函數會越來越小

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

AdaBoost的神秘現象

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

 本來深度是5的決策樹是不能做好初音的分類(隻能通過增加深度來進行改進),但是現在有了AdaBoost的決策樹是互補的,是以用AdaBoost就可以很好的進行分類。

 T代表AdaBoost運作次數,圖中可知用AdaBoost,100棵樹就可以很好的對初音進行分類。

Gradient Boosting

Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作
Ensemble 協同工作

Stacking

Ensemble 協同工作
Ensemble 協同工作

 但是有個問題就是并不是所有系統都是好的,有些系統會比較差(如 小毛的系統不好),但是如果采用之前的設定低權重的方法又會傷害小毛的自尊心,

 這樣我們就提出一種新的方法: 把得到的y當做新的特征輸入到一個最終的分類器中,然後再決定最終的結果。 對于這個最終的分類器,應當采用比較簡單的函數(比如說邏輯回歸),

 不需要再采用很複雜的函數,因為輸入的y已經訓練過了。 在做stacking的時候我們需要把訓練資料集再分成兩部分,一部分拿來學習最開始的那些模型,另外一部分的訓練資料集拿來學習最終的分類器。