XGBoost + LR 就是加特征而已
LR (邏輯回歸) 算法因其簡(jiǎn)單有效,成為工業(yè)界最常用的算法之一。但 LR 算法是線性模型,不能捕捉到非線性信息,需要大量特征工程找到特征組合。為了發(fā)現(xiàn)有效的特征組合,F(xiàn)acebook 在 2014年介紹了通過 GBDT (Gradient Boost Decision Tree)+ LR 的方案 [1] (XGBoost 是 GBDT 的后續(xù)發(fā)展)。隨后 Kaggle 競(jìng)賽實(shí)踐證明此思路的有效性 [2][3]。
1. XGBoost + LR 的原理
XGBoost + LR 融合方式原理很簡(jiǎn)單。先用數(shù)據(jù)訓(xùn)練一個(gè) XGBoost 模型,然后將訓(xùn)練數(shù)據(jù)中的實(shí)例給 XGBoost 模型得到實(shí)例的葉子節(jié)點(diǎn),然后將葉子節(jié)點(diǎn)當(dāng)做特征訓(xùn)練一個(gè) LR 模型。XGBoost + LR 的結(jié)構(gòu)如下所示。
我***接觸到 XGBoost + LR 的時(shí)候,認(rèn)為 XGBoost + LR 是嘗試自動(dòng)替代特征工程的方法。深度學(xué)習(xí)在 CTR 領(lǐng)域便是在講述這樣的故事和邏輯:只需人工對(duì)原始特征進(jìn)行簡(jiǎn)單的變換,深度學(xué)習(xí)能取的比大量人工特征的 LR 好的效果。
2. XGBoost 葉子節(jié)點(diǎn)不能取代特征工程
為了驗(yàn)證 XGBoost + LR 是嘗試自動(dòng)替代特征工程的方法,還只是一種特征工程的方法,我們?cè)谧约簶I(yè)務(wù)的數(shù)據(jù)上做了一些實(shí)驗(yàn)。下圖便是實(shí)驗(yàn)結(jié)果,其中: “xgboost+lr1" 是 XGBoost 的葉子節(jié)點(diǎn)特征、原始屬性特征和二階交叉特征一起給 LR 進(jìn)行訓(xùn)練;"xgboost+lr2" 則只有葉子節(jié)點(diǎn)特征給 LR;"lr1" 是原始屬性特征和二階交叉特征; "lr2" 只有原始屬性特征。
從上面的實(shí)驗(yàn)來看:1) "xgboost+lr2" 明顯弱于 "lr1" 方法,說明只用葉子節(jié)點(diǎn)特征的 XGBoost + LR 弱于有特征工程的 LR 算法。即 XGBoost 葉子節(jié)點(diǎn)不能取代特征工程,XGBoost + LR 無法取代傳統(tǒng)的特征工程。2) "xgboost+lr1" 取得了所有方法中的***效果,說明了保留原來的特征工程 XGBoost + LR 方法擁有比較好的效果。即 XGBoost 葉子節(jié)點(diǎn)特征是一種有效的特征,XGBoost + LR 是一種有效的特征工程手段。
上面的實(shí)驗(yàn)結(jié)果和我同事二哥之前的實(shí)驗(yàn)結(jié)果一致。在他實(shí)驗(yàn)中沒有進(jìn)行二階交叉的特征工程技巧,結(jié)果 XGBoost > XGBoost + LR > LR,其中 XGBoost +LR 類似我們的 "xgboost+lr2" 和 LR 類似于我們的 "lr2"。
3. 強(qiáng)大的 XGBoost
只用 XGBoost 葉子節(jié)點(diǎn)特征, XGBoost + LR 接近或者弱于 XGBoost 。在下圖中,我們發(fā)現(xiàn) XGBoost 的每個(gè)葉子節(jié)點(diǎn)都有權(quán)重 w, 一個(gè)實(shí)例的預(yù)測(cè)值和這個(gè)實(shí)例落入的葉子節(jié)點(diǎn)的權(quán)重之和有關(guān)。
如果二分類 XGBoost 使用了 sgmoid 做激活函數(shù), 即參數(shù)為 "binary:logistic", 則 XGBoost 的最終預(yù)測(cè)值等于 sgmoid(葉子節(jié)點(diǎn)的權(quán)重之和)。而 LR 的最終預(yù)測(cè)值等于 sgmoid (特征對(duì)應(yīng)的權(quán)重之后)。因此 LR 只要學(xué)到葉子節(jié)點(diǎn)的權(quán)重,即可以將 XGBoost 模型復(fù)現(xiàn)出來。因此理論上,如果 LR 能學(xué)到更好的權(quán)重,即使只有葉子節(jié)點(diǎn)特征的 XGBoost + LR 效果應(yīng)該好于 XGBoost。
但是從上面的結(jié)果來看,XGBoost + LR 要接近或者弱于 XGBoost。XGBoost 賦予葉子節(jié)點(diǎn)的權(quán)重是很不錯(cuò)的,LR 學(xué)到的權(quán)重?zé)o法明顯地超過它。
4. 總結(jié)
XGBoost + LR 在工業(yè)和競(jìng)賽實(shí)踐中,都取得了不錯(cuò)的效果。但 XGBoost 的葉子節(jié)點(diǎn)不能完全替代人工特征, XGBoost + LR 并沒有像深度學(xué)習(xí)那樣試圖帶來自動(dòng)特征工程的故事和邏輯。最終,XGBoost + LR 的格局沒有超越特征工程。
【本文為51CTO專欄作者“李立”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過51CTO獲取聯(lián)系和授權(quán)】