在繼續(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ù) ,然后把
對應(yīng)的
用柱狀圖畫出來,你會(huì)發(fā)現(xiàn)它符合正態(tài)分布:

在實(shí)際應(yīng)用中,我們可以把上面的 替換為某個(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ì)算方法:
其實(shí)也很容易理解,依然是上面的例子,中國隊(duì)勝利的概率為 p=0.1,中國隊(duì)勝利的 log(odds) 為
我們把等式兩邊同時(shí)求一個(gè) 次方,算出 p 值,即
這就是我們所熟知的邏輯回歸,等式右邊的表達(dá)式通常被稱為 sigmoid 函數(shù),而 log(odds) 又被稱為 logit 函數(shù),它們之間的轉(zhuǎn)換關(guān)系如下圖所示,其中 x 可看成特征向量。

從圖中可以看出,如果把邏輯回歸轉(zhuǎn)化為 log(odds),有兩點(diǎn)明顯的變化:
- log(odds) 是一條直線
- 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)越大,模型越好。
對于樣本 ,當(dāng)它為正樣本時(shí),對應(yīng)的概率為
,而當(dāng)它為負(fù)樣本時(shí),對應(yīng)的概率為
,為方便計(jì)算,我們需要只用一個(gè)式子來表示這兩種情況:
這里 y 表示樣本的取值,因?yàn)?y 只有兩種取值,0 和 1,當(dāng) y 為正樣本 1 時(shí),帶入上式得 ,而當(dāng) y 為負(fù)樣本 0 時(shí),帶入上式得
,于是每個(gè)樣本的概率的表現(xiàn)形式得到了統(tǒng)一,這樣總的 Likelihood 就很好表示了:
上式中,n 表示有 n 條樣本,下標(biāo) i 表示第 i 條樣本,x 為特征向量,y 為觀察到的目標(biāo)值, 為特征向量的權(quán)重,也是模型的參數(shù),L 即為所有樣本的 Likelihood,也是邏輯回歸中的 Loss 函數(shù),我們的目標(biāo)是調(diào)整
, 以使 L 最大。
通常我們會(huì)把連乘通過 log 轉(zhuǎn)換為求和,并取負(fù)號(hào),把求最大值轉(zhuǎn)換為求最小值,如下:
接下來就是對 Loss 求梯度了,然后根據(jù)梯度來修改參數(shù),并不斷迭代收斂的過程,為了減少大家閱讀時(shí)的不適感,這里就不繼續(xù)推導(dǎo)了, 不過沒有推導(dǎo)過的同學(xué),還是建議自己在草稿上演算一下,可加深自己的理解。
邏輯回歸和貝葉斯分類
貝葉斯分類的核心依然來自于經(jīng)典的貝葉斯公式:
在分類問題中,我們要求的實(shí)際上是當(dāng)樣本 x 出現(xiàn)時(shí),它屬于分類 c 的概率,即上式的 p(c|x)。等式右邊的 表示為 c 之外的其他分類,p(c) 和
可以理解為先驗(yàn)概率,一般情況下你可以把它們設(shè)置為均等的,如我們可以把二分類的先驗(yàn)概率都設(shè)為 0.5。
接著,p(x|c) 可表示為在 c 分類中觀察到 x 樣本出現(xiàn)的概率,同理, 則為在
分類中觀察到 x 樣本出現(xiàn)的概率。于是,p(c|x) 就是一個(gè)后驗(yàn)概率。
理解了貝葉斯分類后,我們把等式右邊的分子分母同時(shí)除以 ,如下:
到此,這個(gè)式子是不是像極了 sigmoid 函數(shù),我們設(shè):
再設(shè)先驗(yàn)概率相等,同時(shí)在等式兩邊取 log,便得到:
將負(fù)號(hào)移到右邊:
最后將 z 帶回原式:
結(jié)論是,邏輯回歸實(shí)際上就是貝葉斯分類,它們都是一個(gè)后驗(yàn)概率模型。
總結(jié)
本文我們主要通過 log(odds) 和貝葉斯分類這兩個(gè)概念來學(xué)習(xí)了邏輯回歸算法的原理,且了解了邏輯回歸是采用 Maximum Likelihood 來作為其損失函數(shù)的,希望你和我一樣,通過本文能夠?qū)壿嫽貧w有更深刻的理解。
參考:
相關(guān)文章: