图解集成学习中的梯度提升思想
摘要:?本文講述集成學習中的梯度提升方法的思想,以簡單算術及圖片的形式展示整個過程,一看就懂!
簡介
? ? ? ?機器學習(ML)中的一個關鍵步驟是選擇適合數據的最佳算法,根據數據中的一些統計數據和可視化信息,機器學習工程師將選擇最佳算法。假設數據如下圖所示,現在將其應用于回歸示例:
? ? ? ?對數據進行可視化,如下圖示所示,似乎線性回歸模型對其比較合適:
? ? ? ?將根據線性等式制定僅具有一個輸入x和一個輸出y的回歸模型:
?
y=ax+by=ax+b
其中a和b是上述等式的兩個參數。
? ? ? ?由于我們不知道適合數據的最佳參數,因此可以從初始化取值開始。可以將a設置為1.0,將b設置為0.0,并可視化等式,如下圖所示:
? ? ? ?從圖中可以看到,似乎該模型不能基于參數初始化取值來擬合數據。
? ? ? ?很明顯,不可能第一次試驗初始化就能取得很好的結果。但問題是如何在這種情況下提高性能?換句話說,如何最大化分類準確度或最小化回歸誤差?下面有不同的方法。其中一種簡單的方法就是嘗試更改先前選擇的參數。經過多次試驗,模型將知道最佳參數是a = 2和b = 1,該模型適合這種情況下的數據,如下圖所示,可以看見擬合得非常好:
? ? ? ?但是在某些情況下,更改模型參數并不會使得模型很好地擬合數據,仍然會有一些錯誤的預測。假設數據有一個新點(x = 2, y = 2)。從下圖可以看出,不可能找到使模型完全適合每個數據點的參數,不適用于線性擬合。
? ? ? ?有人可能會說,該模型能夠擬合四個點而缺少一個點,這是可以接受的。但是,如果有更多的點,如下圖所示呢?在這種情況下,該模型將做出更多的錯誤預測。沒有一條直線可以擬合整個數據。該模型只對線上點的預測很強,但對其他點則較弱。
集成學習|Ensemble Learning
? ? ? ?由于單個回歸模型不適合整個數據,因此另一種解決方案是使用多個回歸模型。每個回歸模型都能夠強有力地適應部分數據,將所有模型組合起來將減少整個數據的總誤差,并產生一個通用的強大模型。在問題中使用多個模型的這種方法稱為集合學習。使用多個模型的重要性如下圖所示。圖中顯示了在預測樣本結果時的誤差很大。從圖b中可以看到,當存在多個模型(例如,三個模型)時,其結果的平均值將能夠比以前做出更準確的預測。
? ? ? ?當應用于圖7中的先前問題時,擬合數據的4個回歸模型的集合在圖9中已經表示出:
? ? ? ?這就帶了了另外的一個問題,如果有多個模型可以擬合數據,那么如何獲得單個數據的預測?有兩種方法可以組合多個回歸模型來返回單個結果。它們是bagging和boosting(本文重點內容)。
? ? ? ?在bagging中,每個模型將返回其結果,并對所有模型的輸出結果進行綜合,進而返回最終結果。一種綜合方法是將所有模型的輸出結果進行平均,bagging是平行工作的,因為所有模型都在同時工作。
? ? ? ?相反,boosting被認為是順序處理的,因為一個模型的輸出結果是下一個模型的輸入。boosting的想法是使用弱學習器來擬合數據。由于模型很弱,所以無法正確擬合數據,這種學習器的弱點將由另一個弱學習器來解決。如果仍然存在一些弱點,那么將使用另一個弱學習器來修復它們,直到最終從多個弱學習器中產生了強大的學習器。接下來將解釋梯度增強的工作原理。
梯度提升|Gradient Boosting
? ? ? ?以下是基于一個簡單示例梯度提升的工作原理:
假設要構建一個回歸模型,并且數據具有單個輸出,其中第一個樣本的輸出為15,如下圖所示。最終目標是建立能夠正確預測這種輸出的回歸模型。
? ? ? ?第一個弱模型預測第一個樣本的輸出為9而不是15,如下圖所示:
? ? ? ?為了衡量預測的損失量,對其計算殘差,剩余量是期望和預測輸出之間的差異。計算等式如下:
?
期望?預測1=殘差1期望?預測1=殘差1
? ? ? ?其中預測和殘差1分別是第一個弱模型的預測輸出和殘差。
因此,上述例子的殘差將為為:
?
15?9=615?9=6
? ? ? ?由于預測輸出和期望輸出之間存在殘差值為6的差距,因此可以創建第二個弱模型,其目標是預測輸出等于第一模型的殘差。所以,第二個模型將解決第一個模型的弱點。根據下面這個等式,兩個模型的輸出總和將等于期望輸出:
?
期望輸出=預測1+預測2(殘差1)期望輸出=預測1+預測2(殘差1)
? ? ? ?如果第二個弱模型能夠正確地預測殘差1,則期望輸出將等于所有弱模型的預測,如下所示:
?
期望輸出=預測1+預測2(殘差1)=9+6=15期望輸出=預測1+預測2(殘差1)=9+6=15
? ? ? ?但是,如果第二個弱模型未能正確預測殘差1的值,而僅返回的值為3,那么第二個弱學習器也將具有如下的殘差:
?
殘差2=預測1?預測2=6?3=3殘差2=預測1?預測2=6?3=3
如下圖所示:
? ? ? ?為了解決第二個弱模型的弱點,將創建第三個弱模型。其目標是預測第二弱模型的殘差。因此,它的目標輸出值為3。所以,樣本的期望輸出將等于所有弱模型的預測,如下所示:
?
期望輸出=預測1+預測2(殘差1)+預測3(殘差2)期望輸出=預測1+預測2(殘差1)+預測3(殘差2)
? ? ? ?如果第三弱模型預測是2,不等于3,即它不能預測出第二個弱模型的殘差,那么對于這樣的第三個弱模型將存在殘差:
?
殘留3=預測2?預測3=3?2=1殘留3=預測2?預測3=3?2=1
如下圖所示
? ? ? ?因此,將創建第四個弱模型來預測第三個弱模型的殘差,其值等于1。期望輸出將等于所有弱模型的預測,如下所示:
?
期望輸出=預測1+預測2(殘差1)+預測3(殘差2)+預測4(殘差3)期望輸出=預測1+預測2(殘差1)+預測3(殘差2)+預測4(殘差3)
? ? ? ?如果第四個弱模型正確地預測其目標(即,殘差值3),則總共使用四個弱模型即可達到15的期望輸出,如下圖所示。
? ? ? ?這就是梯度增強算法的核心思想,使用先前模型的殘差作為下一個模型的目標,有點類似于遞歸算法,滿足終止條件即退出遞歸。
梯度提升總結
? ? ? ?總而言之,梯度提升始于弱模型預測,這種弱模型的目標是使其預測值與問題的理想輸出一致。在模型訓練之后,計算其殘差。如果殘差不等于零,則創建另一個弱模型以修復前一個的弱點。但是這種新模型的目標并不是獲得期望輸出,而是先前模型的殘差。也就是說,如果給定樣本的期望輸出是T,則第一模型的目標是T。在訓練之后,對于這樣的樣本可能存在R的殘差,所以要創建一個的新模型,并將其目標設置為R,而不是T,新模型填補以前模型的空白。
? ? ? ?梯度增強類似于多個力量弱的人抬一個重物上樓梯。沒有一個力量弱的人能夠抬著重物走完真個樓梯,每個人只能抬著走一步。第一個人將重物提升一步并在此之后變得疲憊,無法繼續;另一個人繼續抬起重物并向前走另一步,依此類推,直到走完所有樓梯,重物到達指定位置。?
原文鏈接?
?本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的图解集成学习中的梯度提升思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两年AI研究经验(教训)总结,进来看看吧
- 下一篇: AI新时代-大神教你使用python+O