邏輯迴歸與最大似然估計推導

目錄

邏輯迴歸(對數機率迴歸)

1.廣義線性模型

2.邏輯迴歸的假設

3. 邏輯迴歸的代價函數

爲什麼LR中使用交叉熵損失函數而不使用MSE損失函數?

3. 極大似然估計

4. 利用梯度下降法求解參數w

4.1 三種梯度下降方法的選擇

5.邏輯迴歸優缺點:

參考資料:


邏輯迴歸(對數機率迴歸)

邏輯迴歸是一種分類算法,不是迴歸算法,因爲它用了和迴歸類似的思想來解決了分類問題。

一句話總結邏輯迴歸:“邏輯迴歸假設數據服從伯努利分佈,通過極大似然函數的方法,運用梯度下降來求解參數,來達到將數據二分類的目的”。

1.廣義線性模型

我們先來看看線性迴歸模型:

y=w^Tx+b

但是假設我們認爲實例所對應的輸出標記是在指數尺度上變化,那麼就可以將輸出標記的對數作爲線性模型逼近的目標:

In y=w^Tx+b

這就是“對數線性迴歸”,它實際上是試圖讓e^{w^Tx+b}逼近y,其是形式上是線性迴歸,實際上是在求輸入空間到輸出空間的非線性函數映射。這裏的對數函數起到了將線性迴歸模型的預測值與真實標記聯繫起來的作用

更一般地,考慮單調可微函數g(\cdot)=In(\cdot ),另:

y=g^{-1}(w^Tx+b)

這樣得到的模型稱爲“廣義線性模型”,其中函數g(\cdot)稱爲“聯繫函數”。顯然,對數線性迴歸是廣義線性模型在g(\cdot )=In(\cdot )時的特例。

如上討論瞭如何使用線性模型來進行迴歸學習,但是如果要做的是分類任務該怎麼辦?下面介紹如何由“廣義線性模型”引出邏輯迴歸模型。

我們只需要找到一個聯繫函數,將分類任務的真實標記y與線性迴歸模型的預測值聯繫起來

考慮二分類問題,其輸出標記y\in \{0,1\},而線性迴歸模型的預測值z=w^Tx+b是實數值,於是我們需要將實數值z轉換爲0/1值,可以使用單位階躍函數:

但是該函數不連續,因此不能作爲聯繫函數g,所以找到了一個能在一定程度上近似單位階躍函數的“替代函數”,單調可微的對數機率函數(Logistic function),它能夠將線性迴歸模型的預測值轉化爲分類任務對應的概率:

\phi (z)=\frac{1}{1+e^{-z}}

兩者的圖像如下圖所示:

sigmoid

圖1.單位階躍函數與對數機率函數


對數機率其實是一種“sigmoid”函數,它將z值轉化爲一個接近0或1的y值:

y=\frac{1}{1+e^{-(w^Tx+b)}}\rightarrowIn\frac{y}{1-y}=w^Tx+b

若將y視爲樣本x作爲正例的可能性,則1-y是其反例的可能性,兩者的比值\frac{y}{1-y}稱爲“機率”,反映了x作爲正例的相對可能性,對機率取對數則得到In\frac{y}{1-y},可以看出,上式其實是在用線性迴歸模型的預測結果去逼近真實標記的對數機率。所以該模型也被稱作“對數機率迴歸”。


由於sigmoid函數的取值在[0,1]之間,所以可以將其視爲類1的後驗概率估計p(y=1|x),所以我們把sigmoid函數計算得到的值大於等於0.5的歸爲類別1,小於0.5的歸爲類別0。

