本節(jié)教程我們來討論另外一種被廣泛應(yīng)用的分類算法— Logistic 回歸编整。在講解這個概念之前诱篷,我們先來聊一個題外話—“Logistic regression”的中文譯法〗视酰“regression”譯作“回歸”胀溺,并沒有什么異議裂七,而“Logistic”的翻譯可謂五花八門。有譯作“邏輯斯諦”的月幌,這種音譯中規(guī)中矩碍讯,自然不能算錯,但不夠形象扯躺。
更多文獻直接將其譯作“邏輯”,這種譯法可能就有點誤導(dǎo)大家了蝎困÷加铮“邏輯”(logic)本來是一個哲學(xué)概念,它注重的是推論和證明禾乘,而“Logistic”主要用于機器學(xué)習(xí)領(lǐng)域的分類澎埠。二者幾乎無關(guān)聯(lián),如此翻譯始藕,至少違反了“信達雅”中的“信”—不夠確切蒲稳。
可能你要問了,我們是在討論“機器學(xué)習(xí)”伍派,為何要糾結(jié)“Logistic”一詞的譯法呢江耀?并不是因為我們“好為人師”,而是這關(guān)系到對“Logistic 回歸”內(nèi)涵的理解诉植。下面我們就從為什么需要 Logistic 回歸開始說起祥国。
為什么需要Logistic回歸
首先,需要強調(diào)的是晾腔,Logistic 回歸也屬于監(jiān)督學(xué)習(xí)之列舌稀,雖然帶有“回歸”二字,但它卻是名副其實的“分類”算法灼擂。通過前面的學(xué)習(xí)壁查,我們知道,分類與傳統(tǒng)意義上的回歸最大的不同在于剔应,分類算法輸出的是離散的標(biāo)簽值(比如花的品類)睡腿,而回歸輸出的是連續(xù)的實數(shù)(比如花瓣長度)语御。
前面我們已經(jīng)提到,線性回歸模型的優(yōu)點在于嫉到,數(shù)據(jù)擬合簡單直觀沃暗,輸出結(jié)果解釋力強,但在部分場景下何恶,它也會捉“捉襟見肘”孽锥,難以勝任。
下面我們來看這樣一個場景细层。比如說惜辑,在一家服裝店里,商家想根據(jù)顧客的各類特征(自變量 x)疫赎,包括但不限于性別盛撑、年齡、穿著習(xí)慣捧搞、談吐抵卫、顏值等,來預(yù)測自己的銷售額(因變量 y)胎撇。顯然介粘,銷售額是連續(xù)的實數(shù)值,因此這個模型構(gòu)建起來晚树,就是一個地地道道的線性回歸模型姻采。
y=w0+w1x1+w2x2+...+wmxm
其中,w0 表示截距爵憎,wi 表示與各個特征 xi 相匹配的權(quán)值慨亲。相比于預(yù)測店鋪銷售額這類高層次問題,銷售員可能更關(guān)注一個問題:光臨店鋪的顧客“買”還是“不買”商品宝鼓。注意刑棵,此時目標(biāo)輸出變量只有兩類值:0(代表不買)和 1(代表買),這顯然是一個二分類問題席函。
其實铐望,這也是一個很重要的問題。拓展一下茂附,在整個互聯(lián)網(wǎng)電商世界正蛙,聰明的商家無不是通過收集大量的用戶標(biāo)簽(如性別、年齡营曼、購買力乒验、頁面停留時間等),來形成用戶畫像(User Profile)的蒂阱。最終锻全,商家面臨的也都是一個二分類問題:用戶要不要觀看某個視頻狂塘,用戶要不要點擊某條新聞,用戶要不要購買某個商品等鳄厌。究其本質(zhì)荞胡,都是一樣的。因此了嚎,對二分類問題實施建模泪漂,具有一定的普適意義。
但問題在于歪泳,我們觀察到的樣本特征萝勤,往往是連續(xù)的實數(shù)值,而我們輸出的目標(biāo)卻是“非 0 即 1”這樣的離散整數(shù)值呐伞,如果用簡單的線性回歸模型敌卓,那么無論 {wi} 怎么“上蹦下跳”,也難以有效達成“連續(xù)值→離散值”的映射伶氢。也就是說趟径,簡單的線性回歸模型難以實現(xiàn)數(shù)據(jù)和目標(biāo)數(shù)據(jù)之間的擬合。
如果直接擬合很難癣防,那我們能不能轉(zhuǎn)換一下思維方式呢舵抹?在輸出值方面,我們暫時先做一點點妥協(xié)劣砍,不再考慮“非黑即白”的二分類(買或不買),而是考慮買或不買的概率扇救。由于概率是一個連續(xù)值刑枝,這樣一來,我們就重新回到了“連續(xù)值→連續(xù)值”的映射上迅腔,這似乎保持了“回歸”的特性装畅。
然后,我們給出一個閾值(θ)沧烈,一旦概率大于 θ掠兄,就表示購買的可能性大。反之锌雀,低于 θ 表示購買的可能性小蚂夕。可是腋逆,你可能會問婿牍,這個閾值該如何設(shè)定呢?
事實上惩歉,這個閾值可以不直接設(shè)定等脂。我們假設(shè)購買的概率為 P俏蛮,顯然,對于一個二分類上遥,不購買的概率就是 1-P搏屑。我們只要保證購買的概率 P 大于不夠買的概率(1-P)就可以了,用數(shù)學(xué)的語言描述就是:
p/(1-p)>1
上面公式刻畫的概念就是“odds”(幾率)粉楚。如此一來辣恋,我們就把一個觀察的連續(xù)值和一個輸出的連續(xù)值關(guān)聯(lián)起來了。但這似乎還不夠解幼,我們需要把二者用數(shù)學(xué)模型連接起來抑党,即用到非常重要的 logit 變換。
Logistic源頭初探
在統(tǒng)計學(xué)領(lǐng)域撵摆,Logistic 的同義詞是 logit底靠。logit 常出現(xiàn)在很多機器學(xué)習(xí)框架的函數(shù)中。那么 logit 到底是什么意思呢特铝?
在統(tǒng)計學(xué)里暑中,概率(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 之間的關(guān)系為:
odds(A)=P(A)/1-P(A)
進一步簡化可知:
odds(A)=事件A發(fā)生的次數(shù)/發(fā)生其他事件的次數(shù)(即事件A不發(fā)生的次數(shù))
很容易推導(dǎo)得知,P(A) 和 odds(A) 的值域是不同的魏蔗。前者的值域是 [0,1]砍的,而后者則是 [0,+∞)。
那這和 logit 到底有什么關(guān)系呢莺治?請注意“l(fā)ogit”一詞的構(gòu)成廓鞠,它的含義是對它(it)取對數(shù)(log)帚稠,這里“it”就是指 odds。下面我們就可以給出 logit 的定義了:
logit(odds)=log(p/1-p)
上面實際上就是所謂 logit 變換床佳,其曲線如圖 1 所示滋早。
圖 1:logit變換曲線
或許你要問,那為什么要實施 logit 變換呢砌们?簡單來說杆麸,在機器學(xué)習(xí)領(lǐng)域,很多變換都是為了方便模型更好地擬合數(shù)據(jù)浪感,logit 變換亦是如此昔头。從圖 1 中可以看出,通過變換影兽,logit 就具備了一個很重要的特性揭斧,即它的值域為 (-∞, +∞),擺脫了上下限制峻堰,這就給數(shù)據(jù)的擬合提供了方便讹开。當(dāng)然,其優(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 回歸和神經(jīng)網(wǎng)絡(luò)中廣泛使用的 Sigmoid 函數(shù),又稱 Logistic 函數(shù)(以后不再區(qū)分這兩種叫法)光坝。該函數(shù)有很多優(yōu)良的“品性”尸诽,如單調(diào)遞增、處處可導(dǎo)等盯另,如圖 2 所示性含。
圖 2:Logistic 函數(shù)
行文至此,或許你對“l(fā)ogit”的內(nèi)涵已經(jīng)有了更為準(zhǔn)確的理解鸳惯。追根溯源商蕴,Logistic regression 比較“信達雅”的中文譯法應(yīng)該為“對數(shù)幾率回歸”叠萍。比如,在那本著名的“西瓜書”《機器學(xué)習(xí)》中绪商,這個詞就是這么翻譯的苛谷。
Logistic 回歸通過使用其固有的 Logistic 函數(shù)來估計概率,從而衡量因變量(即要預(yù)測的標(biāo)簽)與一個或多個自變量(特征)之間的關(guān)系格郁。這些概率必須二值化腹殿,才能真正地實現(xiàn)分類預(yù)測。
從圖 2 中可以看到例书,Logistic 函數(shù)是一個 S 形的曲線锣尉,它可以將任意實數(shù)值映射為 0~1 之間的值。這個特性决采,對于解決二分類問題十分重要自沧。我們使用閾值(比如說 0.5)將 0~1 之間的概率轉(zhuǎn)換為兩個不同的類,通常用“0”表示一類(比如說概率小于 0.5)织狐,用“1”表示另外一類(概率大于 0.5)暂幼。
需要注意的是,選擇概率值 0.5 作為閾值移迫,僅是一種一般性的做法旺嬉。在實際應(yīng)用時,針對不同情況可選擇不同的閾值厨埋。比如說邪媳,如果對正例的查準(zhǔn)率要求高,可以選擇更大一些的閾值(比如 0.6)荡陷。如果對正例的查全率(即召回率)要求高雨效,則可以選擇小一些的閾值(比如 0.4)。
此外废赞,分類的標(biāo)識“0”或“1”徽龟,和概率值的邊界“0”或“1”,其實是沒有任何關(guān)系的唉地。我們完全可以用“-1”和“1”表示兩個類据悔,只要它們有區(qū)分度即可。