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


1. 什么是邏輯回歸

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

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

2. 什么是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分類,這就達到了分類的目的。

3. 損失函數是什么

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

公式中的 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中最大的那個概率對應的樣本標記類型作為我們的待預測樣本類型。

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

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

機器學習通俗易懂系列文章

3.png


作者:@mantchs

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

歡迎大家加入討論!共同完善此項目!群號:【541954936】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM