Logistic回歸分類算法詳解

本節(jié)教程我們來討論另外一種被廣泛應用的分類算法— Logistic 回歸。在講解這個概念之前,我們先來聊一個題外話—“Logistic regression”的中文譯法?!皉egression”譯作“回歸”,并沒有什么異議,而“Logistic”的翻譯可謂五花八門。有譯作“邏輯斯諦”的,這種音譯中規(guī)中矩,自然不能算錯,但不夠形象。

更多文獻直接將其譯作“邏輯”,這種譯法可能就有點誤導大家了?!斑壿嫛保╨ogic)本來是一個哲學概念,它注重的是推論和證明,而“Logistic”主要用于機器學習領域的分類。二者幾乎無關聯(lián),如此翻譯,至少違反了“信達雅”中的“信”—不夠確切。

可能你要問了,我們是在討論“機器學習”,為何要糾結“Logistic”一詞的譯法呢?并不是因為我們“好為人師”,而是這關系到對“Logistic 回歸”內涵的理解。下面我們就從為什么需要 Logistic 回歸開始說起。

為什么需要Logistic回歸

首先,需要強調的是,Logistic 回歸也屬于監(jiān)督學習之列,雖然帶有“回歸”二字,但它卻是名副其實的“分類”算法。通過前面的學習,我們知道,分類與傳統(tǒng)意義上的回歸最大的不同在于,分類算法輸出的是離散的標簽值(比如花的品類),而回歸輸出的是連續(xù)的實數(shù)(比如花瓣長度)。

前面我們已經提到,線性回歸模型的優(yōu)點在于,數(shù)據(jù)擬合簡單直觀,輸出結果解釋力強,但在部分場景下,它也會捉“捉襟見肘”,難以勝任。

下面我們來看這樣一個場景。比如說,在一家服裝店里,商家想根據(jù)顧客的各類特征(自變量 x),包括但不限于性別、年齡、穿著習慣、談吐、顏值等,來預測自己的銷售額(因變量 y)。顯然,銷售額是連續(xù)的實數(shù)值,因此這個模型構建起來,就是一個地地道道的線性回歸模型。

y=w0+w1x1+w2x2+...+wmxm

其中,w0 表示截距,wi 表示與各個特征 xi 相匹配的權值。相比于預測店鋪銷售額這類高層次問題,銷售員可能更關注一個問題:光臨店鋪的顧客“買”還是“不買”商品。注意,此時目標輸出變量只有兩類值:0(代表不買)和 1(代表買),這顯然是一個二分類問題。

其實,這也是一個很重要的問題。拓展一下,在整個互聯(lián)網(wǎng)電商世界,聰明的商家無不是通過收集大量的用戶標簽(如性別、年齡、購買力、頁面停留時間等),來形成用戶畫像(User Profile)的。最終,商家面臨的也都是一個二分類問題:用戶要不要觀看某個視頻,用戶要不要點擊某條新聞,用戶要不要購買某個商品等。究其本質,都是一樣的。因此,對二分類問題實施建模,具有一定的普適意義。

但問題在于,我們觀察到的樣本特征,往往是連續(xù)的實數(shù)值,而我們輸出的目標卻是“非 0 即 1”這樣的離散整數(shù)值,如果用簡單的線性回歸模型,那么無論 {wi} 怎么“上蹦下跳”,也難以有效達成“連續(xù)值→離散值”的映射。也就是說,簡單的線性回歸模型難以實現(xiàn)數(shù)據(jù)和目標數(shù)據(jù)之間的擬合。

如果直接擬合很難,那我們能不能轉換一下思維方式呢?在輸出值方面,我們暫時先做一點點妥協(xié),不再考慮“非黑即白”的二分類(買或不買),而是考慮買或不買的概率。由于概率是一個連續(xù)值,這樣一來,我們就重新回到了“連續(xù)值→連續(xù)值”的映射上,這似乎保持了“回歸”的特性。

然后,我們給出一個閾值(θ),一旦概率大于 θ,就表示購買的可能性大。反之,低于 θ 表示購買的可能性小??墒牵憧赡軙?,這個閾值該如何設定呢?

事實上,這個閾值可以不直接設定。我們假設購買的概率為 P,顯然,對于一個二分類,不購買的概率就是 1-P。我們只要保證購買的概率 P 大于不夠買的概率(1-P)就可以了,用數(shù)學的語言描述就是:

p/(1-p)>1

上面公式刻畫的概念就是“odds”(幾率)。如此一來,我們就把一個觀察的連續(xù)值和一個輸出的連續(xù)值關聯(lián)起來了。但這似乎還不夠,我們需要把二者用數(shù)學模型連接起來,即用到非常重要的 logit 變換。

Logistic源頭初探

在統(tǒng)計學領域,Logistic 的同義詞是 logit。logit 常出現(xiàn)在很多機器學習框架的函數(shù)中。那么 logit 到底是什么意思呢?

