機器學習算法原理系列篇14:集成算法,隨機森林和梯度增強機

 

 

  1. 集成算法 (Ensemble methods)

 

集成類算法是一個較大的概念,其主要原理在於組合一系列較弱的分類算法形成一個新的算法。根據PAC理論框架,新算法的效果一定會得到提升。比如對一個分類問題,我們首先採用不同的簡單算法進行分類,比如之前介紹的邏輯迴歸和決策樹等算法。然後所有簡單的算法的分類結果再進行投票,從而決定最終的分類結果。

 

集成算法常用的策略有兩類: Bagging和Boosting。

Bagging的運用過程描述如下:

  1. 假設原始數據有n個數據點,我們首先從原始訓練數據抽取多個訓練集,每個訓練集的樣本大小同樣爲n。每一次從原始數據集中使用Bootstrapping(即有放回的抽樣)得到n個數據點。一共進行k輪抽取,從而得到k個不完全相同的測試樣本集。需要注意的是正是因爲使用了有放回的抽樣,每一個bootstrap 訓練集裏面有可能有數據點相同,但同時每一個bootstrap 訓練集裏,平均而言,會有36.8%的原始數據缺失。正是這個特點保證了每一個得到bootstrap訓練集,雖然樣本大小和原始數據相同,但他們和原始樣本平均而言有36.8%的不同,並且彼此之間也不會完全相同。36.8%的得出是基於一個簡單的概率計算。對於原始數據中的任意一個數據點,每一次不被抽中的概率爲

                                                              

連續n次抽取,同一個數據點都被抽中的概率則爲:

                                                               

 

當n足夠大,這個概率趨向於0.368。

 

  1. 選定一個基本的算法,針對每一個bootstrap訓練集得到一個模型結果。k個訓練集會得出k個模型結果。如果是分類模型,模型結果爲預測的類別;如果是迴歸模型,模型結果爲預測的連續數值。
  2. 對k個模型結果採用投票的方式,得票最多的結果爲最終的結果。對於迴歸模型則計算所有模型的平均結果作爲最終結果。

 

與Bagging方法的並行化思想不同, Boosting是序列化的方法。 每一個新的模型試圖去糾正之前模型的預測誤差。Boosting方法的運用過程如下:

  1. 選定一個訓練數據集,所有相關模型都使用相同的數據集;數據集中每一個數據點給與相同的權重;選定一個基礎模型算法。
  2. 用基礎模型第一次預測訓練數據。
  3. 根據第一次的預測誤差,數據集中的每一個數據點被給予不同的權重。數據點誤差越大權重越高。
  4. 以此類推,模型不斷訓練調整過權重的數據集,每一次的新模型都對之前模型誤判的數據給予更多的重視。
  5. 最終的模型結果是所有模型的加權結果,因此效果更加理想。

 

Bagging方法裏面具有代表意義的是隨機森林算法,而Boosting方法裏面具有代表意義的是梯度增強機(Gradient Boosting Machine)。下面兩節我們主要介紹這兩種算法。

 

2. 隨機森林

 

隨機森林是一種Bagging算法,其中應用的基礎模型是決策樹。單獨使用決策樹算法容易造成過擬合,因而隨機森林可以有效的解決這個問題,從而極大的提高模型效果。結合上節的Bagging過程,隨機森林模型中的每一棵樹的建立有下面幾步組成:

  1. 從訓練數據中bootstrap一份隨機樣本,隨機樣本大小和訓練數據大小一致。
  2. 如果數據有M個輸入變量,在建立決策樹的每一個節點,隨機挑選m個變量(m<<M),從這m個變量中去選取最佳的變量作爲該節點判斷依據。其中m的具體大小可以由驗證數據來決定最佳值,最佳的範圍也比較廣。通常情況下,對於分類問題,m取M的平方根;對於迴歸問題,m取M的1/3。

 

隨機森林模型效果的提升主要依賴於下面兩點:

  1. 隨機森林中樹與樹之間的相關性。相關性越小,總的效果越好。Bootstrapping方法和m個變量的選取都是在減小相關性。
  2. 隨機森林中每一個樹各自的預測能力。單個決策樹的預測能力越好,模型總的效果越好。

當然上面兩點是互相依賴的,比如減小m的大小有助於降低樹之間相關性,但是會降低單棵樹的預測能力。增加單棵樹的深度會增加預測能力,但又會增加樹與樹之間相關性。因此實踐中如何選取最佳的超參數,需要用交叉驗證等技術來確定。另一方面,隨機森林不容易過擬合,因此在確定樹的具體數量時候可以儘可能的大。

 

隨機森林算法的交叉驗證其實可以用自身的out-of-bag(oob) 誤差估計來代替。因爲在每一棵樹的訓練過程中,有大概36.8%的數據不會被挑選到,因此對於任何一個數據點而言,在大概36.8%的決策樹中不會用於訓練。或者說,對於任意一個數據點我們可以沒有偏差的獲得該數據在36.8%的數據中的預測結果。最終,這些無偏差的預測結果可以同樣根據每一棵樹的結果,採用投票方式來獲得最終的預測結果。

 

 

3. 梯度增強機

 

Boosting方法最早的實現其實是Adaptive Boosting 或者AdaBoost,梯度增強機是AdaBoost在統計框架下的一個延申。AdBoost和梯度增強機使用的基礎模型都是決策樹。並且梯度增強機中的決策樹只需要是迴歸樹,即對連續數值的預測。這和問題是否是分類問題還是迴歸問題沒有關係,這是由梯度增強機的性質決定的。

 

通常我們討論的梯度下降通常是指在參數空間尋找最佳參數從而使得模型的損失函數降低。在梯度增強機的運用中,梯度下降則是在損失方程空間中尋找最佳方向,比如對於迴歸問題,優化過程會使得當前所有迭代模型的預測結果和目標變量的殘差儘量變得最小。

 

在梯度增強機實現過程中,假設經過m次迭代以後的預測函數爲Fm(x), 而相應的損失函數爲L(y,Fm(x)) 。爲了達到使損失函數減小最快的目的,那麼應該沿着損失函數的梯度下降的方向構造第m+1次迭代子模型函數。此時的梯度下降方向爲:

                                                            

如果損失函數採用 ,即平方差的形式

                                                                     

那麼

                                                                  

 

我們用決策樹構建第 m+1次迭代,作爲待預測的目標變量(在L2損失函數的情況下,新的目標變量即爲最近一次預測函數和原始目標變量的殘差)。獲得新的決策樹模型以後的所有數據的預測值假設爲h(x)。那麼經過第m+1迭代後,總的預測函數應爲:

                                                             

 

這裏爲每一次迭代的步長,可以通過最小二乘法找到每一次迭代的最佳步長,即下式的最優解:

爲了防止過擬合,可以讓步長乘以一個學習速率λ,取值在0到1之間,從而起到降低收斂速率,防止過擬合的現象:

 

上節中的隨機森林算法Bagging過程是一個降低方差的過程,但是梯度增強機算法則是對減小模型的方差和偏差均有幫助,因此效果通常更加明顯。但是另一方面,和隨機森林不會過擬合的特性相比,梯度增強則容易造成過擬合。因此實踐中一定要通過交叉驗證等手段加以檢查和預防。

 

更多有趣和專業的人工智能相關文章,微信搜索  : robot-learner , 或掃碼

 

 

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