吳恩達機器學習第六章【Logistic Regression】

吳恩達機器學習第六章【Logistic Regression】

Classification【分類問題】

在分類問題中,你要預測的變量 yy 是離散的值,我們提出了一種叫做邏輯迴歸 (Logistic Regression) 的算法。

我們從二元的分類問題開始討論。

我們將因變量(dependent variable)可能屬於的兩個類分別稱爲負向類(negative class)和正向類(positive class),則因變量y0,1y\in {0,1 \\} ,其中 0 表示負向類,1 表示正向類。

但對於線性迴歸問題來說,函數的輸出值可能大於1也可能小於0。所以不可能實現。所以我們研究邏輯迴歸。

Hypothesis Representation 【假說表示】

Classification中我們提到怎麼使分類器的輸出值在0和1之間,由此我們提出一個假設:

hθ(x)=g(θTX)[0,1]h_\theta(x)=g(\theta^TX)\in[0,1]

其中:
XX 代表特徵向量
gg 代表邏輯函數(logistic function)是一個常用的邏輯函數爲S形函數(Sigmoid function),公式爲: g(z)=11+ezg\left( z \right)=\frac{1}{1+{{e}^{-z}}}

在這裏插入圖片描述

在這裏插入圖片描述

hθ(x)h_\theta \left( x \right)的作用是,對於給定的輸入變量,根據選擇的參數計算輸出變量=1的可能性(estimated probablity)即hθ(x)=P(y=1x;θ)h_\theta \left( x \right)=P\left( y=1|x;\theta \right)
例如,如果對於給定的xx,通過已經確定的參數計算得出hθ(x)=0.7h_\theta \left( x \right)=0.7,則表示有70%的機率yy爲正向類,相應地yy爲負向類的機率爲1-0.7=0.3。其中P(y=1x;θ)+P(y=0x;θ)=1P\left( y=1|x;\theta \right)+P\left( y=0|x;\theta \right)=1

Decision Boundary【判定邊界】

在這裏插入圖片描述

在邏輯迴歸中,我們預測:

hθ(x)>=0.5{h_\theta}\left( x \right)>=0.5時,預測 y=1y=1

hθ(x)<0.5{h_\theta}\left( x \right)<0.5時,預測 y=0y=0

根據上面繪製出的 S 形函數圖像,我們知道當

z=0z=0g(z)=0.5g(z)=0.5

z>0z>0g(z)>0.5g(z)>0.5

z<0z<0g(z)<0.5g(z)<0.5

z=θTxz={\theta^{T}}x ,即:
θTX>=0{\theta^{T}}X>=0 時,預測 y=1y=1
θTX<0{\theta^{T}}X<0 時,預測 y=0y=0

現在假設我們有一個模型:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QP9Fv0PO-1581090656051)(https://img.vim-cn.com/84/3fb0dbd3fc2144ee394f5447dfe10f220e5423.png)]

並且參數θ\theta 是向量[-3 1 1]。 則當3+x1+x20-3+{x_1}+{x_2} \geq 0,即x1+x23{x_1}+{x_2} \geq 3時,模型將預測 y=1y=1
我們可以繪製直線x1+x2=3{x_1}+{x_2} = 3,這條線便是我們模型的分界線,將預測爲1的區域和預測爲 0的區域分隔開。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-D7fwLZyd-1581090656052)(https://img.vim-cn.com/eb/19287d43de640d859224a2c83f6fa6403483ba.png)]

假使我們的數據呈現這樣的分佈情況,怎樣的模型才能適合呢?

在這裏插入圖片描述

因爲需要用曲線才能分隔 y=0y=0 的區域和 y=1y=1 的區域,我們需要二次方特徵:hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22){h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}+{\theta_{3}}x_{1}^{2}+{\theta_{4}}x_{2}^{2} \right)是[-1 0 0 1 1],則我們得到的判定邊界恰好是圓點在原點且半徑爲1的圓形。

我們可以用非常複雜的模型來適應非常複雜形狀的判定邊界。

Cost Function【代價函數】

對於線性迴歸模型,我們定義的代價函數是所有模型誤差的平方和。理論上來說,我們也可以對邏輯迴歸模型沿用這個定義,但是問題在於,當我們將hθ(x)=11+eθTx{h_\theta}\left( x \right)=\frac{1}{1+{e^{-\theta^{T}x}}}帶入到這樣定義了的代價函數中時,我們得到的代價函數將是一個非凸函數(non-convexfunction)。

這意味着我們的代價函數有許多局部最小值,這將影響梯度下降算法尋找全局最小值。

