之前介紹了 FM 及 FFM 演算法,他們對於特徵交換都只留在二階上,也就是只討論兩個特徵若同時出現時的情況。但難道不能討論3個4個或更多嗎?
可以,但會遇到組合爆炸問題,所以FM 及FFM都只留在二階上,那還有什麼好方法,讓我們可以不用暴力法,也能知道哪些特徵組合有用?進而做推薦預測?
2014 年 FB 提出的 GBDT + LR 演算法,就是在解決找出特徵組合又能做預測的辦法。
要做推薦預測,傳統的 LR 模型即可運作,它有以下特點:
但他也有缺點:LR 並不知道哪特徵組合是有用的,他會一股腦全部學進去,這要怎麼辦呢?
GBDT 是梯度上升決策樹,它可以拿來做回歸或是要做分類。它有個特色,將它訓練完之後,會得到 N 顆樹,每次做預測時,就是這 N 顆樹一起運算得到結果。
那既然 GBDT 可以做回歸,也可以做分類,那還要 LR 做什麼?
還記得 LR 裡,它無法識別哪些特徵是有用的。我們若把 GBDT 用法改一下,我們讓每顆樹的葉節點分別表示 0 或 1 ,把輸入 x 丟到 GBDT 訓練出來的 N 顆樹裡,當 x 可以到每顆樹的葉節點時,我們便把該節點當 1 ,其它當 0 ,這樣每顆樹就會產生 一個 one-hot 的序列,然後把每一顆樹產生序列集合起來,就可以成為這個輸入 x 的特徵向量。
這個特徵向量可視為有效的特徵組合重新編碼的結果。既然拿到 x 新的特徵向量了,就把這個特徵向量拿去做 LR。這樣就可以有特徵組合的好處,又有LR的好處了!
架構如下:
GBDT + LR 是個有趣的設計,它採用了兩個演算法的精華合成起來。因為計算複雜度小,效果又好,在深度學習還沒有流行起來的時代, GBDT + LR 就有一點深度學習裡用 embedding 的味道在,所以在 2014 年時流行起來,他的原理和思路也一直影響之後的演算法,算是個推薦預測演算法的里程碑。
參考資料: 原 FB 提出的論文