排序算法經典中的經典
參考
推薦系統之GBDT+LR
極客時間 手把手帶你搭建推薦系統 課程
邏輯回歸(LR)模型
邏輯回歸(LR,Logistic Regression)是一種傳統機器學習分類模型,也是一種比較重要的非線性回歸模型,其本質上是在線性回歸模型的基礎上,加了一個 Sigmoid 函數(也就是非線性映射),由于其簡單、高效、易于并行計算的特點,在工業界受到了廣泛的應用。
作為廣義線性模型的一種,LR 假設因變量 y 服從伯努利分布。在推薦系統中我們用它來預估點擊率,實際上就是來預測“點擊”這個事件是否發生。這個“是否發生”實際上就是因變量 y。因為點擊事件只有兩種可能性,點擊或者不點擊(二分類問題)。這個問題,實際上就是服從伯努利分布的。總結一下,邏輯回歸實際上就是在數據服從伯努利分布的假設下,通過極大似然的方法,運用梯度下降算法對參數進行求解,從而達到二分類。
在線性回歸的基礎上,把它的輸出通過另一個函數映射到[0, 1]這個區間范圍內就能解決這個問題。這個映射函數我們一般用 Sigmoid 函數,而映射之后的函數就是一個邏輯回歸模型,它對應的邏輯回歸圖像如下。
其函數原型為 y = 1 1 + e ? z y = \frac{1}{1+ e^{-z}} y=1+e?z1?.
GBDT 模型
GBDT(Gradient Boosting Decision Tree)算法是一種基于決策樹的集成學習算法,它通過不斷訓練決策樹來提高模型的準確性。GBDT 在每一次訓練中都利用當前的模型進行預測,并將預測誤差作為新的樣本權重,然后訓練下一棵決策樹模型來擬合加權后的新數據。
GBDT 中的 B 代表 Boosting。Boosting 算法的基本思想是通過將多個弱分類器線性組合形成一個強分類器,達到優化訓練誤差和測試誤差的目的。具體應用時,每一輪將上一輪分類錯誤的樣本重新賦予更高的權重,這樣一來,下一輪學習就容易重點關注錯分樣本,提高被錯分樣本的分類準確率。
GBDT 由多棵 CART 樹組成,本質是多顆回歸樹組成的森林。每一個節點按貪心分裂,最終生成的樹包含多層,這就相當于一個特征組合的過程。
在推薦系統中,我們使用 GBDT 算法來優化和提高個性化推薦的準確性。通過 GBDT 算法對用戶歷史行為數據進行建模和學習,可以很容易地學習到學習用戶的隱式特征(例如品味、購買能力、口味偏好等)。另外,GBDT 算法可以自動選擇重要的特征,對離散型和連續型特征進行處理(如缺失值填充、離散化等),為特征工程提供更好的支持。
FM模型通過隱變量的方式,發現兩兩特征之間的組合關系,但這種特征組合僅限于兩兩特征之間,后來發展出來了使用深度神經網絡去挖掘更高層次的特征組合關系。但其實在使用神經網絡之前,GBDT也是一種經常用來發現特征組合的有效思路。
GBDT+LR
在推薦系統中,GBDT+LR 使用最廣泛的場景就是點擊率預估,然后根據點擊率預估的結果進行排序,因此 GBDT+LR 一般被應用于排序層中。
可以看到,整個模型實際上被分成兩個部分,下面是 LR 上面是 GBDT。從上往下看,整個模型的訓練可以分成下面五個步驟。
- GBDT 訓練:使用 GBDT 對原始數據進行訓練并生成特征。在訓練過程中,每棵樹都是基于前一棵樹的殘差進行構建。這樣,GBDT 可以逐步減少殘差,生成最終的目標值。
- 特征轉換:使用 GBDT 生成的特征進行轉換。這些特征是樹節點的輸出,每個特征都對應于一個葉子節點。在轉換過程中,每個葉子節點都會被轉換為一個新的特征向量,代表這個葉子節點與其他節點的相對位置,并將這些特征向量連接起來形成新的訓練集。
- 特征歸一化:對生成的特征進行歸一化處理,確保不同維度的特征在訓練過程中具有相等的權重。
- LR 訓練:使用 LR 對轉換后的特征進行二分類或回歸。特征向量被送入邏輯回歸模型中進行訓練,以獲得最終的分類模型。在訓練過程中,使用梯度下降法來更新模型參數,以最小化損失函數,損失函數的選擇取決于分類問題的具體情況。
- 模型預測:訓練完成后,使用 LR 模型對新的數據進行預測。GBDT+LR 模型將根據特征生成函數和邏輯回歸模型預測新數據的類別或值。
優缺點
使用 GBDT+LR 結合的形式進行點擊率預測好處:
- 可以利用 GBDT 對復雜數據進行非線性特征提取和降維,又可以運用 LR 對特征進行加權和融合,提高模型的預測精度。
- BDT+LR 不需要手動選擇特征(通過 GBDT 自動選擇),使得模型更具有魯棒性和可擴展性。
- GBDT+LR 具有良好的可解釋性,可以通過分析 GBDT 中的特征重要度和 LR 中的權重,得到每個特征在模型中的貢獻程度,從而更好地理解模型的預測結果。
雖然 GBDT+LR 來進行點擊率預測有很多的好處,但是同時也有很多的問題,比如下面三點。
- GBDT+LR 建模復雜度較高,需要調節多個超參數,如 GBDT 中的樹深度、葉子節點數量、學習率等,LR 中的正則化參數等,增加了模型調優的難度。
- GBDT+LR 需要大量的數據和計算資源進行訓練,尤其是對于大規模的數據集,訓練時間和計算成本都較高。
- GBDT+LR 對異常值和噪聲數據敏感,需要進行數據預處理和異常值處理,以提高模型的穩定性和魯棒性。
現在的GBDT和LR的融合方案真的適合現在的大多數業務數據么?現在的業務數據是什么?是大量離散特征導致的高維度離散數據。而樹模型對這樣的離散特征,是不能很好處理的,要說為什么,因為這容易導致過擬合。GBDT只是對歷史的一個記憶罷了,沒有推廣性,或者說泛化能力。