1. 程式人生 > >通俗易懂--邏輯迴歸演算法講解(演算法+案例)

通俗易懂--邏輯迴歸演算法講解(演算法+案例)

1.邏輯迴歸(Logistic Regression)

GitHub地址(案例程式碼加資料)

1.1邏輯迴歸與線性迴歸的關係

邏輯迴歸是用來做分類演算法的,大家都熟悉線性迴歸,一般形式是Y=aX+b,y的取值範圍是[-∞, +∞],有這麼多取值,怎麼進行分類呢?不用擔心,偉大的數學家已經為我們找到了一個方法。

首先我們先來看一個函式,這個函式叫做Sigmoid函式:

image

函式中t無論取什麼值,其結果都在[0,-1]的區間內,回想一下,一個分類問題就有兩種答案,一種是“是”,一種是“否”,那0對應著“否”,1對應著“是”,那又有人問了,你這不是[0,1]的區間嗎,怎麼會只有0和1呢?這個問題問得好,我們假設分類的閾值是0.5,那麼超過0.5的歸為1分類,低於0.5的歸為0分類,閾值是可以自己設定的。

好了,接下來我們把aX+b帶入t中就得到了我們的邏輯迴歸的一般模型方程:

image

結果P也可以理解為概率,換句話說概率大於0.5的屬於1分類,概率小於0.5的屬於0分類,這就達到了分類的目的。

1.2損失函式

邏輯迴歸的損失函式跟其它的不同,先一睹尊容:

image

解釋一下,當真實值為1分類時,用第一個方程來表示損失函式;當真實值為0分類時,用第二個方程來表示損失函式,為什麼要加上log函式呢?可以試想一下,當真實樣本為1是,但h=0概率,那麼log0=∞,這就對模型最大的懲罰力度;當h=1時,那麼log1=0,相當於沒有懲罰,也就是沒有損失,達到最優結果。所以數學家就想出了用log函式來表示損失函式,把上述兩式合併起來就是如下函式,並加上正則化項:

image

最後按照梯度下降法一樣,求解極小值點,得到想要的模型效果。

1.3多分類問題(one vs rest)

其實我們可以從二分類問題過度到多分類問題,思路步驟如下:

1.將型別class1看作正樣本,其他型別全部看作負樣本,然後我們就可以得到樣本標記型別為該型別的概率p1。

2.然後再將另外型別class2看作正樣本,其他型別全部看作負樣本,同理得到p2。

3.以此迴圈,我們可以得到該待預測樣本的標記型別分別為型別class i時的概率pi,最後我們取pi中最大的那個概率對應的樣本標記型別作為我們的待預測樣本型別。

image

總之還是以二分類來依次劃分,並求出概率結果。

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程式碼實現

GitHub地址(程式碼加資料)

尋覓網際網路,少有機器學習通俗易懂之演算法講解、案例等,專案立於這一問題之上,整理一份基本演算法講解+案例於文件,供大家學習之。通俗易懂之文章亦不可以面概全,但凡有不正確或爭議之處,望告知,自當不吝賜教!
.
.
.
.

image

歡迎新增微信交流!請備註“機器學習”。