看完這篇,邏輯迴歸80%都懂了

1. 什麼是邏輯迴歸

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

也就是把Y的結果帶入一個非線性變換的Sigmoid函數中,即可得到[0,1]之間取值範圍的數S,S可以把它看成是一個概率值,如果我們設置概率閾值爲0.5,那麼S大於0.5可以看成是正樣本,小於0.5看成是負樣本,就可以進行分類了。

2. 什麼是Sigmoid函數

函數公式如下:

S(t)=11+etS(t)=\frac{1}{1+e^{-t}}

image

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

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

H(a,b)=11+e(aX+b)H(a,b)=\frac{1}{1+e^{(aX+b)}}

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

3. 損失函數是什麼

邏輯迴歸的損失函數是 log loss,也就是對數似然函數,函數公式如下:

image

公式中的 y=1 表示的是真實值爲1時用第一個公式,真實 y=0 用第二個公式計算損失。爲什麼要加上log函數呢?可以試想一下,當真實樣本爲1是,但h=0概率,那麼log0=∞,這就對模型最大的懲罰力度;當h=1時,那麼log1=0,相當於沒有懲罰,也就是沒有損失,達到最優結果。所以數學家就想出了用log函數來表示損失函數。

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

4.可以進行多分類嗎?

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

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

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

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

image

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

5.邏輯迴歸有什麼優點

  • LR能以概率的形式輸出結果,而非只是0,1判定。
  • LR的可解釋性強,可控度高(你要給老闆講的嘛…)。
  • 訓練快,feature engineering之後效果贊。
  • 因爲結果是概率,可以做ranking model。

6. 邏輯迴歸有哪些應用

  • CTR預估/推薦系統的learning to rank/各種分類場景。
  • 某搜索引擎廠的廣告CTR預估基線版是LR。
  • 某電商搜索排序/廣告CTR預估基線版是LR。
  • 某電商的購物搭配推薦用了大量LR。
  • 某現在一天廣告賺1000w+的新聞app排序基線是LR。

7. 邏輯迴歸常用的優化方法有哪些

7.1 一階方法

梯度下降、隨機梯度下降、mini 隨機梯度下降降法。隨機梯度下降不但速度上比原始梯度下降要快,局部最優化問題時可以一定程度上抑制局部最優解的發生。

7.2 二階方法:牛頓法、擬牛頓法:

這裏詳細說一下牛頓法的基本原理和牛頓法的應用方式。牛頓法其實就是通過切線與x軸的交點不斷更新切線的位置,直到達到曲線與x軸的交點得到方程解。在實際應用中我們因爲常常要求解凸優化問題,也就是要求解函數一階導數爲0的位置,而牛頓法恰好可以給這種問題提供解決方法。實際應用中牛頓法首先選擇一個點作爲起始點,並進行一次二階泰勒展開得到導數爲0的點進行一個更新,直到達到要求,這時牛頓法也就成了二階求解問題,比一階方法更快。我們常常看到的x通常爲一個多維向量,這也就引出了Hessian矩陣的概念(就是x的二階導數矩陣)。

缺點:牛頓法是定長迭代,沒有步長因子,所以不能保證函數值穩定的下降,嚴重時甚至會失敗。還有就是牛頓法要求函數一定是二階可導的。而且計算Hessian矩陣的逆複雜度很大。

擬牛頓法: 不用二階偏導而是構造出Hessian矩陣的近似正定對稱矩陣的方法稱爲擬牛頓法。擬牛頓法的思路就是用一個特別的表達形式來模擬Hessian矩陣或者是他的逆使得表達式滿足擬牛頓條件。主要有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩陣)、 L-BFGS(可以減少BFGS所需的存儲空間)。

8. 邏輯斯特迴歸爲什麼要對特徵進行離散化。

  1. 非線性!非線性!非線性!邏輯回歸屬於廣義線性模型,表達能力受限;單變量離散化爲N個後,每個變量有單獨的權重,相當於爲模型引入了非線性,能夠提升模型表達能力,加大擬合; 離散特徵的增加和減少都很容易,易於模型的快速迭代;
  2. 速度快!速度快!速度快!稀疏向量內積乘法運算速度快,計算結果方便存儲,容易擴展;
  3. 魯棒性!魯棒性!魯棒性!離散化後的特徵對異常數據有很強的魯棒性:比如一個特徵是年齡>30是1,否則0。如果特徵沒有離散化,一個異常數據“年齡300歲”會給模型造成很大的干擾;
  4. 方便交叉與特徵組合:離散化後可以進行特徵交叉,由M+N個變量變爲M*N個變量,進一步引入非線性,提升表達能力;
  5. 穩定性:特徵離散化後,模型會更穩定,比如如果對用戶年齡離散化,20-30作爲一個區間,不會因爲一個用戶年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎麼劃分區間是門學問;
  6. 簡化模型:特徵離散化以後,起到了簡化了邏輯迴歸模型的作用,降低了模型過擬合的風險。

9. 邏輯迴歸的目標函數中增大L1正則化會是什麼結果。

所有的參數w都會變成0。

10. 代碼實現

GitHub:https://github.com/NLP-LOVE/ML-NLP/blob/master/Machine%20Learning/2.Logistics%20Regression/demo/CreditScoring.ipynb


作者:@mantchs

GitHub:https://github.com/NLP-LOVE/ML-NLP

歡迎大家加入討論!共同完善此項目!羣號:【541954936】NLP面試學習羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章