第5章 邏輯迴歸(一 理論講解)
5.1邏輯迴歸理論
5.1.1邏輯迴歸引言
邏輯迴歸是一個分類演算法,它可以處理二元分類以及多元分類。雖然它名字裡面有“迴歸”兩個字,卻不是一個迴歸演算法。那為什麼有“迴歸”這個誤導性的詞呢?個人認為,雖然邏輯迴歸是分類模型,但是它的原理裡面卻殘留著迴歸模型的影子,筆者在前面對線性迴歸已經闡述清楚了,接下來筆者就要對邏輯迴歸進行講解了。
我們知道,線性迴歸的模型是求出輸出特徵向量和輸入樣本矩陣之間的線性關係係數,滿足。此時我們的是連續的,所以是迴歸模型。如果我們想要是離散的話,怎麼辦呢?一個可以想到的辦法是,我們對於這個再做一次函式轉換,變為。如果我們令的值在某個實數區間的時候是類別,在另一個實數區間的時候是類別,以此類推,就得到了一個分類模型。如果結果的類別只有兩種,那麼就是一個二元分類模型了。邏輯迴歸的出發點就是從這來的。下面我們開始引入二元邏輯迴歸。
5.1.2二元邏輯迴歸的模型
對於使用邏輯迴歸進行分類,我們首先所需要解決的就是尋找分類邊界線。那麼什麼是分類邊界線呢?
以上兩幅圖分別對應著,當分類樣本具有兩個特徵值 時,樣本可進行線性可分,以及非線性可分的情況。而分類邊界,便是圖中所示的綠色直線與綠色曲線。(本文中只針對線性可分且特徵數為的情況進行介紹)
而使用邏輯迴歸進行分類,就是要找到這樣的分類邊界,使其能夠儘可能地對樣本進行正確分類,也就是能夠儘可能地將兩種樣本分隔開來。於是我們可以大膽猜測,可以構造這樣一個函式(圖一中特徵數為2,分類邊界為直線,當特徵數為 n 時分類邊界為“超平面”),來對樣本集進行分隔:
其中 ,表示第 個樣本, 表示特徵數,當 時,對應著樣本點位於分界線上方,可將其分為"1"類;當 時 ,樣本點位於分界線下方,將其分為“0”類。
我們很容易聯想到前面介紹過的線性迴歸,該演算法同樣是建構函式:
但與邏輯迴歸不同的是,線性迴歸模型輸入一個待預測樣本的特徵值 ,輸出則為預測值。而邏輯迴歸作為分類演算法,它的輸出是0/1。或許你之前接觸過具有這種性質的函式,該函式稱為海維塞德階躍函式(Heaviside step function),或者直接稱為單位階躍函式。然而,海維塞德階躍函式的問題在於:該函式在跳躍點上從0瞬間跳躍到1,這個瞬間跳躍過程有時很難處理。幸好,另一個函式也有類似的性質,且數學上更易處理,這就是Sigmoid函式。接下來將介紹一下 sigmoid 函式。 Sigmoid函式具體的計算公式如下:
它有一個非常好的性質,即當趨於正無窮時,趨於,而當z趨於負無窮時,趨於,這非常適合於我們的分類概率模型。另外,它還有一個很好的導數性質:
這個通過函式對求導很容易得到,後面我們會用到這個式子。 下圖2給出了Sigmoid函式在不同座標尺度下的兩條曲線圖。當為0時, Sigmoid函式值為0.5。隨著的增大,對應的Sigmoid值將逼近於1;而隨著的減小, Sigmoid值將逼近於0。如果橫座標刻度足夠大(圖2下圖), Sigmoid函式看起來很像一個階躍函式。
因此,為了實現Logistic迴歸分類器,我們可以在每個特徵上都乘以一個迴歸係數,然後把所有的結果值相加,將這個總和代入Sigmoid函式中,進而得到一個範圍在0~1之間的數值。任何大於0.5的資料被分入1類,小於0.5即被歸入0類。所以, Logistic迴歸也可以被看成是一種概率估計。即由函式影象可以看出, sigmoid 函式可以很好地將 (−∞,∞) 內的數對映到 (0,1) 上。於是我們可以將 時分為"1"類, 時分為"0"類。即:
其中 表示分類結果。sigmoid 函式實際表達的是將樣本分為“1”類的概率,
【注】上圖的橫座標為5到5,這時的曲線變化較為平滑;下圖橫座標的尺度足夠大,可以看到,在點處Sigmoid函式看起來很像階躍函式。
在文已經給出了分類邊界:
其中:
, 而是偏置項, 表示特徵數, 表示樣本數。 為了和線性迴歸作比較,網路結構圖如圖3,邏輯迴歸與自適應線性網路非常相似,兩者的區別在於邏輯迴歸的啟用函式是Sigmoid function而自適應線性網路的啟用函式是,兩者的網路結構如圖4所示。logistic迴歸就是一個線性分類模型,它與線性迴歸的不同點在於:為了將線性迴歸輸出的很大範圍的數,例如從負無窮到正無窮,壓縮到0和1之間,這樣的輸出值表達為“可能性”才能說服廣大民眾。當然了,把大值壓縮到這個範圍還有個很好的好處,就是可以消除特別冒尖的變數的影響(不知道理解的是否正確)。而實現這個偉大的功能其實就只需要平凡一舉,也就是在輸出加一個logistic函式。另外,對於二分類來說,可以簡單的認為:如果樣本屬於正類的概率大於0.5,那麼就判定它是正類,否則就是負類。
所以說,LogisticRegression 就是一個被logistic方程歸一化後的線性迴歸。結合前文的sigmoid函式我們可以構造出邏輯迴歸模型函式:
理解了二元分類迴歸的模型,接著我們就要看模型的損失函數了,我們的目標是極小化損失函式來得到對應的模型係數。
5.1.3邏輯迴歸的代價函式
線上性迴歸中,我們是利用均方誤差來作為代價函式:
同樣的,假設我們仍舊使用均方誤差來作為邏輯迴歸大家函式,會出現什麼效果呢?將帶入上式,我們會發現, 為一個非凸函式,也就是說該函式存在許多區域性最小值點,在求解引數的過程中很容易陷入區域性最小值點,而無法求得真正的最小值點。
為什麼會出現這樣的現象呢?那是因為邏輯迴歸不是連續的,自然線性迴歸損失函式定義的經驗就用不上了。線上性迴歸,筆者用最大似然法來推匯出我們的損失函式,最後也得到了損失函式。是不是也可以用於邏輯迴歸呢?答案是肯定的。前文也說過了,邏輯迴歸可以看成是一種概率估計,而且sigmoid 函式實際表達的是將樣本分為“1”類的概率,那麼這裡就可以用最大似然估計推導損失函式,也就是說,使用 sigmoid 函式求解出來的值為類1的後驗估計 ,故我們可以得到: 則
其中