機器學習算法篇—GBDT初探

為什麼要深入理解GBDT,因為它的特徵自動組合能力很強,運算效率很高,下面我們來看一下GBDT的基本原理。

準備知識:

  1. 迴歸樹:決策樹的一種,用於預測實數值,可以進行加減運算 詳細可參考:https://xiaozhuanlan.com/topic/5287096413

舉例說明:

看一張非常經典的圖,目的是預測一個人是否喜歡玩電腦遊戲:

機器學習算法篇—GBDT初探

tree1:

  1. 年齡大於15歲 減1分

  2. 年齡小於15歲,男性加2分,女性加0.1分

tree2:

  1. 每天用電腦加0.9分,不用的減0.9分

規定閾值是2

輸入一個小男孩,tree1得分2,tree2得分0.9,總分是2.9分,喜歡

輸入一個老人,tree1得分-1,tree2得分-0.9,總分是-1.9分,不喜歡

通過這個例子大家可以看出GBDT是用加權求和的方法,但是細心的同學可能會有疑問“如果單顆樹的權值過大,怎麼解決過擬合問題?”這個問題非常好,在傳統決策樹算法是會出現這個問題,但是GBDT通過各種方法,抑制決策樹的複雜性,降低單顆決策樹的擬合能力,再通過梯度提升的方法集成多個決策樹,最終能夠很好的解決過擬合的問題。

抑制單顆決策樹的複雜度的方法:

  1. 限制樹的最大深度

  2. 限制葉子節點的最少樣本數量

  3. 限制節點分裂時的最少樣本數量

  4. 吸收 bagging 的思想對訓練樣本採樣,在學習單顆決策樹時只使用一部分訓練樣本

  5. 借鑑隨機森林的思路在學習單顆決策樹時只採樣一部分特徵,在目標函數中添加正則項懲罰複雜的樹結。

特別注意的一點是:

GBDT 算法的每一步在生成決策樹時只需要擬合前面的模型的殘差,基本做法就是:先學習一個迴歸樹,然後“目標值-預測值”求此時的殘差,把這個殘差作為目標值,學習下一個迴歸樹,繼續求殘差……直到建立的迴歸樹的數目達到一定要求或者殘差能夠容忍,停止學習。

殘差是預測值和目標值的差值,比如標準答案是20分,我們第一次得15分,則差距是5分;第二次把5分為目標再用3分去擬合,則差距是2分;第三次用2分去擬合,差距就變成0分了,最後得到就是15+3+2=20,總結就是每次學習都把殘差作為下一輪學習的目標 。

應用:

LR + GBDT的組合,最早是facebook提出的,優點是:

  1. GBDT發掘有效的特徵組合

  2. 把有效的特徵組合引入到LR(邏輯迴歸)模型中

LR的缺點就是對特徵組合的捕獲不是很好,而GBDT正好彌補了這個缺點,目前非常廣泛的應用在各大互聯網公司,雖然說目前深度學習很火爆,但是實際互聯網公司中絕大多數還都在用LR,GBDT,LR+GBDT,FM,FM+GBDT這些傳統的機器學習模型,包括BAT大廠公司中也是。

找工作:

給目前正在找或者想轉行到機器學習的同學一個建議:深入理解 LR(邏輯迴歸),GBDT,LR+GBDT,FM,FM+GBDT這些模型,注意啊!是深入理解,並不是能看明白,看懂,這絕對不是深入理解,是有很大差別的。

深入理解是指能夠自己手寫推導出這些模型,知道每一步推導的理論依據和每一步背後的數學定理,並且針對每一步都能詳細的解釋。

目前的狀況就是一大半找機器學習工作的人,都是從其他方向轉過來了,基本都沒有工作經驗,而面試官也知道這個情況,之前聽新浪微博張老師分享的課程就提到過,60%來面試的都是別的方向轉過來的,但是沒關係,面試看重的是你對算法的理解程度,這個才是核心競爭力。因為小公司的機器學習的工作經驗,說實話優勢真不明顯,數據不是一個量級的,調優模型選擇都不一樣,建議把時間都花在深入理解算法模型上,在kaggle上找個比賽認真的參加一下,把排名拉上去,能排到TOP20左右,收穫一定特別大,簡歷上就有東西可寫了。

當面試的時候呢,帶幾張白紙帶個筆,當著面試官把GBDT的推導過程寫一遍,然後再講一下kaggle比賽能排到TOP20的優化細節和參數模型的調整以及遇到的困難問題,這樣基本問題不大了。但是這僅限於初級的機器學習崗位,中級高級不適用。


分享到:


相關文章: