天天看點

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

如今機器學習、深度學習可謂炙手可熱,人工智能也确實開始影響、改變着我們的生活。正因如此,很多同學開始接觸或者學習這方面的知識。機器學習的入門是有難度的,因為它不僅要求你會編碼,還要你熟悉高等數學,比如線性代數,微積分等,除此之外,還要懂統計學。如果你想入門機器學習,那麼一定要好好學習邏輯回歸。原因如下:

    1.邏輯回歸可以幫你更好地了解機器學習;

    2.邏輯回歸已經可以解決多數問題了;

    3.邏輯回歸是統計學習的重要工具;

    4.邏輯回歸是神經網絡的基礎;

下面開始我們的正文,在正式介紹邏輯回歸前,我們先從邏輯回歸的基礎--線性回歸開始。

1.線性回歸

現在有如下圖所示的資料集

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

。線性回歸(Linear Regression)試圖學習得一個線性模型盡可能準确地預測每一個x所對應真實值y的輸出标記。

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

上圖中的黃色直線就是我們想要學習得到的模型,也叫假設函數(Hypothetical function):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 ,使得 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                           (1)

有了假設函數,就可以得到損失函數,它是用來估量你模型的預測值f(x)與真實值y的不一緻程度,即誤差。

我們隻要确定好模型中的w和b,即可确定模型。如何确定w和b呢,這裡就要引入均方誤差的概念,采用均方差作為損失函數。 

均方誤差,也叫最小二乘法,是指真實值y和預測值f(x)之間的方差平均值,它是回歸問題中最常用的性能度量,我們将用最小二乘法作為損失函數:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                    (2)

我們要讓式(2)均方誤差最小化,即

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導
機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                           (3)

這樣,問題就轉為求解w和b使得式(2)的變式:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                            (4)

最小化的過程。這個過程也叫線性回歸模型的最小二乘“參數估計”。

式(4)是關于w和b的凸函數,當它關于w和b的導數均為0時,得到w和b的最優解。這是偏導數的特性,大家應該都知道。

我們将式(4)分别對w和b求導,得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                             (5)

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                  (6)

令式(5)和式(6)為零,即可得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                           (7)

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                     (8)

式(7)中 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 為x所有取值的均值。

更一般的,我們将x的每一個取值向量化,即:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

則,線性回歸模型可以寫為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                            (9)

2.聯系函數

真實環境下,線性模型是很難适用的,或者說,适用的場景很少。比如,y的取值是在指數尺度上的映射,它的函數關系為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                            (10)

對于這樣的模型我們如何使用線性模型的思想去模組化呢?這就需要在原來的線性模型的基礎上,做些函數映射即可。我們先将

式(10)兩邊做些等價變化,得到下式:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                         (11)

這樣一來,在形式上是不是跟線性模型就很像了,我們看到等式右邊就是我們上面提到的線性模型,仍可做線性回歸。但實質上我們已經是在對輸入x到輸出y的非線性函數模組化了。

是以,對于非線性模型,我們隻要稍作映射就可以繼續采用線性回歸的思維去求解。更一般地,對于非線性模型,令

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                         (12)

這樣就得到了廣義的線性模型。式(12)中的

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 就是“聯系函數”。對于式(10),它的的 g 函數就是 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 函數。

這就是為什麼我們要先介紹線性模型的原因,因為下面的邏輯回歸也是基于線性回歸的思想。這就是數學之美!

3.sigmoid函數

要說邏輯回歸,必須先說下它的核心,sigmoid函數。

我們知道,線性回歸模型是針對回歸問題的,邏輯回歸雖然它的名字裡有“回歸”二字,但它卻是一個用于解決分類問題的算法。

這裡我們考慮二分類問題。對于二分類問題,它的輸出 y 取值隻有 0 和 1 兩種。

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

。這樣通過上面一節聯系函數的介紹,大家應該知道,我們需要找到一個聯系函數 g ,将線性回歸模型的預測值,轉為 0 或者 1。最理想的函數是“機關階躍函數”,也稱做赫維賽德(Heaviside)函數。函數圖形如下:             

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

但由于它不是連續函數,是以無法用作 g 函數。有沒有圖形類似上圖,且單調可微的函數替代它呢?答案就是我們這節的主角,sigmoid函數,也叫對數幾率函數(logistic function)。

Sigmoid函數的表達式為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                       (13)

它的函數圖形為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

将sigmoid函數作為 g 函數帶入到式(12)中,得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                  (14)

這樣我們就可以看出,我們依舊是用線性回歸模型去逼近真實的對數幾率函數模型。類似于式(11),我們将式(14)做些變化,得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                               (15)

如果我們把 y 看做是 x 為 1 的可能性,那麼1 - y 就是 x 為 0 的可能性。這兩者的比值就是“幾率”。反應了 x 為 1 的相對可能性。對它們的比值取對數,就得到“對數幾率”(log odds,也叫logit),這就是邏輯回歸命名的由來。其實它跟邏輯兩個字根本不搭嘎(手動滑稽)。

是以邏輯回歸的本質是機率。它可以得到y的預測值為0和1的機率,在sklearn中,通過邏輯回歸模組化,使用 predict_proba 方法可以看到0,1對應的機率。使用 predict 方法則以0.5為分界線,直接告訴你x對應的預測結果0還是1。

4.損失函數

在計算邏輯回歸的損失函數之前,我們先做些準備工作。

我們先将線性部分的公式 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 簡化為 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

,如果你不知道為什麼能這麼寫,那就該補補線性代數的功課了。這樣一來我們的假設函數,就可以寫成:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                (16)

我們令:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                                (17)

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                        (18)

則,我們的假設函數式(16)可寫成:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                       (19)             

這樣,我們按照第一節使用最小二乘的方式得到公式(20):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                     (20)

我們知道求解最優解是通過求導的方式。但由于在邏輯回歸中,假設函數的形式如式(16)所示,它無法使用線性模型的這種方式求最優解。為什麼線性模型可以,邏輯回歸就不行了呢。因為線性回歸的最小二乘方程是個凸函數,而邏輯回歸的不是。他兩的圖形如下,左圖為邏輯回歸,右圖為線性回歸:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導
機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

既然使用傳統的最小二乘發無法求出最優解,我們就需要換種方法,重新寫個損失函數。

我們使用“極大似然法”來求最優解。使用極大似然法得到新的損失函數為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                               (21)

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                         (22)

将式(21)(22)兩者合為一個完整的損失函數式(23):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

          (23)

更一般的,針對所有訓練樣本,我們的損失函數為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導
機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                (24)

有了損失函數,我們隻要能找到

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

,讓損失函數最小,就可以得到我們的假設函數

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

,也就得到最終的邏輯回歸模型。

通過不斷的更新

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 的值,讓損失函數不斷變小,直至最小的過程是一種最優化的過程。求解最優化問題的方法一般采用梯度下降法。

5.梯度下降法

梯度下降方法基于以下的觀察:如果實值函數 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 在點 a 處可微且有定義,那麼函數 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 在 a 點沿着梯度相反的方向 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

下降最快。

因而,如果  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 ,對于 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 為一個夠小數值時成立,那麼  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 。

考慮到這一點,我們可以從函數 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  的局部極小值的初始估計 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  出發,并考慮如下序列 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  使得

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 ,是以可得到 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 。

如果順利的話序列 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  收斂到期望的極值。

下面的圖檔示例了這一過程,這裡假設  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  定義在平面上,并且函數圖像是一個碗形。藍色的曲線是等高線(水準集),即函數  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  為常數的集合構成的曲線。紅色的箭頭指向該點梯度的反方向。(一點處的梯度方向與通過該點的等高線垂直)。沿着梯度下降方向,将最終到達碗底,即函數 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  值最小的點。

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

6.梯度公式推導

通過第五節的介紹,我們知道要想讓損失函數找到最小值,隻要求出損失函數,即式(24)的關于 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  的偏導數(也就是梯度),然後通過梯度,不斷更新 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 值,進而得到最優解(也就是損失函數的極小值點)。

按照第五節的介紹,我們寫出  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

 的更新表達式為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

也就是:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                (25)

是以,到這裡,我們的工作就是對損失函數式(24)求關于  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

  偏導數。

這是全部理論知識當中的難點也是煩點,有基礎的同學可以自行推導。下面是公式推導過程:

首先記下這幾個公式,第一個是損失函數,式(24),也就是我們要求導的對象:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

然後是假設函數, 式(16):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

我們令 

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

,則式(16)可以寫成下式:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                              (26)

然後,為了讓數學公式看着不那麼吓人,不那麼複雜,我們将式(24)中的所有下标省掉,将 前面的系數 -1/m 先省略,進而簡寫成式(27)的形式:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

       (27)

将其展開:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

将前兩項合并:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

按照式(26),将  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

   替換,得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

對于等式右邊的第一部分 log 函數裡的分子分母分别乘以  

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

,等式右邊展開,得到

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

進一步化簡:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

繼續化簡,注意中間的 '+' 号變為了 '-' 号,得到最終簡化的損失函數公式(28):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                       (28)

對式(28)求導,得到求導式(29):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                               (29)

在對簡化後的損失函數求導之前,先複習下梯度優化的精髓,鍊式法則。

鍊式法則或鍊鎖定則(英語:chain rule),是求複合函數導數的一個法則。設 f 和 g 為兩個關于 x 的可導函數,則複合函數

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

的導數

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

是以式(28)等式右邊的log函數的關于θ的導數為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

進一步求導,得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

最後得到式(29):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                            (30)

将式(30)代入式(29),得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

進一步化簡,得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

由式(26),可進一步得到:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                                      (31)

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

,得到最後的導數為:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

由于開始我們為了友善,去掉了系數和小标,現在,将他們加上,得到最終的損失函數導數式(32):

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                      (32)

得到導數後,我們将它代入 θ 的更新表達式(25)中,進而得到最終的結果:

機器學習:邏輯回歸詳細推導1.線性回歸2.聯系函數3.sigmoid函數4.損失函數5.梯度下降法6.梯度公式推導

                                  (33)

有了式(33),下面我們就可以通過代碼實作邏輯回歸了,至此全文結束。

本文參考資料:

1.周志華,《機器學習》

2.吳恩達coursera教程,https://www.coursera.org/learn/machine-learning/home/welcome

3.維基百科

繼續閱讀