1. 什麼是GBDT
這個就是一個集成算法,希望通過多個弱分類器的結合來訓練出一個強分類器。這個弱分類器打個比方——決策樹。用決策樹作爲弱分類器,然後訓練10個決策樹,這10個決策樹組成的就是一個強分類器。
GBDT是怎麼運作的呢?GBDT是預測殘差的。第一棵訓練的決策樹預測出來的結果肯定和目標值是存在偏差的,畢竟是一個弱分類器,出現偏差很正常。這個偏差,我們管它叫做殘差。第二棵樹預測的就是基於第一棵樹得到的這個殘差。可以把第二棵樹看成對第一棵樹的補充,單純的第二棵樹沒有意義。
第一個模型預測年齡,雖然真實值是30歲,第一個模型只給出了20歲的估計值;第二棵樹要預測的就是這個10歲的殘差,但是第二棵樹只給出了6歲的估計值;第三棵樹預測的是第二棵樹的4歲的殘差,但是………………(禁止套娃)
2. GDBT如何選擇特徵
其實這個問題看起來問的不明所以,其實是問你決策樹如何選擇特徵的。從上面的例子可以看出來,GDBT應該是處理迴歸問題的(處理連續數據的)。當然,GDBT也有辦法處理分類問題,只是這裏就不說了,這裏主要說GDBT怎麼處理迴歸問題的,迴歸問題能處理,那麼總有迴歸離散化的辦法的
這個問題是在問:CART TREE如何選擇特徵的CART TREE就是迴歸決策樹,就是之前提到的弱分類器。
一個決策樹,希望讀者已經有一個大概的理解了。簡單說就是:樣本可以根據的特徵A是否超過某一個閾值劃分成兩部分,然後劃分之後的每一個部分又可以根據某一個特徵是否超過某一個閾值再分成兩部分……
這樣我們就要做出選擇了:每一個部分是根據哪一個特徵去劃分?根據這個特徵的哪一個數值作爲閾值劃分?
如果我們算力無窮,那麼自然可以遍歷每一個特徵,然後窮舉每一種可能的分割點,然後對比找到最優分割點。
那麼如何判斷分割的點的好壞呢?得給出一個cost函數,或者叫做loss函數這樣的東西吧。
看一下這個公式,我把公式寫的太醜了。其實這個公式非常的好理解:現在根據某一個特徵值,根據某一個閾值把樣本分成了兩個部分:第一部分和第二部分。然後計算每一個部分的樣本的label的均值,也就是公式中的:,,然後計算第一部分中所有樣本的label與第一部分label均值之間的差的平方和,同樣的過程計算第二個部分的,兩個相加起來就是這個loss。選擇能夠讓這個loss最小的分割特徵和分割閾值,就是我們要找的東西。
其實我在學這一塊的時候,發現這個過程像是什麼?像不像聚類算法,通過上面的loss的最小化的過程,把一堆樣本分成兩類,讓兩類的類內距離最小。那個均值就像是求類中心點,計算每一個label距離類中心點的距離。(這一段看不懂也沒事)