\hat{y}=\left\{\begin{matrix}1,\ if\phi (z)\geq 0.5 \\0,\ otherwise \end{matrix}\right.

面經問題:

1. 爲什麼要使用sigmoid函數作爲假設?

因爲線性迴歸模型的預測值爲實數,而樣本的類標記爲(0,1),我們需要將分類任務的真實標記y與線性迴歸模型的預測值聯繫起來,也就是找到廣義線性模型中的聯繫函數。如果選擇單位階躍函數的話,它是不連續的不可微。而如果選擇sigmoid函數,它是連續的,而且能夠將z轉化爲一個接近0或1的值。

2.使用sigmoid函數背後的原理是什麼?

 

2.邏輯迴歸的假設

任何的模型都是有自己的假設的,在這個假設下模型纔是試用的。

邏輯迴歸的第一個假設是:假設數據服從伯努利分佈。第二個假設爲假設模型的輸出值是樣本爲正例的概率

所以整個模型可以描述爲:h_{\theta}(x;\theta)=p=\frac{1}{e^{-\theta^Tx}}

其中\theta=(w;b)爲向量形式。

3. 邏輯迴歸的代價函數

爲什麼LR中使用交叉熵損失函數而不使用MSE損失函數?

å¨è¿éæå¥å¾çæè¿°

å¨è¿éæå¥å¾çæè¿°

所以,如果當前模型的輸出接近0或者1時,σ′(z)就會非常小,接近0,使得求得的梯度很小,損失函數收斂的很慢.

å¨è¿éæå¥å¾çæè¿°

(接下來就是根據給定的訓練集,把參數w求出來。要找到w,首先要先定義代價函數(目標函數)。首先想到的就是模仿線性迴歸的做法,利用誤差平方和來當做代價函數:

J(\theta)=\sum_i\frac{1}{2}\left (h_{\theta}(x^i;\theta)-y^{i} \right )^2

\phi (z^i)帶入的話,會發現這是一個非凸函數,這就意味着代價函數有着許多的局部最小值,不利於求解。

å¸å½æ°åéå¸å½æ°

而最大似然作爲邏輯迴歸模型的損失函數,很容易得到參數的最優解(凸函數)。所以說選取的標準要容易測量,這就是邏輯迴歸損失函數爲什麼使用最大似然而不用最小二乘的原因。

(爲什麼MSE是非凸函數,有人能解答一下嘛))

3. 極大似然估計

邏輯迴歸與極大似然估計的關係:

最大似然估計就是通過已知結果去反推最大概率導致該結果的參數。極大似然估計是概率論在統計學中的應用,它提供了一種給定觀察數據來評估模型參數的方法,即 “模型已定,參數未知”,通過若干次試驗,觀察其結果,利用實驗結果得到某個參數值能夠使樣本出現的概率爲最大,則稱爲極大似然估計。邏輯迴歸是一種監督式學習,是有訓練標籤的,就是有已知結果的,從這個已知結果入手,去推導能獲得最大概率的結果參數$\theta$,只要我們得出了這個參數,那我們的模型就自然可以很準確的預測未知的數據了。

之前提到了h_{\theta}(x;\theta)可以視爲類1的後驗概率,所以有:

h_\theta(x;\theta)=p(y=1|x;\theta)=\phi (w^Tx+b)=\phi(z)=\frac{1}{1+e^{-\theta ^Tx}}

p(y=0|x;w)=1-\phi (z)

將上面兩式寫爲一般形式:

p(y|x;\theta)=h_\theta(x;\theta)^y(1-h_\theta(x;\theta))^{(1-y)}

接下來使用極大似然估計來根據給定的訓練集估計出參數w:

L(\theta)=\prod_{i=1}^{n}p(y^i|x^i;\theta)=\prod_{i=1}^{n}h_\theta(x^i;\theta)^{y^{i}}(1-h_\theta(x^i;\theta))^{(1-y^i)}

爲了簡化運算,我們對上述等式兩邊取一個對數:

l(\theta)=InL(\theta)=\sum_{i=1}^{n}y^iIn(h_\theta(x^i;\theta))+(1-y^i)In(1-h_\theta(x^i;\theta))

現在要求使得l(w)最大的w,在l(w)前面加一個負號就變爲最小化負對數似然函數:

J(\theta)=-l(\theta)=-\left ( \sum_{i=1}^{n}y^iIn(h_\theta(x^i;\theta))+(1-y^i)In(1-h_\theta(x^i;\theta)) \right )

如此就得到了代價函數。讓我們更好地理解這個代價函數:

J(h_\theta(x;\theta),y;\theta)=-yIn(h_\theta(x;\theta))-(1-y)In(1-h_\theta(x;\theta))

等價於:

J(h_\theta(x;\theta),y;\theta)=\left\{\begin{matrix} -In(h_\theta(x;\theta)),\ if\ y=1 \\ -In(1-h_\theta(x;\theta)), \ if\ y=0 \end{matrix}\right.

costfunction

可以看出,如果樣本的類別爲1,估計值\phi (z)越接近1付出的代價越小,反之越大。

同理,如果樣本的值爲0的話,估計值\phi (z)越接近於0付出的代價越小,反之越大。

4. 利用梯度下降法求解參數w

首先解釋一些問什麼梯度的負方向就是代價函數下降最快的方向,藉助於泰勒展開:

f(x+\delta )-f(x)\approx f'(x)\cdot \delta

f'(x)\delta均爲向量,那麼兩者的內積就等於:

f'(x)\cdot \delta =\left \| f'(x) \right \|\cdot \left \| \delta \right \|\cdot cos \theta

\theta =\pi時,也就是在f'(x)的負方向時,取得最小值,也就是下降的最快方向了。

梯度下降:

\begin{aligned} w_j&=w_j+\Delta w_j\\ &=w_j-\eta \frac{\partial J(w)}{\partial w_j} \end{aligned}

\eta爲學習率,用來控制步長

所以,在使用梯度下降法更新權重時,只要根據下式即可:

w_j=w_j+\eta \sum^{n}_{i=1}\left(y_i- \phi(z^i)\right )x_j

x_j代表第j列特徵,w_j代表第j個特徵對應的參數)

當樣本量極大的時候,每次更新權重都需要遍歷整個數據集,會非常耗時,這時可以採用隨機梯度下降法:

w_j=w_j+\eta\left(y_i- \phi(z^i)\right )x_j,for\ i\ in\ range(n)

每次僅用一個樣本點來更新迴歸係數,這種方法被稱作隨機梯度上升法。(由於可以在新樣本到來時對分類器進行增量式更新,因此隨機梯度算法是一個在線學習算法。)它與梯度上升算法效果相當,但佔用更少的資源。

4.1 三種梯度下降方法的選擇

  1. 批量梯度下降BGD(Batch Gradient Descent):優點:會獲得全局最優解,易於並行實現。缺點:更新每個參數時需要遍歷所有的數據,計算量會很大並且有很多的冗餘計算,導致當數據量大的時候每個參數的更新都會很慢。
  2. 隨機梯度下降SGD:優點:訓練速度快;缺點:準確率下降,並不是全局最優,不易於並行實現。它的具體思路是更新沒一個參數時都是用一個樣本來更新。(以高方差頻繁更新,優點是使得sgd會跳到新的和潛在更好的局部最優解,缺點是使得收斂到局部最優解的過程更加的複雜。?)
  3. small batch梯度下降:結合了上述兩點的優點,每次更新參數時僅使用一部分樣本,減少了參數更新的次數,可以達到更加穩定的結果,一般在深度學習中採用這種方法。

在實際應用時根據樣本量的大小選擇不同的梯度更新方法。

5.邏輯迴歸優缺點

優點:

1.直接對分類可能性進行建模,無需實現假設數據分佈,這樣就避免了假設分佈不準確所帶來的問題(周志華.機器學習)

(其實很多機器學習模型本身都是對數據分佈有一定的假設的,在這個假設前提之下去進行理論研究有助於我們關注主要矛盾,忽律次要矛盾。但是在工程當中,很多時候我們對數據的分佈其實是不瞭解的,貿然對數據進行假設容易造成模型無法無法擬合真實的分佈。)

2.形式簡單,模型的可解釋性非常好,特徵的權重可以看到不同的特徵對最後結果的影響。 

2.除了類別,還能得到近似概率預測,這對許多需利用概率輔助決策的任務很有用。

3.對率函數是任意階可導的凸函數,有很好的數學性質。

缺點:

1.準確率不是很高,因爲形勢非常的簡單,很難去擬合數據的真實分佈?

2.本身無法篩選特徵。

參考資料

1.周志華.機器學習

2.邏輯迴歸(logistic regression)的本質——極大似然估計

3.邏輯迴歸的常見面試點總結

4.https://blog.csdn.net/dpengwang/article/details/96597606

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章