深入理解邏輯回歸算法(Logistic Regression)

在繼續(xù)學(xué)習(xí) GBDT(Gradient Boosting Dicision Tree) 決策樹前,我們需要先來了解下邏輯回歸算法(Logistic Regression),因?yàn)?GBDT 較為復(fù)雜,但在邏輯回歸的基礎(chǔ)上,理解起來會(huì)容易些。

邏輯回歸是機(jī)器學(xué)習(xí)中最為基礎(chǔ)的算法,也是工業(yè)界使用得最多的算法之一,究其原因,在于其簡單、高效以及實(shí)用。

雖然線性回歸也很簡單,但卻不實(shí)用,是因?yàn)檫壿嫽貧w本質(zhì)上是一個(gè)概率模型,在實(shí)際應(yīng)用中,預(yù)測一個(gè) 0-1 之間的概率值要比預(yù)測一個(gè)實(shí)數(shù)的場景要多得多,比如在廣告業(yè)務(wù)中,我們往往求的是用戶點(diǎn)擊一條廣告的概率。

邏輯回歸是一個(gè)概率模型,但通過一定的轉(zhuǎn)換,我們依然可以把該模型的預(yù)測范圍從 0-1 轉(zhuǎn)換到實(shí)數(shù)范圍,所以它和線性回歸都可以被歸納到「通用的線性模型」(Generalized Linear Model)中,要理解這種轉(zhuǎn)換,我們需要引入一個(gè)概念:odds 和 log(odds)。

odds 和 log(odds)

odds 是幾率、勝算的意思,據(jù)維基百科記載,這個(gè)概念主要在賭博和統(tǒng)計(jì)學(xué)領(lǐng)域中使用,且它的歷史可以追溯到 16 世紀(jì),早于概率論的發(fā)展時(shí)期。

odds 很容易理解,拿足球比賽作為例子,假設(shè)中國隊(duì)打巴西隊(duì),中國隊(duì)的贏面是 1,輸面是 99,那么中國隊(duì)贏的 odds 為 1/99,輸?shù)?odds 就是 99,odds 和概率的區(qū)別也很容易通過這個(gè)例子看出來,從概率的角度講,中國隊(duì)贏巴西隊(duì)的概率為 0.01,輸?shù)母怕蕿?0.99。

上面的例子還可以看出,中國隊(duì)贏的 odds 和巴西隊(duì)贏的 odds 落在不同的取值范圍中,中國隊(duì)贏的 odds 的落在 (0,1) 區(qū)間,而巴西隊(duì)落在 (1,∞) 區(qū)間;也就是說,中國隊(duì)和巴西隊(duì)比賽,兩個(gè)隊(duì)伍的輸贏程度應(yīng)該是相等的,但 1/99 和 99 這兩個(gè)數(shù),它們的尺度不同,就很難對此做出直觀的判斷;而 log(odds) 就是用來解決該問題的:

中國隊(duì)贏 巴西隊(duì)贏
odds 1/99 99
log(odds) -4.60 4.60

可以看到,對 odds 加了 log 后,中國隊(duì)贏和巴西隊(duì)贏這兩種情況的 log(odds) 的絕對值都是 4.6,即兩者的輸贏程度相同,一眼就可以看出來;且當(dāng)我們算贏面的 log(odds) 時(shí),通過正負(fù)號(hào)就可以判斷贏面多還是贏面少,如 -4.6 就表示中國隊(duì)的贏面是少的;此外,當(dāng) log(odds) 為 0 時(shí),贏面和輸面一樣多。

log(odds) 是一個(gè)很有用的指標(biāo),你可以寫一個(gè)程序,不斷產(chǎn)生 0-100 之間的隨機(jī)數(shù) x,然后把 x 對應(yīng)的 \log(\frac{x}{100-x}) 用柱狀圖畫出來,你會(huì)發(fā)現(xiàn)它符合正態(tài)分布:

在實(shí)際應(yīng)用中,我們可以把上面的 x 替換為某個(gè)網(wǎng)站的點(diǎn)擊,或購買等指標(biāo),根據(jù)歷史數(shù)據(jù)算出對應(yīng)的 log(odds) 分布,再找一堆相關(guān)的特征來擬合這個(gè)分布,這就是我們所說的 CTR(Click Through Ratio)或 CVR(Conversion Rate) 模型,后續(xù)來了一個(gè)用戶,我們把他相關(guān)的特征帶入到模型中,算出相應(yīng)的 log(odds),就是這個(gè)用戶會(huì)點(diǎn)擊或購買某個(gè)商品的幾率。

