facebook中使用GBDT組合特徵是否有同學嘗試過?我考慮要做這件事,需要保存訓練得到的樹結構,然後記錄下每個觀測被每棵樹分的類別,然後把某些結點作為一個特徵,落在這些結點的觀測標註為1,其它樣本為0,如此產生一些特徵。這樣的話也就必須自己實現GBDT吧?是否可以通過R或python現有的包或模塊輔助實現呢?


1. 首先要切分數據集,一部分用於訓練GBDT,另一部分使用訓練好的GBDT模型

2. GBDT模型的apply方法生成x在GBDT每個數中的index,然後通過onehot編碼做成特徵。

3. 新的特徵輸入到分類(如LR)模型中訓練分類器。

具體可以參考:

GBDT原理及利用GBDT構造新的特徵-Python實現 - AaronChou的博客 - 博客頻道 - GBDT原理及利用GBDT構造新的特徵-Python實現 - CSDN博客


輔助包模塊跑GBDT肯定沒問題的,但是要看一下是否支持樹的輸出。

自己實現GBDT也是一個很好的實踐,並且可以在實現過程中通過設計達到輸出樹作為特徵的目的(這點我們在工作中也是自己搞得)。但是自己實現GBDT需要一個好的baseline用於測試,保證效果。

另外你中間說的特徵加工的一段,肯定是要自己實現的。

python的scikit庫以及xgboost都可輕鬆實現。

先佔坑,有時間了來貼代碼

如果你是用 scikit-learn的話,gbdt有個apply方法可以返回葉子節點的index


請問你這個問題解決了嗎?
python 的scikit-learn 可以篩選組合特徵

求問R語言怎麼實現?


sklearn 已經提供了一個實現,參考 Feature transformations with ensembles of trees


推薦閱讀:
相关文章