機器學習(迴歸六)——邏輯迴歸

邏輯迴歸本質是分類問題,而且是二分類問題,不屬於迴歸,爲何把邏輯迴歸放到迴歸系統博客中呢?我們可以這樣理解,邏輯迴歸就是用迴歸的辦法來做分類。它是在線性迴歸的基礎上,通過Sigmoid函數進行了非線性轉換,從而具有更強的擬合能力。

Sigmoid函數

Sigmoid函數具體的計算公式如下:
g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}
在這裏插入圖片描述
當x爲0時,Sigmoid函數值爲0.5。隨着x的增大,對應的Sigmoid值將逼近於1;而隨着x的減小,Sigmoid值將逼近於0。兩種座標尺度下的Sigmoid函數圖。上圖的橫座標爲-5到5,這時的曲線變化較爲平滑;下圖橫座標的尺度足夠大,可以看到,在x = 0點處Sigmoid函數看起來很像階躍函數,如果橫座標刻度足夠大(上圖中的下圖),Sigmoid函數看起來很像一個階躍函數。

Logistic迴歸分類器

爲了實現Logistic迴歸分類器,我們可以在每個特徵上都乘以一個迴歸係數,然後把所有的結果值相加,將這個總和代入Sigmoid函數中,進而得到一個範圍在0~1之間的數值。任何大於0.5的數據被分入1類,小於0.5即被歸入0類。所以,Logistic迴歸也可以被看成是一種概率估計。
p=hθ(x)=g(θTx)=11+eθTxp=h_\theta (x)=g(\theta ^Tx)=\frac{1}{1+e^{-\theta ^Tx}}
所以說,Logistic迴歸分類器可以看成線性迴歸與sigmoid的混合函數,是一個二分類的模型(這裏是取的0和1,有的算法是+1和-1)
y={01 y=\begin{cases} 0\\ 1 \end{cases}
y^={0,P(y^=1)>p1,P(y^=0)>p \hat{y}=\begin{cases} 0,P(\hat{y}=1)>p\\ 1,P(\hat{y}=0)>p \end{cases}
在用於分類時,實際上是找一個閾值,大於閾值的屬於1類別,小於的屬於0類別。(閾值是可根據具體情況進行相應變動的)

公式推導

\, y=1 y=0
p(y|x) θ\theta 1θ1- \theta

我們假設
P(y=1x;θ)=hθ(x)P(y=0x;θ)=1hθ(x) P(y=1│x;θ)=h_θ (x) \\ P(y=0│x;θ)=1−h_θ (x)
把兩個式子結合
P(yx;θ)=(hθ(x))y(1hθ(x))1y P(y│x;θ)=\left( h_θ (x) \right)^y \left(1−h_θ (x)\right)^{1−y}
這是因爲,我們期望的是,對於單個樣本

  • 當y=1時,我們期望 hθ(x)h_θ (x) 最大
  • 當y=0時,我們期望 1hθ(x)1−h_θ (x) 最大

所以綜合起來:我們期望 P(yx;θ)=(hθ(x))y(1hθ(x))1yP(y│x;θ)=\left( h_θ (x) \right)^y \left(1−h_θ (x)\right)^{1−y} 最大

我們可以對所有樣本取似然函數
L(θ)=p(yX;θ)=i=1mp(y(i)x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))(1y(i)) \begin{aligned} L(\theta) =p( \vec{y} | X;\theta) = \prod_{i=1}^m p \left( y^{(i)}|x^{(i)};\theta\right) = \prod_{i=1}^m \left( h_\theta \left( x^{(i)} \right) \right)^{y^{(i)}} \left( 1-h_\theta \left( x^{(i)} \right) \right)^{\left(1-y^{(i)} \right)} \end{aligned}
累乘不好求,我們可以求其對數似然函數
l(θ)=logL(θ)=i=1m(y(i)loghθ(x(i)))+(1y(i))log(1hθ(x(i))) \begin{aligned} l{(\theta)}= \log L{(\theta)} = \sum_{i=1}^m \left( y^{(i)} \log h_\theta \left( x^{(i)}\right) \right) + \left(1-y^{(i)} \right) \log \left( 1-h_\theta \left( x^{(i)} \right) \right) \end{aligned}

最值的問題,我們可以求導。
l(θ)θj=i=1m(y(i)hθ(x(i))1y(i)1hθ(x(i)))hθ(x(i))θj=i=1m(y(i)g(θTx(i))1y(i)1g(θTx(i)))g(θTx(i))θj=i=1m(y(i)g(θTx(i))1y(i)1g(θTx(i)))g(θTx(i))(1g(θTx(i)))(θTx(i))θj=i=1m(y(i)(1g(θTx(i)))(1y(i))g(θTx(i)))Xj(i)=i=1m(y(i)g(θTx(i)))Xj(i) \begin{aligned} \frac{\partial l(\theta)}{\partial \theta_j} &=\sum_{i=1}^m \left( \frac{y^{(i)}}{h_\theta (x^{(i)})} - \frac{1-y^{(i)}}{1-h_\theta (x^{(i)})} \right) \cdot \frac{\partial h_\theta (x^{(i)})}{\partial \theta_j}\\ &=\sum_{i=1}^m \left( \frac{y^{(i)}}{g(\theta ^T x^{(i)})} - \frac{1-y^{(i)}}{1-g(\theta ^T x^{(i)})} \right) \cdot \frac{\partial g(\theta ^T x^{(i)})}{\partial \theta_j}\\ &=\sum_{i=1}^m \left( \frac{y^{(i)}}{g(\theta ^T x^{(i)})} - \frac{1-y^{(i)}}{1-g(\theta ^T x^{(i)})} \right) \cdot g(\theta ^T x^{(i)}) \left( 1-g(\theta ^T x^{(i)}) \right) \cdot \frac{\partial (\theta ^T x^{(i)})}{\partial \theta_j}\\ &= \sum_{i=1}^m \left( y^{(i)} \left( 1-g(\theta^T x^{(i)}) \right) -(1-y^{(i)}) g(\theta^T x^{(i)}) \right) \cdot X_j^{(i)}\\ &= \sum_{i=1}^m \left( y^{(i)} -g(\theta^T x^{(i)}) \right) \cdot X_j^{(i)} \end{aligned}

不難發現:和梯度下降的公式極其類似
i=1m(hθ(x(i))y(i))xj(i)\sum_{i=1}^m \left(h_\theta(x^{(i)})-y^{(i)} \right) x_j^{(i)}
這裏需要補充一下,在上面求導的過程中,第二行到第三行省略了Sigmoid求導的過程,具體如下:

g(z)=(11+ez)=ez(1+ez)2=11+ezez1+ez=11+ez(111+ez)=g(z)(1g(z)) \begin{aligned} g^{'} (z) &= \left( \frac{1}{1+e^{-z}} \right)^{'}\\ &=\frac{e^{-z}}{(1+e^{-z})^2}\\ &=\frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}}\\ &=\frac{1}{1+e^{-z}} \cdot \left( 1- \frac{1}{1+e^{-z}}\right)\\ &= g(z) \cdot \left( 1-g(z) \right) \end{aligned}

接着上面對數似然的求導結果。我們期望的是極大似然,可以進行一下轉換,類似於梯度下降來求 θ\theta
θj=θj+αi=1m(y(i)hθ(x(i)))xj(i)\theta_j = \theta_j + \alpha \sum_{i=1}^m \left( y^{(i)} - h_\theta (x^{(i)})\right) \cdot x_j^{(i)}
上式爲BGD
θj=θj+α(y(i)hθ(x(i)))xj(i) \theta_j = \theta_j + \alpha \left(y^{(i)} - h_\theta(x^{(i)}) \right) x_j^{(i)}
上式爲SGD

我們要讓對數似然函數最大,也就是他的相反數 l(θ)-l(θ) 最小。而 l(θ)-l(θ) 最小化,則可以看成損失函數,求其最小化:
loss=l(θ)loss = -l(\theta)

先看一下極大似然估計
L(θ)=i=1mp(y(i)x(i);θ)=i=1mpiy(i)(1pi)1y(i) L(\theta)=\prod_{i=1}^m p\left( y^{(i)} | x^{(i)};\theta \right)=\prod_{i=1}^m p_i^{y^{(i)}} \left( 1-p_i \right)^{1-y^{(i)}}
l(θ)=lnL(θ)=i=1mln(piy(i)(1pi)1y(i))l(\theta)=\ln L(\theta)=\sum_{i=1}^m \ln \left( p_i^{y^{(i)}} \left( 1-p_i \right)^{1-y^{(i)}} \right)

注意,這裏 pi=hθ(x(i))=11+eθTx(i)p_i=h_\theta (x^{(i)})=\frac{1}{1+e^{-\theta^T x^{(i)}}}

所以,我們可以得到損失函數:
loss=l(θ)=i=1m(y(i)ln(pi)+(1y(i))ln(1pi))=i=1m(y(i)ln(hθ(x(i)))(1y(i))ln(1hθ(x(i)))) \begin{aligned} loss &= -l(\theta)\\ &=-\sum_{i=1}^m \left( y^{(i)} \ln(p_i) +(1-y^{(i)}) \ln(1-p_i)\right)\\ &=\sum_{i=1}^m \left( -y^{(i)} \ln(h_\theta (x^{(i)})) -(1-y^{(i)}) \ln(1-h_\theta (x^{(i)}))\right) \end{aligned}
這個結果就是交叉熵損失函數。

總結

就一句話:通過以上過程,會發現邏輯迴歸的求解,跟線性迴歸的求解基本相同。

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