至此,有同學(xué)會(huì)問,這和邏輯回歸有什么關(guān)系?實(shí)際上,log(odds) 還有一種計(jì)算方法:
\log(odds) = \log(\frac{p}{1-p})
其實(shí)也很容易理解,依然是上面的例子,中國隊(duì)勝利的概率為 p=0.1,中國隊(duì)勝利的 log(odds) 為
\begin{aligned} \log(odds) &= \log(\frac{1}{99}) \\&= \log(\frac{\frac{1}{100}}{\frac{99}{100}}) \\&= \log(\frac{\frac{1}{100}}{1-\frac{1}{100}}) \\&=\log(\frac{p}{1-p}) \end{aligned}
我們把等式兩邊同時(shí)求一個(gè) e 次方,算出 p 值,即
\begin{aligned} p &= \frac{e^{\log(odds)}}{1+e^{\log(odds)}} \\&= \frac{1}{1+e^{-\log(odds)}} \end{aligned}

這就是我們所熟知的邏輯回歸,等式右邊的表達(dá)式通常被稱為 sigmoid 函數(shù),而 log(odds) 又被稱為 logit 函數(shù),它們之間的轉(zhuǎn)換關(guān)系如下圖所示,其中 x 可看成特征向量。

從圖中可以看出,如果把邏輯回歸轉(zhuǎn)化為 log(odds),有兩點(diǎn)明顯的變化:

  1. log(odds) 是一條直線
  2. log(odds) 可以將邏輯回歸的值域從 (0, 1) 拓寬到 (-∞, +∞)

突然有點(diǎn)像線性回歸了,但和線性回歸的差異是,邏輯回歸的樣本只有 0 和 1 兩種取值,轉(zhuǎn)換為 log(odds) 正好是 -∞ 和 +∞,這樣你使用 MSE 來擬合時(shí),得到的 Loss 永遠(yuǎn)都是個(gè)無窮大,所以用線性回歸的方法來擬合邏輯回歸是不可行的。在邏輯回歸中,我們使用 Maximu Likelihood 來作為模型的 Loss。

Maximum Likelihood

Maximum Likelihood(最大釋然估計(jì))也是很直觀的一個(gè)概念,即我現(xiàn)在有一堆正樣本和負(fù)樣本,我用一條怎樣的邏輯回歸曲線去擬合這些樣本,能使它們所得到概率的乘積最大。

舉個(gè)例子,假設(shè)下圖左邊是一個(gè)關(guān)于體重和肥胖的實(shí)驗(yàn)數(shù)據(jù),其中綠色點(diǎn)標(biāo)記的是正常,而紅色點(diǎn)為肥胖,現(xiàn)在要使用邏輯回歸對這些樣本建模,假設(shè)最佳模型如下圖右邊所示:

通過該模型的計(jì)算,假設(shè)綠色樣本對應(yīng)的肥胖的概率由左至右分別為 0.01、0.02、0.03 和 0.9,綠色是正常樣本,需要計(jì)算他們不是肥胖的概率,所以要用 1 減去這些值,即: 0.99、0.98、0.97 和 0.1;同理,再分別計(jì)算紅色樣本是肥胖的概率為 0.1、0.97、0.98 和 0.99,因?yàn)樵撉€已經(jīng)是最優(yōu)的了,所以這 8 個(gè)點(diǎn)所對應(yīng)的概率的乘積——0.0089,即是所有可能的模型中,能得到的最大值??梢?,Maximum Likelihood 真的就只是其字面意思了。

線性回歸中,我們使用 MSE 來衡量線性模型的好壞,MSE 越小,說明擬合得越好;而在邏輯回歸中,使用的正是 Maximum Likelihood,該指標(biāo)越大,模型越好。

對于樣本 x_i,當(dāng)它為正樣本時(shí),對應(yīng)的概率為 p(x_i),而當(dāng)它為負(fù)樣本時(shí),對應(yīng)的概率為 1-p(x_i),為方便計(jì)算,我們需要只用一個(gè)式子來表示這兩種情況:
p_i = y_i\cdot p(x_i) + (1-y_i)\cdot (1-p(x_i))
這里 y 表示樣本的取值,因?yàn)?y 只有兩種取值,0 和 1,當(dāng) y 為正樣本 1 時(shí),帶入上式得 p_i=p(x_i),而當(dāng) y 為負(fù)樣本 0 時(shí),帶入上式得 p_i=1-p(x_i),于是每個(gè)樣本的概率的表現(xiàn)形式得到了統(tǒng)一,這樣總的 Likelihood 就很好表示了:
\begin{aligned} {\arg\max} L(\theta) &= \prod_{i=1}^{n}p_i \\ &= \prod_{i=1}^{n}[y_i\cdot p(x_i) + (1-y_i)\cdot (1-p(x_i))] \end{aligned}
上式中,n 表示有 n 條樣本,下標(biāo) i 表示第 i 條樣本,x 為特征向量,y 為觀察到的目標(biāo)值,\theta 為特征向量的權(quán)重,也是模型的參數(shù),L 即為所有樣本的 Likelihood,也是邏輯回歸中的 Loss 函數(shù),我們的目標(biāo)是調(diào)整 \theta, 以使 L 最大。

通常我們會(huì)把連乘通過 log 轉(zhuǎn)換為求和,并取負(fù)號(hào),把求最大值轉(zhuǎn)換為求最小值,如下:
\begin{aligned} \arg\min (-\log(L(\theta))) &= -\sum_{i=1}^{n}\log(p_i) \\ &= -\sum_{i=1}^{n}[y_i\cdot \log(p(x_i)) + (1-y_i)\cdot \log((1-p(x_i)))] \end{aligned}
接下來就是對 Loss 求梯度了,然后根據(jù)梯度來修改參數(shù),并不斷迭代收斂的過程,為了減少大家閱讀時(shí)的不適感,這里就不繼續(xù)推導(dǎo)了, 不過沒有推導(dǎo)過的同學(xué),還是建議自己在草稿上演算一下,可加深自己的理解。

邏輯回歸和貝葉斯分類

貝葉斯分類的核心依然來自于經(jīng)典的貝葉斯公式:
p(c|x) = \frac{p(x|c)p(c)}{p(x|c)p(c)+p(x|\bar{c})p(\bar{c})}
在分類問題中,我們要求的實(shí)際上是當(dāng)樣本 x 出現(xiàn)時(shí),它屬于分類 c 的概率,即上式的 p(c|x)。等式右邊的 \bar{c} 表示為 c 之外的其他分類,p(c) 和 p(\bar{c}) 可以理解為先驗(yàn)概率,一般情況下你可以把它們設(shè)置為均等的,如我們可以把二分類的先驗(yàn)概率都設(shè)為 0.5。

接著,p(x|c) 可表示為在 c 分類中觀察到 x 樣本出現(xiàn)的概率,同理,p(x|\bar{c}) 則為在 \bar{c} 分類中觀察到 x 樣本出現(xiàn)的概率。于是,p(c|x) 就是一個(gè)后驗(yàn)概率。

理解了貝葉斯分類后,我們把等式右邊的分子分母同時(shí)除以 p(x|c)p(c),如下:
p(c|x) = \frac{1}{1+\frac{p(x|\bar{c})p(\bar{c})}{p(x|c)p(c)}}
到此,這個(gè)式子是不是像極了 sigmoid 函數(shù),我們設(shè):
e^{-z} = \frac{p(x|\bar{c})p(\bar{c})}{p(x|c)p(c)}
再設(shè)先驗(yàn)概率相等,同時(shí)在等式兩邊取 log,便得到:
-z = \log(\frac{p(x|\bar{c})}{p(x|c)})
將負(fù)號(hào)移到右邊:
z=\log(\frac{p(x|c)}{p(x|\bar{c})}) = \log(odds)
最后將 z 帶回原式:
p(c|x) = \frac{1}{1+e^{-\log(odds)}}
結(jié)論是,邏輯回歸實(shí)際上就是貝葉斯分類,它們都是一個(gè)后驗(yàn)概率模型。

總結(jié)

本文我們主要通過 log(odds) 和貝葉斯分類這兩個(gè)概念來學(xué)習(xí)了邏輯回歸算法的原理,且了解了邏輯回歸是采用 Maximum Likelihood 來作為其損失函數(shù)的,希望你和我一樣,通過本文能夠?qū)壿嫽貧w有更深刻的理解。

參考:

相關(guān)文章:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容