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

1. 什麼是邏輯迴歸

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

也就是把Y的結果帶入一個非線性變換的Sigmoid函數中,便可獲得[0,1]之間取值範圍的數S,S能夠把它當作是一個機率值,若是咱們設置機率閾值爲0.5,那麼S大於0.5能夠當作是正樣本,小於0.5當作是負樣本,就能夠進行分類了。github

2. 什麼是Sigmoid函數

函數公式以下:算法

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

好了,接下來咱們把aX+b帶入t中就獲得了咱們的邏輯迴歸的通常模型方程:函數

結果P也能夠理解爲機率,換句話說機率大於0.5的屬於1分類,機率小於0.5的屬於0分類,這就達到了分類的目的。優化

3. 損失函數是什麼

邏輯迴歸的損失函數是 log loss,也就是對數似然函數,函數公式以下:搜索引擎

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

最後按照梯度降低法同樣,求解極小值點,獲得想要的模型效果。rest

4.能夠進行多分類嗎?

能夠的,其實咱們能夠從二分類問題過分到多分類問題(one vs rest),思路步驟以下:blog

1.將類型class1看做正樣本,其餘類型所有看做負樣本,而後咱們就能夠獲得樣本標記類型爲該類型的機率p1。

2.而後再將另外類型class2看做正樣本,其餘類型所有看做負樣本,同理獲得p2。

3.以此循環,咱們能夠獲得該待預測樣本的標記類型分別爲類型class i時的機率pi,最後咱們取pi中最大的那個機率對應的樣本標記類型做爲咱們的待預測樣本類型。

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

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】

相關文章
相關標籤/搜索