0x00 前言
邏輯回歸(Logistic Regression,LR)。在Kaggle競(jìng)賽的統(tǒng)計(jì)中,LR算法以63.5%的出產(chǎn)率,榮獲各領(lǐng)域中“出場(chǎng)率最高的算法”這一殊榮。在實(shí)際場(chǎng)景中,邏輯回歸同樣應(yīng)用廣泛,大到國(guó)家各項(xiàng)經(jīng)濟(jì)政策的制定,小到計(jì)算廣告CTR,都能看到LR算的身影。
除了應(yīng)用廣泛外,LR的建模過(guò)程還體現(xiàn)了數(shù)據(jù)建模中很重要的思想: 對(duì)問(wèn)題劃分層次,并利用非線(xiàn)性變換和線(xiàn)性模型的組合,將未知的復(fù)雜問(wèn)題分解為已知的簡(jiǎn)單問(wèn)題 。因此,我們可以說(shuō):理解好邏輯回歸的細(xì)節(jié),就掌握了數(shù)據(jù)建模的精髓。
0x01 什么是邏輯回歸
1.1 線(xiàn)性回歸能解決分類(lèi)問(wèn)題么?
其實(shí),線(xiàn)性回歸是不能解決分類(lèi)問(wèn)題的。因?yàn)槲覀冊(cè)谑褂镁€(xiàn)性回歸模型時(shí),我們實(shí)際上做了3個(gè)假設(shè)(實(shí)際上有更多的假設(shè),這里只討論最基本的三個(gè)):
- 因變量和自變量之間呈線(xiàn)性相關(guān)。
- 自變量與干擾項(xiàng)相互獨(dú)立。
- 沒(méi)被線(xiàn)性模型捕捉到的隨機(jī)因素服從正態(tài)分布。
從理論上來(lái)說(shuō),任何數(shù)據(jù)放在任何模型里都會(huì)得到相應(yīng)的參數(shù)估計(jì),進(jìn)而通過(guò)模型對(duì)數(shù)據(jù)進(jìn)行預(yù)測(cè)。但是這并不一定能保證模型效果,有時(shí)會(huì)得到“錯(cuò)且無(wú)用”的模型,因此建模的過(guò)程中需要不斷提出假設(shè)和檢驗(yàn)假設(shè)。
1.2 用邏輯回歸解決分類(lèi)問(wèn)題
有些算法,表面上叫“XX回歸”,背地里卻是解決分類(lèi)問(wèn)題的。
其原理是將 樣本的特征 和 樣本發(fā)生的概率 聯(lián)系起來(lái),即, 預(yù)測(cè)的是樣本發(fā)生的概率是多少。由于概率是一個(gè)數(shù),因此被叫做“邏輯回歸”。
在線(xiàn)性回歸算法的例子中,我們進(jìn)行房?jī)r(jià)預(yù)測(cè)得到的結(jié)果值,就是我們預(yù)測(cè)的房?jī)r(jià),是一個(gè)數(shù)值。
但是我們?cè)谶壿嫽貧w算法中,得到的預(yù)測(cè)值是一個(gè)概率,然后在概率的基礎(chǔ)上多做一步操作,得到分類(lèi)的結(jié)果。比如某銀行使用邏輯回歸做風(fēng)控模型,先設(shè)置一個(gè)閾值0.5,如果得到它逾期的概率大于0.5,就不放款;否則就放款。對(duì)于“放款” or “不放款”來(lái)說(shuō),實(shí)際上是一個(gè)標(biāo)準(zhǔn)的分類(lèi)問(wèn)題。
通過(guò)這個(gè)小例子我們可以看到, 在回歸問(wèn)題上再多做一步,就可以作為分類(lèi)算法來(lái)使用了。邏輯回歸只能解決二分類(lèi)問(wèn)題,如果是多分類(lèi)問(wèn)題,LR本身是不支持的。
對(duì)于線(xiàn)性回歸來(lái)說(shuō),通過(guò)傳遞的自變量x來(lái)計(jì)算預(yù)測(cè)值:。其中實(shí)際上就是參數(shù)與樣本的矩陣相乘,。那我們可不可以找到一組參數(shù),與特征矩陣相乘,直接得到表示概率的結(jié)果呢?
單單從應(yīng)用的角度來(lái)說(shuō),是可以的,但是并不好。這是因?yàn)?線(xiàn)性回歸得到值是沒(méi)有限制的,值域從負(fù)無(wú)窮到正無(wú)窮的值。而對(duì)于概率來(lái)說(shuō),其值域?yàn)閇0,1],是有限制的。如果直接使用線(xiàn)性回歸得到的結(jié)果,使得最終擬合的結(jié)果可信程度較差。
那么下面我們就看一看,邏輯回歸背后的數(shù)學(xué)原理。
0x02 LR算法數(shù)學(xué)推導(dǎo)
2.1 決策背后的博弈
邏輯回歸使用什么樣的方式來(lái)得到一個(gè)事件發(fā)生的概率值的呢?分類(lèi)的背后又是什么呢?
以銀行理財(cái)產(chǎn)品營(yíng)銷(xiāo)場(chǎng)景為例,對(duì)于銀行來(lái)說(shuō),客戶(hù)只有“買(mǎi)”和“不買(mǎi)”兩種行為,但是這個(gè)行為實(shí)際上是客戶(hù)在接到營(yíng)銷(xiāo)行為,如電話(huà)營(yíng)銷(xiāo)、短信營(yíng)銷(xiāo)之后,經(jīng)過(guò)內(nèi)心博弈產(chǎn)生的最終結(jié)果。
客戶(hù)為什么會(huì)做出“買(mǎi)”或“不買(mǎi)”這樣的被分類(lèi)的行為?如果客戶(hù)手里有一筆暫時(shí)不會(huì)動(dòng)用的閑錢(qián),且他希望能夠通過(guò)投資行為獲利,并且對(duì)盈利效果表示認(rèn)可,則客戶(hù)會(huì)考慮購(gòu)買(mǎi)理財(cái)產(chǎn)品。但是反過(guò)來(lái),如果客戶(hù)沒(méi)有錢(qián),或者他有其他更好的投資渠道,或者厭惡投資風(fēng)險(xiǎn),那么客戶(hù)就不會(huì)購(gòu)買(mǎi)。從經(jīng)濟(jì)學(xué)的角度來(lái)說(shuō),購(gòu)買(mǎi)理財(cái)產(chǎn)品這一行為,既能給客戶(hù)帶來(lái)正效用,也能給客戶(hù)帶來(lái)負(fù)效用。 當(dāng)客戶(hù)主觀認(rèn)為正效用大于負(fù)效用時(shí),可就是購(gòu)買(mǎi)行為帶來(lái)的整體效用大于0時(shí),客戶(hù)就會(huì)購(gòu)買(mǎi),反之則不然 。
2.2 博弈中的隱含變量
那么我們從數(shù)學(xué)角度出發(fā),分析上述場(chǎng)景:假設(shè)有自變量集合,這些參數(shù)表示這種特征,決定購(gòu)買(mǎi)行為對(duì)客戶(hù)的效用,包括正效用和負(fù)效用。我們將客戶(hù)的購(gòu)買(mǎi)行為記為y,其中y=1表示客戶(hù)購(gòu)買(mǎi)理財(cái)產(chǎn)品;y=0表示客戶(hù)沒(méi)有購(gòu)買(mǎi)。于是可以得到下面的公式:
如果,我們 假設(shè)正負(fù)效用函數(shù)與自變量特征參數(shù)成線(xiàn)性相關(guān) ,則根據(jù)可以得出:。其中是相互獨(dú)立的隨機(jī)變量,且都服從正態(tài)分布。
在得到正負(fù)效用線(xiàn)性函數(shù)之后,就可以 用正效用減去負(fù)效用的解是否大于0作為分類(lèi)依據(jù) 。令,則可以得到:。如果我們將其轉(zhuǎn)換為分類(lèi)問(wèn)題,則可以得到階梯函數(shù)如下:
更進(jìn)一步,我們將上面的函數(shù)轉(zhuǎn)變?yōu)榍蟾怕剩纯蛻?hù)購(gòu)買(mǎi)理財(cái)產(chǎn)品的概率如下:
其中, 是隨機(jī)變量的累積分布函數(shù) ,表示客戶(hù)購(gòu)買(mǎi)的比例。
這個(gè)模型在學(xué)術(shù)上被稱(chēng)作是 probit回歸 (雖然是名字中有“回歸”兩個(gè)字,但是實(shí)際上解決的還是分類(lèi)問(wèn)題)。
在模型搭建的過(guò)程中,我們假設(shè)了客戶(hù)內(nèi)心博弈的正負(fù)效用變量:,因此這類(lèi)隱藏變量模型(latent variable model);而正負(fù)效用變量:被稱(chēng)為隱藏變量(latent variable)。
由此可見(jiàn), 對(duì)于一個(gè)分類(lèi)問(wèn)題,由于“窗口效用”,我們只能看見(jiàn)客戶(hù)的購(gòu)買(mǎi)行為,但是在分類(lèi)的背后,是隱藏變量之間的博弈,我們通過(guò)搭建隱藏變量的模型,來(lái)求出客戶(hù)購(gòu)買(mǎi)的概率 。
2.3 sigmoid函數(shù)與邏輯回歸
在上一節(jié)我們得到了probit回歸在數(shù)學(xué)上是比較完美的,但是正態(tài)分布的累積分布函數(shù),其表達(dá)形式很復(fù)雜(復(fù)雜到懶得把公式寫(xiě)出來(lái)),且沒(méi)有解析表達(dá)式。因此直接在probit回歸上做參數(shù)估計(jì)是比較困難的。但是好在我們可以對(duì)其做近似,讓其在數(shù)學(xué)上更加簡(jiǎn)潔。
此時(shí),神奇的數(shù)學(xué)家們發(fā)現(xiàn):正態(tài)分布在線(xiàn)性變換下保持穩(wěn)定,而邏輯分布可以很好地近似正態(tài)分布。因此可以使用標(biāo)準(zhǔn)邏輯分布的累積分布函數(shù)來(lái)替換正態(tài)分布的累積分布函數(shù)。
標(biāo)準(zhǔn)邏輯分布的概率密度函數(shù)為,對(duì)應(yīng)的積累分布函數(shù)為:
在學(xué)術(shù)界被稱(chēng)為sigmoid函數(shù),是在數(shù)據(jù)科學(xué)領(lǐng)域,特別是神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)領(lǐng)域中非常重要的函數(shù)!。其圖像如下圖所示,呈S狀,因此也被稱(chēng)為“S函數(shù)”。當(dāng)t趨近于正無(wú)窮時(shí),趨近于0,則趨近于1;當(dāng)t趨近于負(fù)無(wú)窮時(shí),趨近于正無(wú)窮,則趨近于0。因此該函數(shù)的值域?yàn)?0,1)。
兩種不同的效用函數(shù)(假定他們都滿(mǎn)足線(xiàn)性回歸模型的假設(shè))相互競(jìng)爭(zhēng)時(shí),其中某一方最終勝出的概率分布在數(shù)學(xué)上可近似為sigmoid函數(shù)。通俗講:sigmoid函數(shù)表述了某一方競(jìng)爭(zhēng)勝出的概率。
將效用函數(shù)之差(同樣是線(xiàn)性回歸模型)帶入sigmoid函數(shù)中,當(dāng)t>0時(shí),得到的結(jié)果是概率值p>0.5;當(dāng)t<0時(shí),得到的結(jié)果是p<0.5。因此,實(shí)際上我們得到是這樣的公式:
至此,大名鼎鼎的邏輯回歸模型(logit regression)如下,其中表示客戶(hù)特征,表示模型參數(shù):
0xFF 總結(jié)
在本篇文章中,我們學(xué)習(xí)了邏輯回歸的算法模型。
首先,邏輯回歸是解決分類(lèi)問(wèn)題的,本質(zhì)是求概率再分類(lèi)。在分類(lèi)結(jié)果的背后是隱藏變量的博弈,我們認(rèn)為隱藏變量與特征是線(xiàn)性相關(guān)的,因此就可以對(duì)隱藏變量之差求概率(得到隨機(jī)變量的累積分布函數(shù)),得到probit回歸模型。為了使數(shù)學(xué)公式更為簡(jiǎn)單,使用sigmoid函數(shù)去近似,最終得到邏輯回歸模型:
根據(jù)建模過(guò)程,我們已經(jīng)得到了邏輯回歸模型,下一步就是找到損失函數(shù),去盡可能地?cái)M合數(shù)據(jù)。
那么對(duì)于給定的樣本數(shù)據(jù)集X,y,我們?nèi)绾握业揭唤M參數(shù),使得用這樣的方式,可以最大程度獲得樣本數(shù)據(jù)集X對(duì)應(yīng)的分類(lèi)輸出y?