『學習筆記』機器學習系列(1)

1、總述

邏輯迴歸是應用非常廣泛的一個分類機器學習算法,它將數據擬合到一個logit函數(或者叫做logistic函數)中,從而能夠完成對事件發生的概率進行預測。

2、由來

要說邏輯迴歸,我們得追溯到線性迴歸,想必大家對線性迴歸都有一定的瞭解,即對於多維空間中存在的樣本點,我們用特徵的線性組合去擬合空間中點的分佈和軌跡。如下圖所示:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

線性迴歸能對連續值結果進行預測,而現實生活中常見的另外一類問題是,分類問題。最簡單的情況是是與否的二分類問題。比如說醫生需要判斷病人是否生病,銀行要判斷一個人的信用程度是否達到可以給他發信用卡的程度,郵件收件箱要自動對郵件分類為正常郵件和垃圾郵件等等。

當然,我們最直接的想法是,既然能夠用線性迴歸預測出連續值結果,那根據結果設定一個閾值是不是就可以解決這個問題了呢?事實是,對於很標準的情況,確實可以的,這裡我們套用Andrew Ng老師的課件中的例子,下圖中X為數據點腫瘤的大小,Y為觀測結果是否是惡性腫瘤。通過構建線性迴歸模型,如hθ(x)所示,構建線性迴歸模型後,我們設定一個閾值0.5,預測hθ(x)≥0.5的這些點為惡性腫瘤,而hθ(x)<0.5為良性腫瘤。

『學習筆記』機器學習系列(1)_邏輯迴歸初步

但很多實際的情況下,我們需要學習的分類數據並沒有這麼精準,比如說上述例子中突然有一個不按套路出牌的數據點出現,如下圖所示:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

你看,現在你再設定0.5,這個判定閾值就失效了,而現實生活的分類問題的數據,會比例子中這個更為複雜,而這個時候我們藉助於線性迴歸+閾值的方式,已經很難完成一個魯棒性很好的分類器了。

在這樣的場景下,邏輯迴歸就誕生了。它的核心思想是,如果線性迴歸的結果輸出是一個連續值,而值的範圍是無法限定的,那我們有沒有辦法把這個結果值映射為可以幫助我們判斷的結果呢。而如果輸出結果是 (0,1) 的一個概率值,這個問題就很清楚了。我們在數學上找了一圈,還真就找著這樣一個簡單的函數了,就是很神奇的sigmoid函數(如下):

『學習筆記』機器學習系列(1)_邏輯迴歸初步

sigmoid函數

如果把sigmoid函數圖像畫出來,是如下的樣子:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

sigmoid函數圖像

Sigmoid Logistic Function

從函數圖上可以看出,函數y=g(z)在z=0的時候取值為1/2,而隨著z逐漸變小,函數值趨於0,z逐漸變大的同時函數值逐漸趨於1,而這正是一個概率的範圍。

所以我們定義線性迴歸的預測函數為Y=WTX,那麼邏輯迴歸的輸出Y= g(WTX),其中y=g(z)函數正是上述sigmoid函數(或者簡單叫做S形函數)。

3、判定邊界

我們現在再來看看,為什麼邏輯迴歸能夠解決分類問題。這裡引入一個概念,叫做判定邊界,可以理解為是用以對不同類別的數據分割的邊界,邊界的兩旁應該是不同類別的數據。

從二維直角座標系中,舉幾個例子,大概是如下這個樣子:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

有時候是這個樣子:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

甚至可能是這個樣子:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

上述三幅圖中的紅綠樣本點為不同類別的樣本,而我們劃出的線,不管是直線、圓或者是曲線,都能比較好地將圖中的兩類樣本分割開來。這就是我們的判定邊界,下面我們來看看,邏輯迴歸是如何根據樣本點獲得這些判定邊界的。

我們依舊借用Andrew Ng教授的課程中部分例子來講述這個問題。

回到sigmoid函數,我們發現:

當g(z)≥0.5時, z≥0;

對於hθ(x)=g(θTX)≥0.5, 則θTX≥0, 此時意味著預估y=1;

反之,當預測y = 0時,θTX<0;

所以我們認為θTX =0是一個決策邊界,當它大於0或小於0時,邏輯迴歸模型分別預測不同的分類結果。

先看第一個例子hθ(x)=g(θ0+θ1X1+θ2X2),其中θ0 ,θ1 ,θ2分別取-3, 1, 1。則當−3+X1+X2≥0時, y = 1; 則X1+X2=3是一個決策邊界,圖形表示如下,剛好把圖上的兩類點區分開來:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

例1只是一個線性的決策邊界,當hθ(x)更復雜的時候,我們可以得到非線性的決策邊界,例如:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

這時當x12+x22≥1時,我們判定y=1,這時的決策邊界是一個圓形,如下圖所示:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

所以我們發現,理論上說,只要我們的hθ(x)設計足夠合理,準確的說是g(θTx)中θTx足夠複雜,我們能在不同的情形下,擬合出不同的判定邊界,從而把不同的樣本點分隔開來。

4、代價函數與梯度下降

我們通過對判定邊界的說明,知道會有合適的參數θ使得θTx=0成為很好的分類判定邊界,那麼問題就來了,我們如何判定我們的參數θ是否合適,有多合適呢?更進一步,我們有沒有辦法去求得這樣的合適參數θ呢?

這就是我們要提到的代價函數與梯度下降了。

所謂的代價函數Cost Function,其實是一種衡量我們在這組參數下預估的結果和實際結果差距的函數,比如說線性迴歸的代價函數定義為:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

當然我們可以和線性迴歸類比得到一個代價函數,實際就是上述公式中hθ(x)取為邏輯迴歸中的g(θTx),但是這會引發代價函數為“非凸”函數的問題,簡單一點說就是這個函數有很多個局部最低點,如下圖所示:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

而我們希望我們的代價函數是一個如下圖所示,碗狀結構的凸函數,這樣我們算法求解到局部最低點,就一定是全局最小值點。

『學習筆記』機器學習系列(1)_邏輯迴歸初步

因此,上述的Cost Function對於邏輯迴歸是不可行的,我們需要其他形式的Cost Function來保證邏輯迴歸的成本函數是凸函數。

我們跳過大量的數學推導,直接出結論了,我們找到了一個適合邏輯迴歸的代價函數:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

Andrew Ng老師解釋了一下這個代價函數的合理性,我們首先看當y=1的情況:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

如果我們的類別y = 1, 而判定的hθ(x)=1,則Cost = 0,此時預測的值和真實的值完全相等,代價本該為0;而如果判斷hθ(x)→0,代價->∞,這很好地懲罰了最後的結果。

而對於y=0的情況,如下圖所示,也同樣合理:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

下面我們說說梯度下降,梯度下降算法是調整參數θ使得代價函數J(θ)取得最小值的最基本方法之一。從直觀上理解,就是我們在碗狀結構的凸函數上取一個初始值,然後挪動這個值一步步靠近最低點的過程,如下圖所示:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

我們先簡化一下邏輯迴歸的代價函數:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

從數學上理解,我們為了找到最小值點,就應該朝著下降速度最快的方向(導函數/偏導方向)邁進,每次邁進一小步,再看看此時的下降最快方向是哪,再朝著這個方向邁進,直至最低點。

用迭代公式表示出來的最小化J(θ)的梯度下降算法如下:

『學習筆記』機器學習系列(1)_邏輯迴歸初步

『學習筆記』機器學習系列(1)_邏輯迴歸初步

總結

最後我們總結一下邏輯迴歸。它始於輸出結果為有實際意義的連續值的線性迴歸,但是線性迴歸對於分類的問題沒有辦法準確而又具備魯棒性地分割,因此我們設計出了邏輯迴歸這樣一個算法,它的輸出結果表徵了某個樣本屬於某類別的概率。

邏輯迴歸的成功之處在於,將原本輸出結果範圍可以非常大的θTX 通過sigmoid函數映射到(0,1),從而完成概率的估測。

而直觀地在二維空間理解邏輯迴歸,是sigmoid函數的特性,使得判定的閾值能夠映射為平面的一條判定邊界,當然隨著特徵的複雜化,判定邊界可能是多種多樣的樣貌,但是它能夠較好地把兩類樣本點分隔開,解決分類問題。

求解邏輯迴歸參數的傳統方法是梯度下降,構造為凸函數的代價函數後,每次沿著偏導方向(下降速度最快方向)邁進一小部分,直至N次迭代後到達最低點。

——————

時間:2015年10月。

出處:http://blog.csdn.net/han_xiaoyang/article/details/49123419。


分享到:


相關文章: