天天看點

機器學習——邏輯斯特回歸(包含梯度下降推導)1. 前言2. Logistic Regression模型

文章目錄

  • 1. 前言
  • 2. Logistic Regression模型
    • 2.1 公式
    • 2.2 Sigmoid函數
    • 2.3 Logistic Regression模型的損失函數
    • 2.3 Logistic Regression模型的梯度下降
      • 2.3.1 sigmoid函數的求導形式
      • 2.3.2 LR函數的求導

1. 前言

在之前已經簡單闡述了“線性回歸”模型,具體的介紹位址為:https://blog.csdn.net/qq_30232405/article/details/104153928

這種簡單的線性回歸在拟合複雜模型的時候,會出現拟合能力不足的情況。

例如下圖已經存在的資料:

機器學習——邏輯斯特回歸(包含梯度下降推導)1. 前言2. Logistic Regression模型
  • 橫坐标表示:tumor size(惡性良性腫瘤大小),用 x x x表示。
  • 橫坐标:malignant(惡行惡性良性腫瘤),可以用如下公式表示:

    h θ ( x ) = θ T x h_\theta(x) = \theta^{\mathrm{T}}x hθ​(x)=θTx

圖中有兩條拟合線:

  • 粉紅色直線:當圖中沒有最右異常點的時候,可以用線性回歸進行拟合
  • 藍色直線:當圖中有最右異常點時,用直線拟合的。

如果一開始設定了 h θ ( x ) h_\theta(x) hθ​(x)大于0.5時,預設類别為1(惡性惡性良性腫瘤),少于0.5時類别為0(良性惡性良性腫瘤),則粉紅色的直線對應的曲線恰好可以有效區分兩種類别。但是藍色直線對應的 x x x坐标則向左偏移,這時候會把惡性良性腫瘤錯誤預測為0。

為了能夠得到更有效的模型,則需要logistic regression(LR)模型來解決這個問題。

2. Logistic Regression模型

2.1 公式

首先展示LR模型的公式:

h θ ( x ) = g ( θ T x ) g ( θ T x ) = 1 1 + e − θ T x h_\theta(x) = g(\theta^{\mathrm{T}}x) \\ g(\theta^{\mathrm{T}}x)= \frac{1}{1+e^{-\theta^{\mathrm{T}}x}} hθ​(x)=g(θTx)g(θTx)=1+e−θTx1​

可以看到,LR模型在普通的線性回歸中增加了函數 g g g,如果把 z = θ T x z=\theta^{\mathrm{T}}x z=θTx,可以把 g g g公式化簡為:

g ( z ) = 1 1 + e − z g(z)= \frac{1}{1+e^{-z}} g(z)=1+e−z1​

這個公式就是典型的sigmoid函數,也可以稱為是logistic函數。

2.2 Sigmoid函數

現在觀察一下sigmoid函數的圖像形狀:

機器學習——邏輯斯特回歸(包含梯度下降推導)1. 前言2. Logistic Regression模型
  • 當 z z z趨向于infinity時, g ( z ) g(z) g(z)接近于1
  • 當 z z z趨向于infinitesimal時, g ( z ) g(z) g(z)接近于0

用上面“預測惡性良性腫瘤是否為惡性”的例子,不難看出 h θ ( x ) h_\theta(x) hθ​(x)的輸出值就代表惡性良性腫瘤是否為惡性的機率。

例如:當 h θ ( x ) = 0.7 h_\theta(x)=0.7 hθ​(x)=0.7,也就是說該惡性良性腫瘤有70%的機率會是惡性惡性良性腫瘤。是以,如果給定 x x x和 θ \theta θ的值,預測 y y y的機率可以表示為:

h θ ( x ) = P ( y ∣ x ; θ ) h_\theta(x)=P(y|x;\theta) hθ​(x)=P(y∣x;θ)

對于兩分類來說,這種函數兩個性質:

  • P ( y = 0 ∣ x ; θ ) + P ( y = 1 ∣ x ; θ ) = 1 P(y=0|x;\theta)+P(y=1|x;\theta)=1 P(y=0∣x;θ)+P(y=1∣x;θ)=1
  • P ( y = 0 ∣ x ; θ ) = 1 − P ( y = 1 ∣ x ; θ ) P(y=0|x;\theta)=1-P(y=1|x;\theta) P(y=0∣x;θ)=1−P(y=1∣x;θ)

2.3 Logistic Regression模型的損失函數

回歸一下,之前的線性回歸模型的損失函數為:

J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=2m1​i=1∑m​(hθ​(x(i))−y(i))2

也可以用另外的符号來表示:

C o s t ( h θ ( x ) , y ) = J ( θ ) Cost(h_\theta(x), y)=J(\theta) Cost(hθ​(x),y)=J(θ)

如果我們把線性回歸的損失函數 J ( θ ) J(\theta) J(θ)以圖像的形式畫出來:

機器學習——邏輯斯特回歸(包含梯度下降推導)1. 前言2. Logistic Regression模型

可以看到這個函數是凸函數,可以求出全局最優點。

而如果把 h θ ( x ) h_\theta(x) hθ​(x)換成LR模型的函數,同時畫出其 J ( θ ) J(\theta) J(θ)的圖像

機器學習——邏輯斯特回歸(包含梯度下降推導)1. 前言2. Logistic Regression模型

這時候函數是非凸函數,存在很多的局部最優點。是以需要像一個新的損失函數,它應該具有兩個基本的性質:

  • 能夠代表預測函數和正确類别之間的距離。
  • 最好函數是一個凸函數,具有全局最優點。

是以研究者找到了一個比較适合的損失函數:

C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) )    i f   y = 1 − l o g ( 1 − h θ ( x ) )    i f   y = 0 Cost(h_\theta(x), y)=\left\{ \begin{aligned} -log(h_\theta(x)) ~~ if~y=1 \\ -log(1-h_\theta(x)) ~~ if~y=0\\ \end{aligned} \right. Cost(hθ​(x),y)={−log(hθ​(x))  if y=1−log(1−hθ​(x))  if y=0​

為什麼要引入這樣的損失函數呢,接下來可以用對應的圖像進行解釋。

  • 當 y = 1 y=1 y=1時,其損失函數圖像為:
    機器學習——邏輯斯特回歸(包含梯度下降推導)1. 前言2. Logistic Regression模型
    由于真實标簽為1,當 h θ ( x ) h_\theta(x) hθ​(x)接近于1時,說明此時函數的預測與真實标簽是一緻的,那麼損失函數的值就接近于0。如果要進行參數更新,這時候由于損失函數接近0,參數幾乎不用更新。當 h θ ( x ) h_\theta(x) hθ​(x)接近于0時,說明此時函數的預測與真實标簽是不一緻的,這會導緻損失函數的值增大,需要更快的更新參數。
  • 當 y = 0 y=0 y=0時,其損失函數圖像為:
    機器學習——邏輯斯特回歸(包含梯度下降推導)1. 前言2. Logistic Regression模型
    其性質說明和上面的圖像一緻,這就不詳細說明了。

2.3 Logistic Regression模型的梯度下降

首先對上面的LR公式進行合并:

J ( θ ) = C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) J(\theta) =Cost(h_\theta(x^{(i)}), y^{(i)})= -\frac{1}{m} \sum_{i=1}^{m} y^{(i)} log(h_\theta(x^{(i)})) +(1-y^{(i)} )log(1-h_\theta(x^{(i)} )) J(θ)=Cost(hθ​(x(i)),y(i))=−m1​i=1∑m​y(i)log(hθ​(x(i)))+(1−y(i))log(1−hθ​(x(i)))

  • 當 y ( i ) = 1 y^{(i)}=1 y(i)=1時,則會變成:

    J ( θ ) = − 1 m ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) J(\theta)= -\frac{1}{m} \sum_{i=1}^{m} y^{(i)} log(h_\theta(x^{(i)})) J(θ)=−m1​i=1∑m​y(i)log(hθ​(x(i)))

  • 當 y ( i ) = 0 y^{(i)}=0 y(i)=0時,則會變成:

    J ( θ ) = − 1 m ∑ i = 1 m ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) J(\theta)= -\frac{1}{m} \sum_{i=1}^{m} (1-y^{(i)} )log(1-h_\theta(x^{(i)} )) J(θ)=−m1​i=1∑m​(1−y(i))log(1−hθ​(x(i)))

利用梯度下降法,如果要求出最優參數 θ \theta θ,則需要最小化 J ( θ ) J(\theta) J(θ),同時更新參數:

θ j : = θ j − α ∂ J ( θ ) ∂ θ j \theta_j:=\theta_j- \alpha \frac{\partial J(\theta)}{\partial \theta_j} θj​:=θj​−α∂θj​∂J(θ)​

要對上面這個偏導數求解,首先要知道sigmoid函數求導後的形式。

2.3.1 sigmoid函數的求導形式

∂ g ( z ) ∂ z = ∂ ∂ z 1 1 + e − z = e − z ( 1 + e − z ) 2 = 1 1 + e − z − 1 ( 1 + e − z ) 2 = g ( z ) ( 1 − g ( z ) ) \frac{\partial g(z)}{\partial z} = \frac{\partial }{\partial z} \frac{1}{1+e^{-z}} =\frac{e^{-z}}{(1+e^{-z})^2} = \frac{1}{1+e^{-z}} - \frac{1}{(1+e^{-z})^2} =g(z)(1-g(z)) ∂z∂g(z)​=∂z∂​1+e−z1​=(1+e−z)2e−z​=1+e−z1​−(1+e−z)21​=g(z)(1−g(z))

可以看到sigmoid函數的求導形式有一個很特别的地方:它的求導形式都可以用原函數表示。最後得到公式:

g ( z ) ′ = g ( z ) ( 1 − g ( z ) ) g(z)^{'}=g(z)(1-g(z)) g(z)′=g(z)(1−g(z))

如果對 g ( θ T x ) g(\theta^{\mathrm{T}}x) g(θTx)求導,其過程差不多,但是會多出一個 x j ( i ) x^{(i)}_j xj(i)​相乘:

∂ g ( θ T x ) ∂ θ j = g ( θ T x ) ( 1 − g ( θ T x ) ) x j ( i ) \frac{\partial g(\theta^{\mathrm{T}}x)}{\partial \theta_j}=g(\theta^{\mathrm{T}}x)(1-g(\theta^{\mathrm{T}}x))x^{(i)}_j ∂θj​∂g(θTx)​=g(θTx)(1−g(θTx))xj(i)​

  • 要注意的是 θ \theta θ和 x x x都是一個向量形式

2.3.2 LR函數的求導

有了上述sigmoid函數的求導形式作為背景,我們可以化簡 ∂ J ( θ ) ∂ θ j \frac{\partial J(\theta)}{\partial \theta_j} ∂θj​∂J(θ)​。在損失函數 J ( θ ) J(\theta) J(θ)中, θ \theta θ和 x x x都是一個向量形式,也就是:

θ = [ θ 0 , θ 1 , . . . , θ n ] x = [ x 0 , x 1 , . . . , x n ] \theta=[\theta_0,\theta_1,...,\theta_n] \\ x=[x_0,x_1,...,x_n] θ=[θ0​,θ1​,...,θn​]x=[x0​,x1​,...,xn​]

當我們僅僅針對 θ j \theta_j θj​進行求導的時候:

∂ J ( θ ) ∂ θ j = − 1 m ∑ i m y ( i ) h θ ( x ( i ) ) ∂ h θ ( x ( i ) ) ∂ θ j − 1 − y ( i ) 1 − h θ ( x ( i ) ) ∂ h θ ( x ( i ) ) ∂ θ j = − 1 m ∑ i m y ( i ) g ( θ T x ) ∂ g ( θ T x ) ∂ θ j − 1 − y ( i ) 1 − g ( θ T x ) ∂ g ( θ T x ) ∂ θ j \frac{\partial J(\theta)}{\partial \theta_j} = -\frac{1}{m} \sum_i^{m} \frac{y^{(i)}}{h_\theta(x^{(i)})} \frac{\partial h_\theta(x^{(i)})}{\partial \theta_j} - \frac{1-y^{(i)}}{1-h_\theta(x^{(i)})} \frac{\partial h_\theta(x^{(i)})}{\partial \theta_j} \\ = -\frac{1}{m} \sum_i^{m} \frac{y^{(i)}}{g(\theta^{\mathrm{T}}x)} \frac{\partial g(\theta^{\mathrm{T}}x)}{\partial \theta_j} - \frac{1-y^{(i)}}{1-g(\theta^{\mathrm{T}}x)} \frac{\partial g(\theta^{\mathrm{T}}x)}{\partial \theta_j} ∂θj​∂J(θ)​=−m1​i∑m​hθ​(x(i))y(i)​∂θj​∂hθ​(x(i))​−1−hθ​(x(i))1−y(i)​∂θj​∂hθ​(x(i))​=−m1​i∑m​g(θTx)y(i)​∂θj​∂g(θTx)​−1−g(θTx)1−y(i)​∂θj​∂g(θTx)​

可以看到上面需要利用sigmoid函數的求導方法:

∂ J ( θ ) ∂ θ j = − 1 m ∑ i m y ( i ) g ( θ T x ) g ( θ T x ) ( 1 − g ( θ T x ) ) x j ( i ) − 1 − y ( i ) 1 − g ( θ T x ) g ( θ T x ) ( 1 − g ( θ T x ) ) x j ( i ) = − 1 m ∑ i m y ( i ) ( 1 − g ( θ T x ) ) x j ( i ) − ( 1 − y ( i ) ) g ( θ T x ) x j ( i ) = 1 m ∑ i m ( g ( θ T x ) − y ( i ) ) x j ( i ) = 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\theta)}{\partial \theta_j} = -\frac{1}{m} \sum_i^{m} \frac{y^{(i)}}{g(\theta^{\mathrm{T}}x)} g(\theta^{\mathrm{T}}x)(1-g(\theta^{\mathrm{T}}x))x^{(i)}_j - \frac{1-y^{(i)}}{1-g(\theta^{\mathrm{T}}x)} g(\theta^{\mathrm{T}}x)(1-g(\theta^{\mathrm{T}}x))x^{(i)}_j \\ =-\frac{1}{m} \sum_i^{m} y^{(i)} (1-g(\theta^{\mathrm{T}}x))x^{(i)}_j - (1-y^{(i)})g(\theta^{\mathrm{T}}x)x^{(i)}_j \\ =\frac{1}{m} \sum_i^{m}(g(\theta^{\mathrm{T}}x) - y^{(i)})x^{(i)}_j \\ =\frac{1}{m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})x^{(i)}_j ∂θj​∂J(θ)​=−m1​i∑m​g(θTx)y(i)​g(θTx)(1−g(θTx))xj(i)​−1−g(θTx)1−y(i)​g(θTx)(1−g(θTx))xj(i)​=−m1​i∑m​y(i)(1−g(θTx))xj(i)​−(1−y(i))g(θTx)xj(i)​=m1​i∑m​(g(θTx)−y(i))xj(i)​=m1​i∑m​(hθ​(x(i))−y(i))xj(i)​

至此,LR的損失函數的求導形式已經結束,這裡面主要用到了sigmoid函數的求導,推導起來其實是比較簡單的。最後寫出梯度下降的更新公式:

θ j : = θ j − α 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j- \alpha \frac{1}{m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})x^{(i)}_j θj​:=θj​−αm1​i∑m​(hθ​(x(i))−y(i))xj(i)​

對比一下線性回歸的梯度下降公式:

θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x j ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha \frac{1}{m} \sum^{m}_{i=1} (h_{\theta}(x^{(i)}_j) - y^{(i)}) x^{(i)}_j θj​:=θj​−αm1​i=1∑m​(hθ​(xj(i)​)−y(i))xj(i)​

發現他們兩個的公式高度統一,佩服以前的研究工作者能夠想出這麼完美的損失函數。

繼續閱讀