機器學習 (三) 邏輯回歸 Logistic Regression


文章內容均來自斯坦福大學的Andrew Ng教授講解的Machine Learning課程,本文是針對該課程的個人學習筆記,如有疏漏,請以原課程所講述內容為准。感謝博主Rachel Zhang 的個人筆記,為我做個人學習筆記提供了很好的參考和榜樣。

 

 


 

§ 3.  邏輯回歸 Logistic Regression

 

1 分類Classification

首先引入了分類問題的概念——在分類(Classification)問題中,所需要預測的$y$是離散值。例如判斷一封郵件是否屬於垃圾郵件、判斷一個在線交易是否屬於詐騙、一個腫瘤屬於良性腫瘤還是惡性腫瘤等,都屬於分類問題。

對於有兩種類別的分類(例如上述三個例子),可以分別將兩種類別標記為正類(Positive Class)和負類(Negative Class)。在實際應用中,把一個類別標記為正類或負類是任意的,但一般來說會用正類代表擁有某樣東西,用負類代表缺少某樣東西。

分類問題可以分為多類分類(Multiclass Classification)問題和二元分類(Binary Classification)問題。

Andrew Ng以腫瘤分類問題為例,講解了在分類問題中線性回歸方法的有效性較低的原因。

如圖,當前的數據集中,如果應用線性回歸方法並以$h_{\theta}(x)=0.5$為閾值將腫瘤分類,即以$h_{\theta}(x)=0.5$在橫軸上的投影點為基准進行划分,左邊的預測為良性腫瘤,右邊的預測為惡性腫瘤,那么預測的效果還是很不錯的。

但在加入了最右的數據點之后,表示$h_{\theta}(x)$的直線從紫色線變成了藍色線,預測准確性在$h_{\theta}(x)=0.5$處可以看出有了比較明顯的降低。

如果線性回歸算法應用在分類問題中,那么在y={0,1}的情況下,也有可能會出現$h_{\theta}(x)<0$或者$h_{\theta}(x)>1$的情況,而且$h_{\theta}(x)$可能會遠小於0或者遠大於1。因此,分類問題並不適合拿線性回歸的方法來解決。

 

2 邏輯回歸Logistic Regression

 下面引入能夠滿足$0<=h_{\theta}(x)$的邏輯回歸算法來解決上述問題。邏輯回歸算法雖然名字上有個“回歸”,但事實上是個分類算法。

 首先引入了邏輯函數(Logistic Function),也稱S型函數(Sigmoid Function)——如圖中的$g(z)$所示。邏輯函數的性質是:在正無窮處無限趨近於1,在負無窮處無限趨近於0,在z=0處值為0.5。

Andrew Ng解釋了$P(y=1|x;\theta)$所代表的含義,然后給出了$P(y=1|x;\theta)$與$P(y=0|x;\theta)$的重要特點——相加等於1。

然后給出了以下例題,考察了上述知識點。

 

3 決策邊界Decision Boundary

 

決策邊界(Decision Boundary)   將整個平面分為y=1和y=0的兩個預測區域,對於$\theta^{T}x>=0$的部分,有$h_{\theta}(x)$>0.5,因此預測為y=1;對於$\theta^{T}x<0$的部分則反之,預測為y=0

決策邊界不是訓練集的屬性,而是假設本身及其參數的屬性。一旦給定了$\theta$,那么其決策邊界就已經確定了。我們不是用訓練集來定義決策邊界,而是用訓練集來擬合參數$\theta$。

如果在平面上把訓練集和決策邊界都表現出來,那么應該是類似下圖這樣的效果。

又例如下題中,$5-x_{1}=\theta^{T}x$,當$5-x_{1}=\theta^{T}x>=0$時有$x_{1}<5$,因此圖像如圖所示。而$x_{1}=5$即為該預測函數的決策邊界。

 非線性決策邊界(Non-Linear decision boundaries),擁有復雜的多項式特征變量,得到復雜的決策邊界,而不是簡單的用直線分開正負樣本。

例如如下的情況:

 

4 代價函數Cost Function

邏輯回歸模型中的代價函數如下所示:

對於y=1:如果預測正確,那么代價為0;如果預測錯誤,那么代價將隨着預測值趨於0而趨於無窮。即當預測錯誤時我們會以非常大的代價來懲罰學習算法

對於y=0:也是類似的,$Cost=0$ if $y=1$,$h_{\theta}(x)=1$

But as $h_{\theta}(x)\rightarrow 1$ $Cost\rightarrow \infty$

Captures intuition that if  $h_{\theta}(x)= 1$(predict $P(y=0|x;\theta)=0$),but y=0,we will penalize learning algorithm by a very large cost.

 

5 簡化代價函數與梯度下降算法Simplified cost function and gradient descent

因為y只有兩個取值:0,1

所以可以簡化代價函數為:

接下來,我們的目標就是最小化參數$\theta$了。

之前提到過梯度下降算法,這里也是類似的用法:

代入上述藍色式子可得

這個算法看起來似乎與應用於線性回歸的梯度下降算法是一樣的,但是事實上,這個式子中$h_{\theta}(x)$的假設並不同於應用於線性回歸的梯度下降算法中的$h_{\theta}(x)$。

特征縮放也適用於邏輯回歸算法中使得收斂速度更快

 

6 高級優化算法Advanced Optimization

除了梯度下降算法之外,還可以考慮以下三種算法。這三種算法的有點是不用手動選擇$\alpha$、速度快,但也相應來說更復雜。

在算法實現的過程中,建議盡量調用matlab或者octave中已有的庫。

例如:

一般來說,我們可以使用octave中的fminunc來實現這一算法,但是在fminunc中,$\theta$的維數應該大於1.

下面來看具體的實現:

1 function [jVal,gradient] = costFunction(theta)
2 % jVal is how we will compute the cost function J 
3 % a vector,the elements of the gradient vector correspond to partial derivative terms
4  
5     jVal = (theta(1)-5)^2+(theta(2)-5)^2;
6     
7     gradient = zeros(2,1);
8     gradient(1) = 2*(theta(1)-5);
9     gradient(2) = 2*(theta(2)-5);

上述代碼可以保存為costFunction.m然后在matlab里面調用

 1 options = optimset('GradObj','on','MaxIter',100);
 2 %'GradObj','on' ->sets the gradientobjective parameter to on
 3 % so you will provide a gradient to this algorithm
 4 %'MaxIter',100 -> sets maximum number of iterations to 100
 5 % so you will give it an initial guess for theta
 6 
 7 initialTheta = zeros(2,1);
 8 
 9 [optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options)
10 %fminunc is the advanced optimization

與Andrew Ng原slide所不同的地方是,原文的迭代次數設置為了'100',但其實'100'代表的是一個字符串,因此應該直接設置為100。

 可得結果:

 
         

initialTheta =

 
         

0
0



Local minimum found. Optimization completed because the size of the gradient
is less than the default value of the function tolerance. <stopping criteria details> optTheta = 5 5 functionVal = 0 exitFlag = 1

7 多類分類問題 Multiclass Classification

多類分類問題 Multiclass Classification是指有兩個以上分類的分類問題。

在多類分類問題里,其實是產生了多個分類器的。

這樣one-vs-all的方法中,實際上由每個分類i的所有可能結果y=i來訓練邏輯回歸分類器。

然后選擇一個讓h最大的i,不論i為多少我們都有最高的概率值。

 


 

筆記目錄

(一)單變量線性回歸 Linear Regression with One Variable

(二)多變量線性回歸 Linear Regression with Multiple Variables

(三)邏輯回歸 Logistic Regression 

(四)正則化與過擬合問題 Regularization/The Problem of Overfitting

(五)神經網絡的表示 Neural Networks:Representation

(六)神經網絡的學習 Neural Networks:Learning

(七)機器學習應用建議 Advice for Applying Machine Learning 

(八)機器學習系統設計Machine Learning System Design

(九)支持向量機Support Vector Machines

(十)無監督學習Unsupervised Learning

(十一)降維 Dimensionality Reduction

(十二)異常檢測Anomaly Detection

(十三)推薦系統Recommender Systems

(十四)大規模機器學習Large Scale Machine Learning


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM