1. 模型引入
線性模型可以進行迴歸學習(參見【機器學習模型1】- 線性迴歸 ),但如何用於分類任務?需要找一個單調可微函數將分類任務的真實標記y與線性迴歸模型的預測值聯繫起來。
對於二分類任務,輸出標記 y y y 取值 { 0 , 1 } \{0, 1\} { 0 , 1 } ,而線性迴歸預測值 z = w T x + b z = w^Tx+b z = w T x + b 屬於實數集 R R R ,所以需要一個變換使實值 z z z 映射到 0 / 1 0/1 0 / 1 值。
引入 S i g m o i d Sigmoid S i g m o i d 函數:y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y = 1 + e − z 1 ,可以將 z z z 值轉爲一個接近0或1的 y y y 值,而且單調可微。圖像如下:
2. 模型描述
根據廣義線性模型 y = g − 1 ( θ T x ) y=g^{-1}(\theta^T x) y = g − 1 ( θ T x ) 定義,將Sigmoid函數作爲g − 1 ( ) g^{-1}() g − 1 ( ) 代入:
h θ ( x ) = 1 1 + e − θ T x h_\theta(x) = \frac{1}{1+e^{-\theta^T x}}
h θ ( x ) = 1 + e − θ T x 1
對數機率函數:邏輯迴歸也稱爲對數機率函數。
h θ ( x ) h_\theta(x) h θ ( x ) 反映了作爲正例的可能性 ,則 1 − h θ ( x ) 1-h_\theta(x) 1 − h θ ( x ) 反映了作爲負例的可能性
所以h θ ( x ) 1 − h θ ( x ) \frac{h_\theta(x)}{1-h_\theta(x)} 1 − h θ ( x ) h θ ( x ) 反映了作爲正例的相對可能性,h θ ( x ) 1 − h θ ( x ) > 1 \frac{h_\theta(x)}{1-h_\theta(x)} > 1 1 − h θ ( x ) h θ ( x ) > 1 ,則爲正例,稱爲 “機率” 。
l n h θ ( x ) 1 − h θ ( x ) ln\frac{h_\theta(x)}{1-h_\theta(x)} l n 1 − h θ ( x ) h θ ( x ) 爲 “對數機率”
所以,邏輯迴歸實際上是用線性迴歸模型的預測來逼近真實的對數機率。
3. 模型求解策略(代價函數)
1) 代價函數公式:
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ]
J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}[ y^{(i)}lnh_\theta(x^{(i)})+(1-y^{(i)})ln(1-h_\theta(x^{(i)})) ]
J ( θ ) = − m 1 i = 1 ∑ m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ]
2)推導過程:
極大似然法 :根據給定數據集,最大化對數似然函數:
L ( θ ) = ∑ i = 1 m l n P ( y ( i ) ∣ x ; θ )
L(\theta) = \sum_{i=1}^{m}lnP(y^{(i)}|x;\theta)
L ( θ ) = i = 1 ∑ m l n P ( y ( i ) ∣ x ; θ ) 由於 y 只能取 0 / 1,所以
P ( y = 0 ∣ x ; θ ) = h θ ( x ) = 1 1 + e − θ T x P ( y = 1 ∣ x ; θ ) = 1 − h θ ( x ) = e − θ T x 1 + e − θ T x = 1 e θ T x + 1
P(y=0|x;\theta) = h_\theta(x)=\frac{1}{1+e^{-\theta^T x}}\\
P(y=1|x;\theta) = 1-h_\theta(x)=\frac{e^{-\theta^T x}}{1+e^{-\theta^T x}} = \frac{1}{e^{\theta^T x}+1} \\
P ( y = 0 ∣ x ; θ ) = h θ ( x ) = 1 + e − θ T x 1 P ( y = 1 ∣ x ; θ ) = 1 − h θ ( x ) = 1 + e − θ T x e − θ T x = e θ T x + 1 1 所以:
P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) ( 1 − y )
P(y|x;\theta) = (h_\theta(x))^y(1-h_\theta(x))^{(1-y)}
P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) ( 1 − y ) 可以求得:
L ( θ ) = ∑ i = 1 m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ]
L(\theta) =\sum_{i=1}^{m}[ y^{(i)}lnh_\theta(x^{(i)})+(1-y^{(i)})ln(1-h_\theta(x^{(i)})) ]
L ( θ ) = i = 1 ∑ m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ] 爲了使用梯度下降法求解,將L ( θ ) L(\theta) L ( θ ) 取負,定義損失函數:
J ( θ ) = − 1 m L ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ]
J(\theta) = -\frac{1}{m}L(\theta) = -\frac{1}{m}\sum_{i=1}^{m}[ y^{(i)}lnh_\theta(x^{(i)})+(1-y^{(i)})ln(1-h_\theta(x^{(i)})) ]
J ( θ ) = − m 1 L ( θ ) = − m 1 i = 1 ∑ m [ y ( i ) l n h θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ( i ) ) ) ]
爲什麼除以m?在使用樣本不同數量的多個批次來更新 θ \theta θ 時,除以樣本數量 m 來抵消不同批次樣本數量不同帶來的影響。
4. 模型求解算法 - 梯度下降
1)參數更新方程:
θ j = θ j − α 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i )
\theta_j = \theta_j - \alpha\frac{1}{m}\sum_{i=1}^{m}[h_\theta(x^{(i)})-y^{(i)}]x_j^{(i)}
θ j = θ j − α m 1 i = 1 ∑ m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i )
2)推導過程:
設定:初始值 θ \theta θ 、學習步長 α \alpha α
不斷更新 θ \theta θ :
θ j = θ j − α ∂ ∂ θ j J ( θ )
\theta_j = \theta_j -\alpha\frac{\partial }{\partial \theta_j} J(\theta)
θ j = θ j − α ∂ θ j ∂ J ( θ ) 其中,梯度計算如下:
(Ref:參考吳恩達Cousera機器學習課程 6.4節)
直到 梯 度 Δ θ = ∂ ∂ θ j J ( θ ) < 閾 值 ε 梯度\Delta\theta = \frac{\partial }{\partial \theta_j} J(\theta) < 閾值\varepsilon 梯 度 Δ θ = ∂ θ j ∂ J ( θ ) < 閾 值 ε ,得到最優θ \theta θ
3)向量化表示
θ = θ − α m X T ( 1 1 + e − X θ − y )
\theta = \theta - \frac{\alpha}{m}X^T(\frac{1}{1+e^{-X\theta}}-y)
θ = θ − m α X T ( 1 + e − X θ 1 − y )
X,y表示如下:
X = [ X 1 ( 1 ) X 2 ( 1 ) . . . X n ( 1 ) X 1 ( 2 ) X 2 ( 2 ) . . . X n ( 2 ) . . . . . . . . . . . . X 1 ( m ) X 2 ( m ) . . . X n ( m ) ] , θ = [ θ 1 θ 2 . . . θ n ] , y = [ y 1 y 2 . . . y m ] ,
X=\begin{bmatrix}
X^{(1)}_1& X^{(1)}_2& ...& X^{(1)}_n& \\
X^{(2)}_1& X^{(2)}_2& ...& X^{(2)}_n& \\
...& ...& ...& ...& \\
X^{(m)}_1& X^{(m)}_2& ...& X^{(m)}_n& \\
\end{bmatrix},
\theta=\begin{bmatrix}
\theta_1& \\
\theta_2& \\
...& \\
\theta_n& \\
\end{bmatrix},
y=\begin{bmatrix}
y_1& \\
y_2& \\
...& \\
y_m& \\
\end{bmatrix},
X = ⎣ ⎢ ⎢ ⎢ ⎡ X 1 ( 1 ) X 1 ( 2 ) . . . X 1 ( m ) X 2 ( 1 ) X 2 ( 2 ) . . . X 2 ( m ) . . . . . . . . . . . . X n ( 1 ) X n ( 2 ) . . . X n ( m ) ⎦ ⎥ ⎥ ⎥ ⎤ , θ = ⎣ ⎢ ⎢ ⎡ θ 1 θ 2 . . . θ n ⎦ ⎥ ⎥ ⎤ , y = ⎣ ⎢ ⎢ ⎡ y 1 y 2 . . . y m ⎦ ⎥ ⎥ ⎤ ,