出場率No.1的邏輯回歸演算法,是怎樣「煉成」的?

  • 2019 年 12 月 10 日
  • 筆記

0x00 前言

邏輯回歸(Logistic Regression,LR)。在Kaggle競賽的統計中,LR演算法以63.5%的出產率,榮獲各領域中「出場率最高的演算法」這一殊榮。在實際場景中,邏輯回歸同樣應用廣泛,大到國家各項經濟政策的制定,小到計算廣告CTR,都能看到LR算的身影。

除了應用廣泛外,LR的建模過程還體現了數據建模中很重要的思想:對問題劃分層次,並利用非線性變換和線性模型的組合,將未知的複雜問題分解為已知的簡單問題。因此,我們可以說:理解好邏輯回歸的細節,就掌握了數據建模的精髓。

0x01 什麼是邏輯回歸

1.1 線性回歸能解決分類問題么?

其實,線性回歸是不能解決分類問題的。因為我們在使用線性回歸模型時,我們實際上做了3個假設(實際上有更多的假設,這裡只討論最基本的三個):

  • 因變數和自變數之間呈線性相關。
  • 自變數與干擾項相互獨立。
  • 沒被線性模型捕捉到的隨機因素服從正態分布。

從理論上來說,任何數據放在任何模型里都會得到相應的參數估計,進而通過模型對數據進行預測。但是這並不一定能保證模型效果,有時會得到「錯且無用」的模型,因此建模的過程中需要不斷提出假設和檢驗假設。

1.2 用邏輯回歸解決分類問題

有些演算法,表面上叫「XX回歸」,背地裡卻是解決分類問題的。

其原理是將樣本的特徵樣本發生的概率聯繫起來,即,預測的是樣本發生的概率是多少。由於概率是一個數,因此被叫做「邏輯回歸」。

在線性回歸演算法的例子中,我們進行房價預測得到的結果值,就是我們預測的房價,是一個數值。

但是我們在邏輯回歸演算法中,得到的預測值是一個概率,然後在概率的基礎上多做一步操作,得到分類的結果。比如某銀行使用邏輯回歸做風控模型,先設置一個閾值0.5,如果得到它逾期的概率大於0.5,就不放款;否則就放款。對於「放款」 or 「不放款」來說,實際上是一個標準的分類問題。

通過這個小例子我們可以看到,在回歸問題上再多做一步,就可以作為分類演算法來使用了。邏輯回歸只能解決二分類問題,如果是多分類問題,LR本身是不支援的。

對於線性回歸來說,通過傳遞的自變數x來計算預測值:。其中實際上就是參數與樣本的矩陣相乘,。那我們可不可以找到一組參數,與特徵矩陣相乘,直接得到表示概率的結果呢?

單單從應用的角度來說,是可以的,但是並不好。這是因為線性回歸得到值是沒有限制的,值域從負無窮到正無窮的值。而對於概率來說,其值域為[0,1],是有限制的。如果直接使用線性回歸得到的結果,使得最終擬合的結果可信程度較差。

那麼下面我們就看一看,邏輯回歸背後的數學原理。

0x02 LR演算法數學推導

2.1 決策背後的博弈

邏輯回歸使用什麼樣的方式來得到一個事件發生的概率值的呢?分類的背後又是什麼呢?

以銀行理財產品營銷場景為例,對於銀行來說,客戶只有「買」和「不買」兩種行為,但是這個行為實際上是客戶在接到營銷行為,如電話營銷、簡訊營銷之後,經過內心博弈產生的最終結果。

客戶為什麼會做出「買」或「不買」這樣的被分類的行為?如果客戶手裡有一筆暫時不會動用的閑錢,且他希望能夠通過投資行為獲利,並且對盈利效果表示認可,則客戶會考慮購買理財產品。但是反過來,如果客戶沒有錢,或者他有其他更好的投資渠道,或者厭惡投資風險,那麼客戶就不會購買。從經濟學的角度來說,購買理財產品這一行為,既能給客戶帶來正效用,也能給客戶帶來負效用。當客戶主觀認為正效用大於負效用時,可就是購買行為帶來的整體效用大於0時,客戶就會購買,反之則不然

2.2 博弈中的隱含變數

那麼我們從數學角度出發,分析上述場景:假設有自變數集合,這些參數表示這種特徵,決定購買行為對客戶的效用,包括正效用和負效用~。我們將客戶的購買行為記為y,其中y=1表示客戶購買理財產品;y=0表示客戶沒有購買。於是可以得到下面的公式:

如果,我們假設正負效用函數與自變數特徵參數成線性相關,則根據可以得出:,~。其中是相互獨立的隨機變數,且都服從正態分布。

在得到正負效用線性函數之後,就可以用正效用減去負效用的解是否大於0作為分類依據。令,則可以得到:。如果我們將其轉換為分類問題,則可以得到階梯函數如下:

更進一步,我們將上面的函數轉變為求概率,即客戶購買理財產品的概率如下:

其中,是隨機變數的累積分布函數,表示客戶購買的比例。

這個模型在學術上被稱作是probit回歸(雖然是名字中有「回歸」兩個字,但是實際上解決的還是分類問題)。

在模型搭建的過程中,我們假設了客戶內心博弈的正負效用變數:,因此這類隱藏變數模型(latent variable model);而正負效用變數:被稱為隱藏變數(latent variable)。

由此可見,對於一個分類問題,由於「窗口效用」,我們只能看見客戶的購買行為,但是在分類的背後,是隱藏變數之間的博弈,我們通過搭建隱藏變數的模型,來求出客戶購買的概率

2.3 sigmoid函數與邏輯回歸

在上一節我們得到了probit回歸在數學上是比較完美的,但是正態分布的累積分布函數,其表達形式很複雜(複雜到懶得把公式寫出來),且沒有解析表達式。因此直接在probit回歸上做參數估計是比較困難的。但是好在我們可以對其做近似,讓其在數學上更加簡潔。

此時,神奇的數學家們發現:正態分布在線性變換下保持穩定,而邏輯分布可以很好地近似正態分布。因此可以使用標準邏輯分布的累積分布函數來替換正態分布的累積分布函數。

標準邏輯分布的概率密度函數為,對應的積累分布函數為:

在學術界被稱為sigmoid函數,是在數據科學領域,特別是神經網路和深度學習領域中非常重要的函數!。其影像如下圖所示,呈S狀,因此也被稱為「S函數」。當t趨近於正無窮時,趨近於0,則趨近於1;當t趨近於負無窮時,趨近於正無窮,則趨近於0。因此該函數的值域為(0,1)。

兩種不同的效用函數(假定他們都滿足線性回歸模型的假設)相互競爭時,其中某一方最終勝出的概率分布在數學上可近似為sigmoid函數。通俗講:sigmoid函數表述了某一方競爭勝出的概率。

將效用函數之差(同樣是線性回歸模型)帶入sigmoid函數中,當t>0時,得到的結果是概率值p>0.5;當t<0時,得到的結果是p<0.5。因此,實際上我們得到是這樣的公式:

至此,大名鼎鼎的邏輯回歸模型(logit regression)如下,其中表示客戶特徵,表示模型參數

0xFF 總結

在本篇文章中,我們學習了邏輯回歸的演算法模型。

首先,邏輯回歸是解決分類問題的,本質是求概率再分類。在分類結果的背後是隱藏變數的博弈,我們認為隱藏變數與特徵是線性相關的,因此就可以對隱藏變數之差求概率(得到隨機變數的累積分布函數),得到probit回歸模型。為了使數學公式更為簡單,使用sigmoid函數去近似,最終得到邏輯回歸模型:

根據建模過程,我們已經得到了邏輯回歸模型,下一步就是找到損失函數,去儘可能地擬合數據。

那麼對於給定的樣本數據集X,y,我們如何找到一組參數,使得用這樣的方式,可以最大程度獲得樣本數據集X對應的分類輸出y?