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