通俗易懂--邏輯迴歸演算法講解(演算法+案例)
1.邏輯迴歸(Logistic Regression)
1.1邏輯迴歸與線性迴歸的關係
邏輯迴歸是用來做分類演算法的,大家都熟悉線性迴歸,一般形式是Y=aX+b,y的取值範圍是[-∞, +∞],有這麼多取值,怎麼進行分類呢?不用擔心,偉大的數學家已經為我們找到了一個方法。
首先我們先來看一個函式,這個函式叫做Sigmoid函式:
函式中t無論取什麼值,其結果都在[0,-1]的區間內,回想一下,一個分類問題就有兩種答案,一種是“是”,一種是“否”,那0對應著“否”,1對應著“是”,那又有人問了,你這不是[0,1]的區間嗎,怎麼會只有0和1呢?這個問題問得好,我們假設分類的閾值是0.5,那麼超過0.5的歸為1分類,低於0.5的歸為0分類,閾值是可以自己設定的。
好了,接下來我們把aX+b帶入t中就得到了我們的邏輯迴歸的一般模型方程:
結果P也可以理解為概率,換句話說概率大於0.5的屬於1分類,概率小於0.5的屬於0分類,這就達到了分類的目的。
1.2損失函式
邏輯迴歸的損失函式跟其它的不同,先一睹尊容:
解釋一下,當真實值為1分類時,用第一個方程來表示損失函式;當真實值為0分類時,用第二個方程來表示損失函式,為什麼要加上log函式呢?可以試想一下,當真實樣本為1是,但h=0概率,那麼log0=∞,這就對模型最大的懲罰力度;當h=1時,那麼log1=0,相當於沒有懲罰,也就是沒有損失,達到最優結果。所以數學家就想出了用log函式來表示損失函式,把上述兩式合併起來就是如下函式,並加上正則化項:
最後按照梯度下降法一樣,求解極小值點,得到想要的模型效果。
1.3多分類問題(one vs rest)
其實我們可以從二分類問題過度到多分類問題,思路步驟如下:
1.將型別class1看作正樣本,其他型別全部看作負樣本,然後我們就可以得到樣本標記型別為該型別的概率p1。
2.然後再將另外型別class2看作正樣本,其他型別全部看作負樣本,同理得到p2。
3.以此迴圈,我們可以得到該待預測樣本的標記型別分別為型別class i時的概率pi,最後我們取pi中最大的那個概率對應的樣本標記型別作為我們的待預測樣本型別。
總之還是以二分類來依次劃分,並求出概率結果。
1.4邏輯迴歸(LR)的一些經驗
模型本身並沒有好壞之分。
LR能以概率的形式輸出結果,而非只是0,1判定。
LR的可解釋性強,可控度高(你要給老闆講的嘛…)。
訓練快,feature engineering之後效果贊。
因為結果是概率,可以做ranking model。
1.5LR的應用
CTR預估/推薦系統的learning to rank/各種分類場景。
某搜尋引擎廠的廣告CTR預估基線版是LR。
某電商搜尋排序/廣告CTR預估基線版是LR。
某電商的購物搭配推薦用了大量LR。
某現在一天廣告賺1000w+的新聞app排序基線是LR。
1.6Python程式碼實現
歡迎新增微信交流!請備註“機器學習”。