1 原理
1.1 概述
邏輯回歸(LR雀哨,Logistic Regression)是一個很常用也很好用的分類算法艇拍,是的头谜,雖然名字叫回歸骏掀,但它其實是一個分類算法,所謂分類問題就是類似給定一個人的一些特征柱告,來判斷他是個好人還是壞人的問題截驮,當(dāng)然這只是最簡單的二分類。說回邏輯回歸际度,為什么作為一個分類算法葵袭,名字要叫回歸呢?那必然是因為它和回歸有某種神秘的關(guān)系乖菱,我們先來看看邏輯回歸的思路坡锡,相信理解了其原理后會大概懂得邏輯回歸這個名字是怎么起的~
假如現(xiàn)在有一批線性可分的數(shù)據(jù)需要分類,如下左圖所示(以二維圖像做演示):
如上面右圖所示窒所,我們可以畫出一條界面來將兩個類別的數(shù)據(jù)一分為二鹉勒,這條界面(超平面)是樣本空間內(nèi)的分類邊界(決策邊界),因為我們假設(shè)了數(shù)據(jù)是線性可分的吵取,所以決策邊界的數(shù)學(xué)形式為:
要知道決策邊界使我們根據(jù)假設(shè)畫出來的禽额,是作出的假設(shè)自身及假設(shè)的參數(shù)的屬性,而不是訓(xùn)練集的屬性皮官。試想脯倒,如果我們確定了參數(shù)向量θ实辑,那么決策邊界就確定了,四舍五入相當(dāng)于已經(jīng)實現(xiàn)分類了啊藻丢。既然說到這徙菠,我們就看下樣本點怎么根據(jù)決策邊界實現(xiàn)分類,根據(jù)已經(jīng)確定的決策邊界郁岩,令婿奔,我們有分類函數(shù):
現(xiàn)在有樣本點,把它代入到函數(shù)中问慎,如果萍摊,樣本點在決策邊界下方,屬于圖中的紅點那一類如叼,令其為類別0冰木;如果,屬于圖中的藍點類笼恰,令其為類別1踊沸;如果,樣本點剛好在決策平面上社证,難以判斷是哪一類逼龟。我們還知道,邏輯回歸是可以輸出樣本屬于某個類別的可能性大小的追葡,這個又怎么理解呢腺律?跟決策邊界有什么關(guān)系?按我的理解的話宜肉,我們知道點到超平面的距離計算方法:
所以辱志,在參數(shù)已經(jīng)確定的情況下牌捷,代表了樣本點到?jīng)Q策邊界距離的一種度量,決策邊界代表了兩個類別的分界線刁岸,顯然距離決策邊界越遠越能確定樣本點屬于某一類別忆某,即可能性應(yīng)該較大洗显,而距離邊界近爬橡,則說明是在兩個類別的邊緣試探忘闻,也就不太好判斷樣本點屬于哪個類別。
到這里翰蠢,我們可以說邏輯回歸之所以叫回歸项乒,正是因為其分類的核心是一個線性回歸模型,這個回歸的自變量是樣本特征梁沧,響應(yīng)變量反映了樣本點所屬類別及其到?jīng)Q策邊界距離大小,如果得到了這個線性回歸模型的參數(shù)蝇裤,分類問題就迎刃而解了廷支。
現(xiàn)在還有一點問題就是的值域是频鉴,對于一個距離度量數(shù)值我們很難判斷它在這樣一個范圍內(nèi)是大還是小,也就不好說其可能性的大小恋拍,如果能縮放到范圍內(nèi)以概率來解釋就好了垛孔,因此引入圖像如下所示的sigmod函數(shù)將的值域映射到上,并且將映射為施敢,這樣最終的結(jié)果就是樣本點屬于類別1的概率了周荐。
綜上所述,邏輯回歸可以視為包含一個線性回歸和一個值域映射兩個過程僵娃,邏輯回歸模型為:
1.2 從GLM的角度看邏輯回歸
邏輯回歸也是廣義線性模型的一種實現(xiàn)概作,再來回顧一下GLM的三個假設(shè):
- 定義 y 的估值概率分布屬于某種指數(shù)分布族,默怨,表示為:
定義 的估計值 讯榕,即的估計值就是 的期望值;
定義線性預(yù)測算子匙睹,即廣義線性模型中的線性因素愚屁,對相關(guān)的指數(shù)分布族的自然參數(shù):。
邏輯回歸的假設(shè)比GLM的更加具體痕檬,其假設(shè)為:
1. 定義 y 的估值概率分布屬于指數(shù)分布族中的伯努利分布霎槐,,表示為:
2. 定義 的估計值 梦谜,即的估計值就是 的期望值栽燕;
3. 定義線性預(yù)測算子,即廣義線性模型中的線性因素改淑,對相關(guān)的指數(shù)分布族的自然參數(shù):碍岔。
除了第一條,其他兩條假設(shè)跟線性回歸是一樣的朵夏,根據(jù)廣義線性模型(1)廣義線性模型中的推導(dǎo):
我們可以直接套用公式 構(gòu)建回歸模型:
與上面從分類的角度推導(dǎo)出來的模型是完全一樣的,根據(jù)GLM角度的推導(dǎo)仰猖,我們來從概率的角度理解一下邏輯回歸捏肢,假設(shè)樣本點的類別分布是屬于伯努利分布的,即屬于類別1的概率為饥侵,屬于類別0的概率為鸵赫,如果我們能得出一個值代表和的大小,不就知道樣本應(yīng)該屬于哪個類別了嗎躏升?所以我們使用兩個類別發(fā)生的概率之比來判斷大小辩棒,引入賠率(odds)和對數(shù)賠率(log-odds)的概念:
- 在概率理論中,P/(1-P)的意義叫做賠率(odds),賠率也叫發(fā)生比一睁,是事件發(fā)生和不發(fā)生的概率比钻弄,其值域為;
- log(P/(1-P))是對數(shù)賠率或者對數(shù)發(fā)生比(log-odds)者吁,其值域為窘俺。
因此,我們用log-odds來將的值映射到線性回歸上复凳,即作為GLM的聯(lián)結(jié)函數(shù)瘤泪,得到:
邏輯回歸最終要輸出樣本點屬于類別1的概率,即:
從這個角度也是可以解釋的通邏輯回歸的育八。我們接下來要做的就是根據(jù)樣本对途,求出最合適的參數(shù)。
2 邏輯回歸模型參數(shù)的求解
根據(jù)上面的討論单鹿,我們已經(jīng)熟悉了邏輯回歸模型的形式掀宋,接下來討論怎么求出模型中的參數(shù)。
2.1 極大似然估計
跟線性回歸一樣仲锄,又有分布又有樣本劲妙,我們先用極大似然估計來試試,寫出似然函數(shù)儒喊,然后取對數(shù)得到對數(shù)似然函數(shù):
然后就要求導(dǎo)計算參數(shù)镣奋,這是一個復(fù)雜的關(guān)于的復(fù)合函數(shù),令一階導(dǎo)數(shù)為0計算解析解是一件很困難的事怀愧,我沒有去試侨颈,不過很多資料上說邏輯回歸沒有解析解,以后有空了可以探索一下芯义。我們發(fā)現(xiàn)哈垢,通過極大似然估計,參數(shù)的求解轉(zhuǎn)化為了:
這就是邏輯回歸常用的交叉熵形式的損失函數(shù)了扛拨。
2.2 交叉熵?fù)p失函數(shù)
1)理解
如上所述耘分,我們已經(jīng)知道了交叉熵?fù)p失函數(shù)的形式,要求出參數(shù)只需要優(yōu)化損失函數(shù)即可绑警,這個不急求泰,我們先來理解一下交叉熵?fù)p失函數(shù)是怎么回事,首先计盒,為什么不像線性回歸那樣直接使用普通最小二乘法了呢渴频?
- 原因1:普通最小二乘法的形式損失函數(shù)為,可以證明在邏輯回歸的背景下北启,這個函數(shù)并不是凸函數(shù)(對于區(qū)間上定義的滿足 ,則稱為凸函數(shù))卜朗,的取值為0或1拔第,是一個分段函數(shù),f(x_i)的值域為聊替,畫下圖就知道這不是一個凸函數(shù)楼肪,并不一定收斂到全局最優(yōu)培廓,所以一般不會使用普通最小二乘法惹悄,不過可以使用加權(quán)最小二乘(WLS),其效果跟交叉熵?fù)p失函數(shù)一樣肩钠。
- 原因2:平方損失函數(shù)泣港,求導(dǎo)沒法把sigmod函數(shù)的導(dǎo)數(shù)項約掉,梯度更新的速度和sigmod函數(shù)本身的梯度是很相關(guān)的价匠,sigmod函數(shù)在它在定義域內(nèi)的梯度都不大于0.25当纱,訓(xùn)練會非常的慢。
還是回過頭來理解交叉熵?fù)p失函數(shù)踩窖,根據(jù)交叉熵的含義坡氯,這個損失函數(shù)代表了我們求出來的模型的分布與真實分布之間的相似程度,因此越小越好洋腮。
交叉熵 Cross Entropy
設(shè) p(x),q(x) 分別是 離散隨機變量X的兩個概率分布箫柳,其中p(x)是目標(biāo)分布,p和q的交叉熵可以看做是啥供,使用分布q(x) 表示目標(biāo)分布p(x)的困難程度:
2)梯度下降優(yōu)化
損失函數(shù):
求梯度(復(fù)合函數(shù)使用鏈?zhǔn)椒▌t):
梯度下降:
至此悯恍,邏輯回歸的原理及模型參數(shù)求解就已經(jīng)分析的差不多了,我們來嘗試用一句話總結(jié)一下邏輯回歸:邏輯回歸是假設(shè)待預(yù)測數(shù)據(jù)服從伯努利分布的廣義線性模型伙狐,通過極大化似然函數(shù)的方法得到其損失函數(shù)涮毫,運用梯度下降來優(yōu)化損失函數(shù)求解參數(shù),得到?jīng)Q策邊界來達到將數(shù)據(jù)二分類的目的贷屎,總結(jié)的好像有些啰嗦罢防,總之就是希望把上面講到的一系列東西穿起來哈。
3 常見問題
3.1 邏輯回歸能否做非線性分類
邏輯回歸是一種線性模型唉侄,得到的分類決策邊界也是一個超平面咒吐,理論上說是無法對非線性可分的問題做分類的,那么對于非線性的分類問題應(yīng)該怎么做呢美旧?
一般會優(yōu)先使用支持向量機渤滞,如果非要使用邏輯回歸的話,也是有辦法的榴嗅,那就要對特征做處理妄呕,將特征進行非線性變換比如組合乘積、平方等嗽测,做出很多新的特征出來绪励,簡單來說就是需要我們想辦法顯式的將數(shù)據(jù)映射到合適的高維空間中去肿孵,類似于下圖中本來是非線性可分的數(shù)據(jù),使用作為決策邊界效果肯定不好疏魏,我們改成使用就可以處理了:
不過這就出現(xiàn)了一個新問題停做,特征怎么處理呢,在工程上怎么實現(xiàn)大莫?
- 如果特征不多蛉腌,那么我們根據(jù)對業(yè)務(wù)的理解可以手動去指定一些非線性映射規(guī)則進行處理;
- 如果特征很多只厘,人工肯定不現(xiàn)實了烙丛,我們可以在前面多加幾層有非線性激活函數(shù)的神經(jīng)網(wǎng)絡(luò),將其輸出作為邏輯回歸的輸入羔味。
其實這么特征處理后再使用邏輯回歸好像也不能叫用邏輯回歸處理非線性分類問題河咽,好吧,只使用邏輯回歸就是處理不了非線性問題赋元,看人家的假設(shè)忘蟹,人家生來就不是干這個事的。
3.2 邏輯回歸怎么做多分類
1)多分類轉(zhuǎn)化為二分類
One vs Rest(一對多)
對多分類問題的處理搁凸,最簡單的思路是我們把多個類別轉(zhuǎn)換為二分類媚值,比如類別A、B坪仇、C杂腰,我們可以認(rèn)為A是一類,B和C加一起是另一類椅文,然后B是一類喂很,A和C加一起是另一類這樣,這就是OvR(One vs Rest)的思想皆刺。
- 將類型class1看作正樣本少辣,其他類型全部看作負(fù)樣本,然后我們就可以得到樣本標(biāo)記類型為該類型的概率p1羡蛾;
- 然后再將另外類型class2看作正樣本漓帅,其他類型全部看作負(fù)樣本,同理得到p2痴怨;
- 依次循環(huán)忙干,得到樣本標(biāo)記為每個類別的概率pi,取pi中最大的那個概率對應(yīng)的樣本標(biāo)記類型作為我們的待預(yù)測樣本類型浪藻。
One vs One(一對一)
除此之外還有OvO(One vs One)捐迫,將n個類別兩兩配對,產(chǎn)生n(n-1)/2個二分類任務(wù)爱葵,獲得n(n-1)/2個分類器施戴,新樣本交給這些分類器反浓,得到n(n-1)/2個結(jié)果,最終結(jié)果投票產(chǎn)生赞哗。
Many vs Many(多對多)
MvM則是每次將若干個類作為正類雷则,若干個其它類作為反類。顯然OvO和OvR是她的特例肪笋。顯然MvM的正月劈、反類構(gòu)造必須有特殊的設(shè)計,不能隨意選取涂乌。這里介紹一種最常用的MvM技術(shù):糾錯輸出碼(ECOC)艺栈。
ECOC是將編碼的思想引入類別拆分英岭,并盡可能在解碼的過程中具有容錯性湾盒。ECOC工作過程主要分為兩步:
- 編碼:對N個類別做M次劃分,每次劃分將一部分類別劃為正類诅妹,一部分劃為反類罚勾,從而形成一個二分類訓(xùn)練集,這樣一共產(chǎn)生M個訓(xùn)練集吭狡,可訓(xùn)練出M個訓(xùn)練器尖殃。
- 解碼:M個分類器分別對測試樣本進行預(yù)測,這些預(yù)測標(biāo)記組成一個編碼划煮。將這個與此編碼與每個類別各自的編碼進行比較送丰,返回其中距離最小的類別最為最終預(yù)測結(jié)果。
2)Softmax回歸多分類器
除了使用上述的組合分類器之外弛秋,我們還可以使用Softmax多分類器直接在多個類別中選中我們想要的類別器躏,Softmax分類的內(nèi)容也不少,我們在下一篇再展開說一下蟹略。
4 總結(jié)
優(yōu)點:
- 形式簡單登失,可解釋性非常好:從特征的權(quán)重可以看到不同的特征對最后結(jié)果的影響大小,最終輸出結(jié)果為概率挖炬,理解和使用都很方便揽浙;
- 訓(xùn)練和預(yù)測速度較快,資源占用小意敛,尤其是內(nèi)存馅巷。
缺點:
- 因為假設(shè)依賴,對數(shù)據(jù)分布要求高草姻,所以現(xiàn)實中準(zhǔn)確率不是很高钓猬,很難符合數(shù)據(jù)的真實分布;
- 很難處理數(shù)據(jù)不平衡的問題碴倾。例子:如果如正負(fù)樣本比 10000:1逗噩,我們把所有樣本都預(yù)測為正也能使損失函數(shù)的值比較械衾觥;
- 單純使用邏輯回歸無法處理非線性數(shù)據(jù)异雁,邏輯回歸在不進行特殊處理捶障、不引入其他方法的情況下,只能處理線性可分的數(shù)據(jù) 纲刀。