線性迴歸的代價函數爲:J(θ)=1mi=1m12(hθ(x(i))y(i))2J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{1}{2}{{\left( {h_\theta}\left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}
我們重新定義邏輯迴歸的代價函數爲:J(θ)=1mi=1mCost(hθ(x(i)),y(i))J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{{Cost}\left( {h_\theta}\left( {x}^{\left( i \right)} \right),{y}^{\left( i \right)} \right)},其中Cost(hθ(x(i),y(i))=12(hθ(x(i))y(i))2={lg(hθ(x))ify=1lg(1hθ(x))ify=0Cost(h_\theta(x^{(i)},y^{(i)})=\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2=\begin{cases}-lg(h_\theta(x))&if&y=1 \\-lg(1-h_\theta(x))&if&y=0\end{cases}

所以:

Cost(hθ(x(i),y(i))=y×lg(hθ(x))(1y)×lg(1hθ(x))Cost(h_\theta(x^{(i)},y^{(i)})=-y\times lg\left( {h_\theta}\left( x \right) \right)-(1-y)\times lg\left( 1-{h_\theta}\left( x \right) \right)

帶入代價函數得到:
J(θ)=1mi=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))]J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}
即:J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}

證明如下:

Repeat {
θj:=θjαθjJ(θ)\theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j} J(\theta)
(simultaneously update all )
}

求導後得到:

Repeat {
θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)\theta_j := \theta_j - \alpha \frac{1}{m}\sum\limits_{i=1}^{m}{{\left( {h_\theta}\left( \mathop{x}^{\left( i \right)} \right)-\mathop{y}^{\left( i \right)} \right)}}\mathop{x}_{j}^{(i)}
(simultaneously update all )
}

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}
考慮:
hθ(x(i))=11+eθTx(i){h_\theta}\left( {{x}^{(i)}} \right)=\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}}
則:
y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))){{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)
=y(i)log(11+eθTx(i))+(1y(i))log(111+eθTx(i))={{y}^{(i)}}\log \left( \frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)
=y(i)log(1+eθTx(i))(1y(i))log(1+eθTx(i))=-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^T}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^T}{{x}^{(i)}}}} \right)

所以:
θjJ(θ)=θj[1mi=1m[y(i)log(1+eθTx(i))(1y(i))log(1+eθTx(i))]]\frac{\partial }{\partial {\theta_{j}}}J\left( \theta \right)=\frac{\partial }{\partial {\theta_{j}}}[-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^{T}}{{x}^{(i)}}}} \right)]}]
=1mi=1m[y(i)xj(i)eθTx(i)1+eθTx(i)(1y(i))xj(i)eθTx(i)1+eθTx(i)]=-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\frac{-x_{j}^{(i)}{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}{1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}]
=1mi=1my(i)xj(i)1+eθTx(i)(1y(i))xj(i)eθTx(i)1+eθTx(i)]=-\frac{1}{m}\sum\limits_{i=1}^{m}{{y}^{(i)}}\frac{x_j^{(i)}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}]
=1mi=1my(i)xj(i)xj(i)eθTx(i)+y(i)xj(i)eθTx(i)1+eθTx(i)=-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}x_j^{(i)}-x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}+{{y}^{(i)}}x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}
=1mi=1my(i)(1+eθTx(i))eθTx(i)1+eθTx(i)xj(i)=-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}\left( 1\text{+}{{e}^{{\theta^T}{{x}^{(i)}}}} \right)-{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}x_j^{(i)}}
=1mi=1m(y(i)eθTx(i)1+eθTx(i))xj(i)=-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}
=1mi=1m(y(i)11+eθTx(i))xj(i)=-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}
=1mi=1m[y(i)hθ(x(i))]xj(i)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}-{h_\theta}\left( {{x}^{(i)}} \right)]x_j^{(i)}}
=1mi=1m[hθ(x(i))y(i)]xj(i)=\frac{1}{m}\sum\limits_{i=1}^{m}{[{h_\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}]x_j^{(i)}}

