Logistic 回歸
通常是二元分類器(也可以用於多元分類),例如以下的分類問題
- Email: spam / not spam
- Tumor: Malignant / benign
假設 (Hypothesis):$$h_\theta(x) = g(\theta^Tx)$$ $$g(z) = \frac{1}{1+e^{-z}}$$ 其中g(z)稱為sigmoid函數,其函數圖象如下圖所示,可以看出預測值$y$的取值范圍是(0, 1),這樣對於 $h_\theta(x) \geq 0.5$, 模型輸出 $y = 1$; 否則如果 $h_\theta(x) < 0.5$, 模型輸出 $y = 0$。
1. 對於輸出的解釋
$h_\theta(x)$=該數據屬於 $y=1$分類的概率, 即 $$h_\theta(x) = P\{y = 1|x; \theta\}$$ 此外由於y只能取0或者1兩個值,換句話說,一個數據要么屬於0分類要么屬於1分類,假設已經知道了屬於1分類的概率是p,那么當然其屬於0分類的概率則為1-p,這樣我們有以下結論 $$P(y=1|x;\theta) + P(y=0|x;\theta) = 1$$ $$P(y=0|x;\theta) = 1 - P(y = 1|x; \theta)$$
2. 決策邊界(Decision Bound)
函數$g(z)$是單調函數,
- $h_\theta(x)\geq 0.5$預測輸出$y=1$, 等價於$\theta^Tx \geq 0$預測輸出$y=1$;
- $\theta(x) < 0.5$預測輸出$y=0$, 等價於$\theta^Tx < 0$預測輸出$y=0$;
這樣不需要具體的帶入sigmoid函數,只需要求解$\theta^Tx \geq 0$即可以得到對應的分類邊界。下圖給出了線性分類邊界和非線性分類邊界的例子
3. 代價函數 (Cost Function)
在線性回歸中我們定義的代價函數是,即采用最小二乘法來進行擬合
$$J(\theta)=\frac{1}{m}\sum\limits_{i=1}^{m}\text{cost}(h_\theta(x^{(i)}), y)$$ $$\text{cost}(h_\theta(x), y)=\frac{1}{2}(h_\theta(x)-y)^2$$
然而由於這里的假設是sigmoid函數,如果直接采用上面的代價函數,那么$J(\theta)$將會是非凸函數,無法用梯度下降法求解最小值,因此我們定義Logistic cost function為
$$\text{cost}(h_\theta(x), y)=\begin{cases}-log(h_\theta(x)); y = 1\\ -log(1-h_\theta(x)); y = 0\end{cases}$$
函數圖像如下圖所示,可以看到,當$y=1$時,預測正確時($h_\theta(x)=1$)代價為零,反之預測錯誤時($h_\theta(x)=0$)的代價非常大,符合我們的預期。同理從右圖可以看出,當y=0時,預測正確時($h_\theta(x)=0$)代價函數為0,反之預測錯誤時($h_\theta(x)=1$)代價則非常大。表明該代價函數定義的非常合理。
4. 簡化的代價函數
前面的代價函數是分段函數,為了使得計算起來更加方便,可以將分段函數寫成一個函數的形式,即
$$\text{cost}(h_\theta(x), y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))$$
$$J(\theta)=-\frac{1}{m}\sum\limits_{i=1}^{m}y^{(i)}\log(h_\theta(x^{(i)})) + (1-y^{(i)})\log(1-h_\theta(x^{(i)}))$$
梯度下降
有了代價函數,問題轉化成一個求最小值的優化問題,可以用梯度下降法進行求解,參數$\theta$的更新公式為
$$\theta_j = \theta_j - \alpha \frac{\partial}{\partial \theta_j}J(\theta)$$
其中對$J(\theta)$的偏導數為 $$\frac{\partial}{\partial \theta_j}J(\theta) = \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$ 注意在logistic回歸中,我們的假設函數$h_\theta(x)$變了(加入了sigmoid函數),代價函數$J(\theta)$也變了(取負對數,而不是最小二乘法), 但是從上面的結果可以看出偏導數的結果完全和線性歸回一模一樣。那么參數$\theta$的更新公式也一樣,如下
$$\theta_j = \theta_j - \alpha \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$
為什么偏導數長這樣子,為什么和線性回歸中的公式一模一樣?公開課中沒有給出證明過程,主要是多次使用復合函數的鏈式求導法則,具體的證明過程可以看這里。我也提供一個更加簡潔的證明過程如下,首先將$h_\theta(x^{(i)})$寫成如下兩個等式,即:$$h_\theta(x^{(i)})=g(z^{(i)})$$, $$g(z^{(i)})=\theta^Tx^{(i)}$$
其中$g(z)=\frac{1}{1+e^{-z}}$是sigmoid激活函數,對兩個等式分別求導,有
$$\frac{d g(z)}{dz}=-1 \frac{1}{(1+e^{-z})^2}e^{-z}(-1)=\frac{e^{-z}}{(1+e^{-z})^2}=\frac{1}{1+e^{-z}}-\frac{1}{(1+e^-z)^2}=g(z)-g(z)^2=g(z)(1-g(z))$$
$$\frac{dz}{d\theta_j}=\frac{d(\theta^Tx)}{d\theta_j}=\frac{d(\theta_0+\theta_1x_1+\theta_2x_2+\ldots+\theta_nx_n)}{d\theta_j}=x_j$$
然后我們開始對代價函數$$J(\theta)=-\frac{1}{m}\sum\limits_{i=1}^{m}y^{(i)}\log(h_\theta(x^{(i)})) + (1-y^{(i)})\log(1-h_\theta(x^{(i)}))$$求偏導數
\begin{aligned}\frac{\partial J(\theta)}{\partial \theta_j}&=-\frac{1}{m}\sum\limits_{i=1}^{m}y^{(i)}\frac{1}{g(z^{(i)})}g'(z^{(i)})\frac{dz}{d\theta_j}+(1-y^{(i)})\frac{1}{1-g(z^{(i)})}(-1)g'(z^{(i)})\frac{dz}{d\theta_j}\\ &= -\frac{1}{m}\sum\limits_{i=1}^{m}y^{(i)}\frac{1}{g(z^{(i)})}g(z^{(i)})(1-g(z^{(i)}))x_j^{(i)}+(1-y^{(i)})\frac{1}{1-g(z^{(i)})}(-1)g(z^{(i)})(1-g(z^{(i)}))x_j^{(i)}\\ &= -\frac{1}{m}\sum\limits_{i=1}^{m}y^{(i)}(1-g(z^{(i)}))x_j^{(i)}+(y^{(i)}-1)g(z^{(i)})x_j^{(i)}\\ &=-\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}-g(z^{(i)}))x_j^{(i)}\\ &= \frac{1}{m}\sum\limits_{i=1}^{m}(g(z^{(i)})-y^{(i)})x_j^{(i)}\\ &=\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\end{aligned}
至此我們已經求出了logistic回歸代價函數的偏導數,可以看出它和線性歸回中采用最小二乘的代價函數的偏導數形式上是一樣的。
高級優化算法
除了梯度下降算法,可以采用高級優化算法,比如下面的集中,這些算法優點是不需要手動選擇$\alpha$,比梯度下降算法更快;缺點是算法更加復雜。
- conjugate gradient (共軛梯度法)
- BFGS (逆牛頓法的一種實現)
- L-BFGS(對BFGS的一種改進)
Logistic回歸用於多元分類
Logistic回歸可以用於多元分類,采用所謂的One-vs-All方法,具體來說,假設有K個分類{1,2,3,...,K},我們首先訓練一個LR模型將數據分為屬於1類的和不屬於1類的,接着訓練第二個LR模型,將數據分為屬於2類的和不屬於2類的,一次類推,直到訓練完K個LR模型。
對於新來的example,我們將其帶入K個訓練好的模型中,分別其計算其預測值(前面已經解釋過,預測值的大小表示屬於某分類的概率),選擇預測值最大的那個分類作為其預測分類即可。
Regularization
1. Overfitting (過擬合)
上面三幅圖分別表示用簡單模型、中等模型和復雜模型對數據進行回歸,可以看出左邊的模型太簡單不能很好的表示數據特征(稱為欠擬合, underfitting),中間的模型能夠很好的表示模型的特征,右邊使用最復雜的模型所有的數據都在回歸曲線上,表面上看能夠很好的吻合數據,然而當對新的example預測時,並不能很好的表現其趨勢,稱為過擬合(overfitting)。
Overfitting通常指當模型中特征太多時,模型對訓練集數據能夠很好的擬合(此時代價函數$J(\theta)$接近於0),然而當模型泛化(generalize)到新的數據時,模型的預測表現很差。
Overfitting的解決方案
- 減少特征數量:
- 人工選擇重要特征,丟棄不必要的特征
- 利用算法進行選擇(PCA算法等)
- Regularization
- 保持特征的數量不變,但是減少參數$\theta_j$的數量級或者值
- 這種方法對於有許多特征,並且每種特征對於結果的貢獻都比較小時,非常有效
2. 線性回歸的Regularization
在原來的代價函數中加入參數懲罰項如下式所示,注意懲罰項從$j=1$開始,第0個特征是全1向量,不需要懲罰。
代價函數:
$$J(\theta) = \frac{1}{2m}\left[ \sum\limits_{i=1}^{m} (h_\theta(x^{(i)})-y^{(i)})^2 + \lambda \sum\limits_{j=1}^{n}\theta_j^{2}\right]$$
梯度下降參數更新:
$$\theta_0 = \theta_0 - \alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}; j = 0$$
$$\theta_j = \theta_j - \alpha \left[ \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} + \frac{\lambda}{m}\theta_j \right]; j > 1$$
3. Logistic回歸的Regularization
代價函數: $$J(\theta) = -\frac{1}{m} \sum\limits_{i=1}^{m}\left[y^{(i)}\log(h_\theta(x^{(i)})) +(1-y^{(i)})\log(1-h_\theta(x^{(i)}))\right] + \frac{\lambda}{2m}\sum\limits_{j=1}^{n}\theta_j^{2}$$
梯度下降參數更新:
$$\theta_0 = \theta_0 - \alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}; j = 0$$
$$\theta_j = \theta_j - \alpha \left[ \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} + \frac{\lambda}{m}\theta_j \right]; j > 1$$
參考文獻
[1] Andrew Ng Coursera 公開課第三周
[2] Logistic cost function derivative: http://feature-space.com/en/post24.html