邏輯回歸(Logistic Regression) 模型簡介

2021-02-13 人工智慧與大數據技術

來自:美團點評技術團隊(ID:meituantech)

連結:http://tech.meituan.com/intro_to_logistic_regression.html(點擊尾部閱讀原文前往)

邏輯回歸(Logistic Regression)是機器學習中的一種分類模型,由於算法的簡單和高效,在實際中應用非常廣泛。本文作為美團機器學習InAction系列中的一篇,主要關注邏輯回歸算法的數學模型和參數求解方法,最後也會簡單討論下邏輯回歸和貝葉斯分類的關係,以及在多分類問題上的推廣。

邏輯回歸問題

實際工作中,我們可能會遇到如下問題:

1、預測一個用戶是否點擊特定的商品

2、判斷用戶的性別

3、預測用戶是否會購買給定的品類

4、判斷一條評論是正面的還是負面的

這些都可以看做是分類問題,更準確地,都可以看做是二分類問題。同時,這些問題本身對美團也有很重要的價值,能夠幫助我們更好的了解我們的用戶,服務我們的用戶。要解決這些問題,通常會用到一些已有的分類算法,比如邏輯回歸,或者支持向量機。它們都屬於有監督的學習,因此在使用這些算法之前,必須要先收集一批標註好的數據作為訓練集。有些標註可以從log中拿到(用戶的點擊,購買),有些可以從用戶填寫的信息中獲得(性別),也有一些可能需要人工標註(評論情感極性)。另一方面,知道了一個用戶或者一條評論的標籤後,我們還需要知道用什麼樣的特徵去描述我們的數據,對用戶來說,可以從用戶的瀏覽記錄和購買記錄中獲取相應的統計特徵,而對於評論來說,最直接的則是文本特徵。這樣拿到數據的特徵和標籤後,就得到一組訓練數據:


其中是一個 m 維的向量,,y 在 {0, 1} 中取值。(本文用{1,0}表示正例和負例,後文沿用此定義。)

我們的問題可以簡化為,如何找到這樣一個決策函數,它在未知數據集上能有足夠好的表現。至於如何衡量一個二分類模型的好壞,我們可以用分類錯誤率這樣的指標: 。也可以用準確率,召回率,AUC等指標來衡量。

值得一提的是,模型效果往往和所用特徵密切相關。特徵工程在任何一個實用的機器學習系統中都是必不可少的,機器學習InAction系列已有一篇文章中對此做了詳細的介紹,本文不再詳細展開。

模型sigmoid 函數

在介紹邏輯回歸模型之前,我們先引入sigmoid函數,其數學形式是:


對應的函數曲線如下圖所示:

從上圖可以看到sigmoid函數是一個s形的曲線,它的取值在[0, 1]之間,在遠離0的地方函數的值會很快接近0/1。這個性質使我們能夠以概率的方式來解釋(後邊延伸部分會簡單討論為什麼用該函數做概率建模是合理的)。

決策函數

一個機器學習的模型,實際上是把決策函數限定在某一組條件下,這組限定條件就決定了模型的假設空間。當然,我們還希望這組限定條件簡單而合理。而邏輯回歸模型所做的假設是:


這裡的 \(g(h)\) 是上邊提到的 sigmoid 函數,相應的決策函數為:


選擇0.5作為閾值是一個一般的做法,實際應用時特定的情況可以選擇不同閾值,如果對正例的判別準確性要求高,可以選擇閾值大一些,對正例的召回要求高,則可以選擇閾值小一些。

參數求解

模型的數學形式確定後,剩下就是如何去求解模型中的參數。統計學中常用的一種方法是最大似然估計,即找到一組參數,使得在這組參數下,我們的數據的似然度(概率)越大。在邏輯回歸模型中,似然度可表示為:

取對數可以得到對數似然度:


另一方面,在機器學習領域,我們更經常遇到的是損失函數的概念,其衡量的是模型預測錯誤的程度。常用的損失函數有0-1損失,log損失,hinge損失等。其中log損失在單個數據點上的定義為
如果取整個數據集上的平均log損失,我們可以得到


即在邏輯回歸模型中,我們最大化似然函數和最小化log損失函數實際上是等價的。對於該優化問題,存在多種求解方法,這裡以梯度下降的為例說明。梯度下降(Gradient Descent)又叫作最速梯度下降,是一種迭代求解的方法,通過在每一步選取使目標函數變化最快的一個方向調整參數的值來逼近最優值。基本步驟如下:

選擇下降方向(梯度方向,

選擇步長,更新參數

重複以上兩步直到滿足終止條件

其中損失函數的梯度計算方法為:


沿梯度負方向選擇一個較小的步長可以保證損失函數是減小的,另一方面,邏輯回歸的損失函數是凸函數(加入正則項後是嚴格凸函數),可以保證我們找到的局部最優值同時是全局最優。此外,常用的凸優化的方法都可以用於求解該問題。例如共軛梯度下降,牛頓法,LBFGS等。

分類邊界

知道如何求解參數後,我們來看一下模型得到的最後結果是什麼樣的。很容易可以從sigmoid函數看出,當,y = 1,否則 y = 0。
是模型隱含的分類平面(在高維空間中,我們說是超平面)。所以說邏輯回歸本質上是一個線性模型,但是,這不意味著只有線性可分的數據能通過LR求解,實際上,我們可以通過特徵變換的方式把低維空間轉換到高維空間,而在低維空間不可分的數據,到高維空間中線性可分的機率會高一些。下面兩個圖的對比說明了線性分類曲線和非線性分類曲線(通過特徵映射)。

 

左圖是一個線性可分的數據集,右圖在原始空間中線性不可分,但是在特徵轉換
後的空間是線性可分的,對應的原始空間中分類邊界為一條類橢圓曲線。

正則化

當模型的參數過多時,很容易遇到過擬合的問題。這時就需要有一種方法來控制模型的複雜度,典型的做法在優化目標中加入正則項,通過懲罰過大的參數來防止過擬合:


一般情況下,取p=1或p=2,分別對應L1,L2正則化,兩者的區別可以從下圖中看出來,L1正則化(左圖)傾向於使參數變為0,因此能產生稀疏解。

 

實際應用時,由於我們數據的維度可能非常高,L1正則化因為能產生稀疏解,使用的更為廣泛一些。

延伸生成模型和判別模型

邏輯回歸是一種判別模型,表現為直接對條件概率P(y|x)建模,而不關心背後的數據分布P(x,y)。而高斯貝葉斯模型(Gaussian Naive Bayes)是一種生成模型,先對數據的聯合分布建模,再通過貝葉斯公式來計算樣本屬於各個類別的後驗概率,即:


通常假設P(x|y)是高斯分布,P(y)是多項式分布,相應的參數都可以通過最大似然估計得到。如果我們考慮二分類問題,通過簡單的變化可以得到:


如果 ,二次項會抵消,我們得到一個簡單的線性關係:


由上式進一步可以得到:


可以看到,這個概率和邏輯回歸中的形式是一樣的。這種情況下GNB 和 LR 會學習到同一個模型。實際上,在更一般的假設(P(x|y)的分布屬於指數分布族)下,我們都可以得到類似的結論。

多分類(softmax)

如果\(y\)不是在[0,1]中取值,而是在\(K\)個類別中取值,這時問題就變為一個多分類問題。有兩種方式可以出處理該類問題:一種是我們對每個類別訓練一個二元分類器(One-vs-all),當\(K\)個類別不是互斥的時候,比如用戶會購買哪種品類,這種方法是合適的。如果\(K\)個類別是互斥的,即 \(y = i\) 的時候意味著 \(y\) 不能取其他的值,比如用戶的年齡段,這種情況下 Softmax 回歸更合適一些。Softmax 回歸是直接對邏輯回歸在多分類的推廣,相應的模型也可以叫做多元邏輯回歸(Multinomial Logistic Regression)。模型通過 softmax 函數來對概率建模,具體形式如下:


而決策函數為:

對應的損失函數為:


類似的,我們也可以通過梯度下降或其他高階方法來求解該問題,這裡不再贅述。

應用

本文開始部分提到了幾個在實際中遇到的問題,這裡以預測用戶對品類的購買偏好為例,介紹一下美團是如何用邏輯回歸解決工作中問題的。該問題可以轉換為預測用戶在未來某個時間段是否會購買某個品類,如果把會購買標記為1,不會購買標記為0,就轉換為一個二分類問題。我們用到的特徵包括用戶在美團的瀏覽,購買等歷史信息,見下表

類別特徵用戶購買頻次,瀏覽頻次,時間,地理位置 ...品類銷量,購買用戶,瀏覽用戶 ...交叉購買頻次,瀏覽頻次,購買間隔 ...


其中提取的特徵的時間跨度為30天,標籤為2天。生成的訓練數據大約在7000萬量級(美團一個月有過行為的用戶),我們人工把相似的小品類聚合起來,最後有18個較為典型的品類集合。如果用戶在給定的時間內購買某一品類集合,就作為正例。喲了訓練數據後,使用Spark版的LR算法對每個品類訓練一個二分類模型,迭代次數設為100次的話模型訓練需要40分鐘左右,平均每個模型2分鐘,測試集上的AUC也大多在0.8以上。訓練好的模型會保存下來,用於預測在各個品類上的購買概率。預測的結果則會用於推薦等場景。

由於不同品類之間正負例分布不同,有些品類正負例分布很不均衡,我們還嘗試了不同的採樣方法,最終目標是提高下單率等線上指標。經過一些參數調優,品類偏好特徵為推薦和排序帶來了超過1%的下單率提升。

此外,由於LR模型的簡單高效,易於實現,可以為後續模型優化提供一個不錯的baseline,我們在排序等服務中也使用了LR模型。

總結

邏輯回歸的數學模型和求解都相對比較簡潔,實現相對簡單。通過對特徵做離散化和其他映射,邏輯回歸也可以處理非線性問題,是一個非常強大的分類器。因此在實際應用中,當我們能夠拿到許多低層次的特徵時,可以考慮使用邏輯回歸來解決我們的問題。

參考資料

Trevor Hastie et al. The elements of statistical learning

Andrew Ng, CS 229 lecture notes

C.M. Bishop, Pattern recognition and machine learning

Andrew Ng et al. On discriminative vs. generative classifiers:a comparison of logistic regression and naïve bayes

Wikipedia, http://en.wikipedia.org/wiki/Logistic_regression

●本文編號245,以後想閱讀這篇文章直接輸入245即可。

●輸入m可以獲取到文章目錄

算法與數據結構

推薦:《15個技術類公眾微信

涵蓋:程序人生、算法與數據結構、黑客技術與網絡安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

相關焦點

  • Logistic Regression 模型簡介
    本文作為美團機器學習InAction系列中的一篇,主要關注邏輯回歸算法的數學模型和參數求解方法,最後也會簡單討論下邏輯回歸和貝葉斯分類的關係,以及在多分類問題上的推廣。模型sigmoid 函數在介紹邏輯回歸模型之前,我們先引入sigmoid函數,其數學形式是:
  • 多分類邏輯回歸(Multinomial Logistic Regression)
    簡介在統計學裡,多類別邏輯回歸是一個將邏輯回歸一般化成多類別問題得到的分類方法。用更加專業的話來說,它就是一個用來預測一個具有類別分布的因變量不同可能結果的概率的模型。 另外,多類別邏輯回歸也有很多其它的名字,包括polytomous LR,multiclass LR,softmax regression,multinomial logit,maximum entropy classifier,conditional maximum entropy model。
  • 【理論+案例實戰】Python數據分析之邏輯回歸(logistic regression)
    -item)))    return ax = numpy.arange(-10, 10, 0.1)y = sigmoid(x)plt.plot(x,y)plt.yticks([0.0, 0.5, 1.0])plt.axhline(y=0.5, ls='dotted', color='k')plt.show()
  • Logistic回歸—多重共線性
    本文8045字〡15圖Multicollinearity is a common problem when estimating linear or generalized linear models, including logistic regression and Cox regression.
  • 線性模型(三)邏輯回歸
    邏輯回歸用戶是否會點擊廣告、貸款是否會逾期等這種二分因變量取值一般定義為0和1(一般把關注的事件編碼為1)或+1和-1,對於這類問題可以使用邏輯回歸建模模型原理拋硬幣的隨機事件中,拋一次硬幣的結果可能是正面或反面,設正面表示為1,概率為p,則該隨機事件屬於
  • Logistic regression in Python statsmodels
    後續會對照SPSS和R語言的邏輯回歸,討論statsmodels的結果,加深對邏輯回歸的理解。並比較Python機器學習庫sklearn實現邏輯回歸的差異。1. 邏輯回歸與odds邏輯回歸常用於二分類,用於估計某種事物的可能性。比如某用戶購買某商品的可能性,某病人患有某種疾病的可能性,以及某廣告被用戶點擊的可能性等。
  • 零基礎的同學如何用Stata做logistic回歸?
    前面兩期我們已經分享了一元線性回歸模型、多元線性回歸模型的操作方法,今天我們將分享logistic回歸的學習心得,希望大家都能有所收穫哦。logistic回歸:指的是一種廣義的線性回歸,在一定程度上和多重線性回歸分析有著相似的地方。例如:模型的形式基本上相同,都有待求參數。兩者的關係是:logistic回歸分類模型的預測函數是通過線性回歸模型的預測值的結果進一步接近真實標記的對數機率!從而能夠使線性回歸的預測值和分類任務的真實標記兩者關聯在一起!
  • 線性模型篇之Logistic Regression數學公式推導
    線性模型(Linear Model)是機器學習中應用最廣泛的模型,指通過樣本 特徵的線性組合來進行預測的模型。
  • Logistic 回歸101
    Logistc 回歸    今天,我們首先聊一聊最簡單的分類問題——二分類問題。二分類問題並不是要看看誰比較「二」, 純粹只是把數據分為兩類。    既然我們上個系列詳細地聊了聊線性回歸模型,我們首先來聊一聊最重要的線性二分類器之一—— logistic 回歸模型。
  • 機器學習中的邏輯回歸
    Question 2Suppose you have the following training set, and fit a logistic regression classifier hθ(x)=g(θ0+θ1x1+θ2x2).
  • 【算法】逐步在Python中構建Logistic回歸
    2 如何用Python平臺做邏輯回歸?logistic回歸是一種機器學習分類算法,用於預測分類因變量的概率。 在邏輯回歸中,因變量是一個二進位變量,包含編碼為1(是,成功等)或0(不,失敗等)的數據。 換句話說,邏輯回歸模型基於X的函數預測P(Y = 1)。
  • 乾貨 | 對數線性模型之 Logistic 回歸、SoftMax 回歸和最大熵模型
    首先以概率的方式解釋了logistic回歸為什麼使用sigmoid函數和對數損失,然後將二分類擴展到多分類,導出sigmoid函數的高維形式softmax函數對應softmax回歸,最後最大熵模型可以看作是softmax回歸的離散型版本,logistic回歸和softmax回歸處理數值型分類問題,最大熵模型對應處理離散型分類問題。
  • 從頭開始:用Python實現帶隨機梯度下降的Logistic回歸
    logistic 回歸是一種著名的二元分類問題的線性分類算法。它容易實現、易於理解,並在各類問題上有不錯的效果,即使該方法的原假設與數據有違背時。在本教程中,你將了解如何在 Python 中實現隨機梯度下降的 logistic 回歸算法。
  • Logistic 回歸-原理及應用
    上一篇文章介紹了線性回歸模型,它用於處理回歸問題。
  • 醫學統計與R語言:隨機森林與Logistic預測(randomForest vs Logistic regression)
    If a factor, classification is assumed, otherwise regression is assumed. If omitted, randomForest will run in unsupervised mode.ntree:      Number of trees to grow.
  • Logistic回歸分析之二元Logistic回歸
    Logistic回歸分析用於研究X對Y的影響,並且對X的數據類型沒有要求,X可以為定類數據,也可以為定量數據,但要求Y必須為定類數據,並且根據Y的選項數,使用相應的數據分析方法。本次內容將針對二元logistic(logit)回歸進行說明,後續兩篇文章將分別講解有序logistic(logit)和多分類logistic(logit)回歸。
  • 各種機器學習算法的應用場景分別是什麼(比如樸素貝葉斯、決策樹、K 近鄰、SVM、邏輯回歸最大熵模型)?
    當然風控也要進行細分,主要應用機器學習建模的細分場景如下:信用卡交易反欺詐:分類任務,GBDT算法+LR邏輯回歸;信用卡申請反欺詐:分類任務,GBDT算法+LR邏輯回歸;貸款申請反欺詐:分類任務,GBDT算法+LR邏輯回歸;是的沒錯,目前在金融領域涉及到風控的幾乎都是GBDT+LR,目前市場上還沒有哪一家金融科技公司做反欺詐
  • 有序Logistic回歸實例分析(Ordinal Regression)
    如果研究X對於Y的影響,Y為定量數據則可以使用線性回歸分析。如果Y是定類數據,此時則需要使用Logit(logistic)回歸分析。Logit回歸共分為三種,分別是二元Logit(Logistic)回歸、多分類Logit(Logistic)回歸,有序Logit(Logistic)回歸(也稱Oridinal回歸),此三個方法的區別在於因變量Y的數據類型。
  • NLP03:基於TF-IDF和LogisticRegression的文本分類
    LogisticRegression基本原理2.1 什麼是LRlogistic回歸雖然說是回歸,但確是為了解決分類問題,是二分類任務的首選方法,簡單來說,輸出結果不是0就是1。邏輯回歸(Logistic Regression)與線性回歸(Linear Regression)都是一種廣義線性模型(generalized linear model)。
  • 一文詳述:觀察性研究中的logistic回歸分析思路
    logistic回歸 假定有m個自變量X1,X2,…,Xm,logistic回歸模型的基本形式可表達為: 只從數據本身考慮的話,logistic回歸模型都是包括一個分類因變量及若干自變量(可以是分類變量,也可以是連續變量),