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