Cost(hθ(x(i),y(i))=={lg(hθ(x))ify=1lg(1hθ(x))ify=0Cost(h_\theta(x^{(i)},y^{(i)})==\begin{cases}-lg(h_\theta(x))&if&y=1 \\-lg(1-h_\theta(x))&if&y=0\end{cases}

hθ(x){h_\theta}\left( x \right)Cost(hθ(x),y)Cost\left( {h_\theta}\left( x \right),y \right)之間的關係如下圖所示:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7B8YFPvX-1581090656054)(https://img.vim-cn.com/77/7e96f7e199a6212699947a2974ecfe7ba2f25e.png)]

這樣構建的Cost(hθ(x),y)Cost\left( {h_\theta}\left( x \right),y \right)函數的特點是:當實際的 y=1y=1hθ(x){h_\theta}\left( x \right)也爲 1 時誤差爲 0,當 y=1y=1hθ(x){h_\theta}\left( x \right)不爲1時誤差隨着hθ(x){h_\theta}\left( x \right)變小而變大;當實際的 y=0y=0hθ(x){h_\theta}\left( x \right)也爲 0 時代價爲 0,當y=0y=0hθ(x){h_\theta}\left( x \right)不爲 0時誤差隨着 hθ(x){h_\theta}\left( x \right)的變大而變大。

Python代碼實現:

import numpy as np
    
def cost(theta, X, y):
    
  theta = np.matrix(theta)
  X = np.matrix(X)
  y = np.matrix(y)
  first = np.multiply(-y, np.log(X* theta.T))
  second = np.multiply((1 - y), np.log(1 - X* theta.T))
  return np.sum(first - second) / (len(X))

Simplified Cost Function and Gradient Descent【簡化的成本函數和梯度下降】

Logistic regression cost function:

KaTeX parse error: Got function '\sum' with no arguments as argument to '\underset' at position 61: …{\underset{i=1}\̲s̲u̲m̲}Cost(h_\theta(…

這個式子可以合併成:

Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))Cost\left( {h_\theta}\left( x \right),y \right)=-y\times log\left( {h_\theta}\left( x \right) \right)-(1-y)\times log\left( 1-{h_\theta}\left( x \right) \right)
即,邏輯迴歸的代價函數:
Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))Cost\left( {h_\theta}\left( x \right),y \right)=-y\times log\left( {h_\theta}\left( x \right) \right)-(1-y)\times log\left( 1-{h_\theta}\left( x \right) \right)
=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}

我們要求出minJ(θ)\min J(\theta)的參數$\theta ,另外,我們假設的輸出,實際上就是這個概率值:p(y=1|x;\theta)$,就是關於 xx以$\theta 爲參數,y=1$ 的概率,你可以認爲我們的假設就是估計 y=1y=1 的概率。

我們要使minJ(θ)\min J(\theta)最小可以採用梯度下降的方法:

θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i){\theta_j}:={\theta_j}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}}){x_{j}}^{(i)}}

其中這個和線性迴歸的梯度下降在形式上一致,但是假設卻是不一致的,其中線性迴歸的假設函數是hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn{h_\theta}\left( x \right)={\theta^T}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}},而邏輯迴歸的假設函數卻是hθ=11+eθTXh_\theta=\frac{1}{1+e^{-\theta^TX}}

當使用梯度下降法來實現邏輯迴歸時,我們有這些不同的參數$\theta ,就是{\theta_{0}}$ θ1{\theta_{1}} θ2{\theta_{2}} 一直到θn{\theta_{n}},我們需要用這個表達式來更新這些參數。我們還可以使用 for循環來更新這些參數值,理想情況下,我們更提倡使用向量化的實現,可以把所有這些 nn個參數同時更新。

Advanced Optimization【高級優化】

octave。。。

Multiclass Classification_ One-vs-all【多類別分類:一對多】

在上面中,我們討論的是二分類問題,當多分類問題時,怎麼辦呢?

我們可以在多分類中提取一個類,並作爲正類,其餘作爲負類。進行邏輯迴歸,由此可以把與其他類區分出來,所以對各個類操作可以把所有的類區分開來。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jfC2OsjK-1581090656055)(https://img.vim-cn.com/dd/414020abe286b46d33b2b86ac655f0fdb57240.png)]

爲了能實現這樣的轉變,我們將多個類中的一個類標記爲正向類(y=1y=1),然後將其他所有類都標記爲負向類,這個模型記作hθ(1)(x)h_\theta^{\left( 1 \right)}\left( x \right)。接着,類似地第我們選擇另一個類標記爲正向類(y=2y=2),再將其它類都標記爲負向類,將這個模型記作 hθ(2)(x)h_\theta^{\left( 2 \right)}\left( x \right),依此類推。
最後我們得到一系列的模型簡記爲: hθ(i)(x)=p(y=ix;θ)h_\theta^{\left( i \right)}\left( x \right)=p\left( y=i|x;\theta \right)其中:i=(1,2,3....k)i=\left( 1,2,3....k \right)

最後,在我們需要做預測時,我們將所有的分類機都運行一遍,然後對每一個輸入變量,都選擇最高可能性的輸出變量。

總之,我們已經把要做的做完了,現在要做的就是訓練這個邏輯迴歸分類器:hθ(i)(x)h_\theta^{\left( i \right)}\left( x \right), 其中 ii 對應每一個可能的 y=iy=i,最後,爲了做出預測,我們給出輸入一個新的 xx 值,用這個做預測。我們要做的就是在我們三個分類器裏面輸入 xx,然後我們選擇一個讓 hθ(i)(x)h_\theta^{\left( i \right)}\left( x \right) 最大的$ i,即\mathop{\max}\limits_i,h_\theta^{\left( i \right)}\left( x \right)$。

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