原文:http://blog.xlvector.net/2014-02/different-logistic-regression/
最近幾年廣告系統成為很多公司的重要系統之一,定向廣告技術是廣告系統中的重要技術,點擊率預估是定向廣告技術中的重要組成部分,Logistic Regression是解決點擊率預估最常用的機器學習算法。所以本文介紹一下Logistic Regression(下文簡稱LR)。
解決的問題
LR主要用來解決兩類分類問題。下面的問題是一些典型的兩類分類問題:
- 用戶看到一個廣告后會點還是不會點
- 一個人是男還是女
- 一張圖片中的圖像是不是人臉
- 一個人借錢后會不會還
兩類分類問題是機器學習的基本問題,所有的分類算法至少都可以解決兩類分類問題, 比如:
- 決策樹,隨機森林,GBDT
- SVM, Vector Machine
- Gauss Process
- 神經網絡
那為什么點擊率預估問題選擇LR呢,主要是因為:
- 數據規模很大,而LR無論是訓練還是預測的計算復雜度很低
- 特征很多,對特征做了線性變換,因此問題基本是線性的,線性分類器就可以解決
- LR不僅可以預測一個樣本屬於那一類,而且可以給出屬於每一類的概率
- LR的模型簡單,從而解釋預測結果也相對容易
- LR的模型簡單,從而並行化相對容易
不同類型的LR
自從LR提出之后,學術界對它的改進主要基於兩個方面:
- 用什么樣的正則化,早期是L2正則化,而最近用的比較多的是L1正則化
- 用什么樣的優化算法,如何在最短的時間內收斂到最優的解
正則化
正則化是機器學習中的一個重要技術,它的主要目的是讓防止一個模型過擬合。目前比較常用的正則化有L1,和L2:
- L2正則化認為特征的權重的先驗分布是一個0附近的高斯分布
- L1正則化認為特征的權重的先驗分布是一個0附近的拉普拉斯分布
L1正則化相對與L2正則化有一個優點,就是加入L1正則化的損失函數在優化后,絕大多數特征的權重都是0。這個特性可以大大減少在線預估時的內存占用,並提高預測的速度,這是因為
- 在線預估的主要計算樣本的特征向量x和模型的特征權重向量w的點乘
- w向量一般需要用HashMap存儲,而一個特征的權重為0,就不需要存儲了,因為HashMap中不存在的特征就是權重為0
- 所以L1正則化可以減少w的內存占用,而w減小后,計算w和x的點乘的速度也能提高
優化方法
L2正則化的LR的損失函數是一個可以求導的凸函數,從而可以用最速下降法(梯度法)進行優化。一般梯度法有3種
- Batch
- Mini batch
- SGD (隨機梯度法)
這3種方法是最早提出的優化方法。可以用梯度法,自然也可以用牛頓法來獲得超線性收斂的特性,於是共軛梯度法和LBFGS也被用來優化LR。LBFGS是基於L2正則化的,如果基於L1正則化,微軟提出了OWLQN算法(http://blog.csdn.net/qm1004/article/details/18083637)。
無論是梯度法還是擬牛頓法,它們都是頻率學派的優化雙方。它們其實是極大似然估計用了不同的優化算法。於是,貝葉斯學派也提出了Bayesian的優化算法
- Ad Predictor : 這是微軟的研究員提出的一種算法, 論文可以參考 Web-Scale Bayesian Click-Through Rate Prediction for Sponsored Search Advertising in Microsoft’s Bing Search Engine。
Ad Predictor有幾個比較好的特性
- 它只需要掃瞄一次數據集就可以收斂到最優解,而不是像梯度法或者擬牛頓法那樣需要反復迭代數據集。
- 它不僅僅能預測出一個樣本是正樣本的概率,而且還可以給出對於這個概率預測值的置信度
Ad Predictor很好了,不過它是基於L2正則化的,這樣總是讓人不能滿意。Google在2013年發表了一篇論文(Ad Click Prediction: a View from the Trenches),介紹了一個基於L1正則化的LR優化算法FTRL-Proximal,且又具有上述Ad Predictor的兩個優點。
並行化
算法的並行化有兩種
- 無損的並行化:算法天然可以並行,並行只是提高了計算的速度和解決問題的規模,但和正常執行的結果是一樣的。
- 有損的並行化:算法本身不是天然並行的,需要對算法做一些近似來實現並行化,這樣並行化之后的雙方和正常執行的結果並不一致,但是相似的。
在前面提到的算法中,基於Batch的算法(Batch-GD, LBFGS, OWLQN)都是可以進行無損的並行化的。而基於SGD的算法(Ad Predictor, FTRL-Proximal)都只能進行有損的並行化。