在統(tǒng)計學里,概率(Probability,簡稱 P)描述的是某事件 A 出現(xiàn)的次數(shù)與所有事件出現(xiàn)的次數(shù)之比。很顯然,概率 P 是一個介于 0~1 之間的實數(shù);P=0,表示事件 A 一定不會發(fā)生,而 P=1 則表示事件 A 一定會發(fā)生。以擲骰子為例,由于骰子有 6 面,任意一面的點數(shù)出現(xiàn)的概率都是相同的。于是,事件 A“擲出點數(shù) 1”的概率 P(A)=1/6。

在英文中,odds 的本意是“幾率”“可能性”,它和我們常說的概率又有什么區(qū)別呢?相比于概率 P,odds 指的是事件發(fā)生的概率與事件不發(fā)生的概率之比:

odds(A)=事件A發(fā)生的概率/事件A不發(fā)生的概率

還拿擲骰子的例子來說,擲出點數(shù) 1 的 odds 為:

odds(擲出點數(shù)1)=(1/6)/(5/6)=1/5

很明顯,odds 和 P 之間的關系為:

odds(A)=P(A)/1-P(A)

進一步簡化可知:

odds(A)=事件A發(fā)生的次數(shù)/發(fā)生其他事件的次數(shù)(即事件A不發(fā)生的次數(shù))

很容易推導得知,P(A) 和 odds(A) 的值域是不同的。前者的值域是 [0,1],而后者則是 [0,+∞)。

那這和 logit 到底有什么關系呢?請注意“l(fā)ogit”一詞的構成,它的含義是對它(it)取對數(shù)(log),這里“it”就是指 odds。下面我們就可以給出 logit 的定義了:

logit(odds)=log(p/1-p)

上面實際上就是所謂 logit 變換,其曲線如圖 1 所示。

logit變換曲線

圖 1:logit變換曲線

或許你要問,那為什么要實施 logit 變換呢?簡單來說,在機器學習領域,很多變換都是為了方便模型更好地擬合數(shù)據(jù),logit 變換亦是如此。從圖 1 中可以看出,通過變換,logit 就具備了一個很重要的特性,即它的值域為 (-∞, +∞),擺脫了上下限制,這就給數(shù)據(jù)的擬合提供了方便。當然,其優(yōu)點并不局限于此,后面會繼續(xù)討論。

通常,logit 變換的對數(shù)底是自然對數(shù)e,這里我們把 odds 用更簡單的符號 z 表示,則有:

z=ln(p/1-p)

顯然,通過公式上面,我們也容易反推出概率P的值:

p=e2/(1+e2)

如果我們再將公式上面做以簡單變形,讓分子和分母同時乘以 e-z,并按分布函數(shù)的格式寫出來,可得到:

p=(Z≤z)=1/(1+e2)

這里,Z 表示隨機變量,取值為實數(shù)。上面公式正是在 Logistic 回歸和神經網(wǎng)絡中廣泛使用的 Sigmoid 函數(shù),又稱 Logistic 函數(shù)(以后不再區(qū)分這兩種叫法)。該函數(shù)有很多優(yōu)良的“品性”,如單調遞增、處處可導等,如圖 2 所示。

Logistic函數(shù)

圖 2:Logistic 函數(shù)

行文至此,或許你對“l(fā)ogit”的內涵已經有了更為準確的理解。追根溯源,Logistic regression 比較“信達雅”的中文譯法應該為“對數(shù)幾率回歸”。比如,在那本著名的“西瓜書”《機器學習》中,這個詞就是這么翻譯的。

Logistic 回歸通過使用其固有的 Logistic 函數(shù)來估計概率,從而衡量因變量(即要預測的標簽)與一個或多個自變量(特征)之間的關系。這些概率必須二值化,才能真正地實現(xiàn)分類預測。

從圖 2 中可以看到,Logistic 函數(shù)是一個 S 形的曲線,它可以將任意實數(shù)值映射為 0~1 之間的值。這個特性,對于解決二分類問題十分重要。我們使用閾值(比如說 0.5)將 0~1 之間的概率轉換為兩個不同的類,通常用“0”表示一類(比如說概率小于 0.5),用“1”表示另外一類(概率大于 0.5)。

需要注意的是,選擇概率值 0.5 作為閾值,僅是一種一般性的做法。在實際應用時,針對不同情況可選擇不同的閾值。比如說,如果對正例的查準率要求高,可以選擇更大一些的閾值(比如 0.6)。如果對正例的查全率(即召回率)要求高,則可以選擇小一些的閾值(比如 0.4)。

此外,分類的標識“0”或“1”,和概率值的邊界“0”或“1”,其實是沒有任何關系的。我們完全可以用“-1”和“1”表示兩個類,只要它們有區(qū)分度即可。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容