吳恩達機器學習個人筆記(二)-邏輯迴歸

       第一部分講是線性迴歸,其大致目的是根據訓練數據得到模型,再輸入新的數據後得到預測的值,該值爲一個連續值。而邏輯迴歸於線性迴歸其實並沒有太大的區別,只不過邏輯迴歸是用於分類問題,二元分類居多,它對應訓練數據中的結果值往往爲 0或1。

1假說表示(Hypothesis Representation)

        在分類問題中,我們要預測的是離散的值,預測的結果是屬於哪個類(例如正確或錯誤)。如判斷一個腫瘤是良性還是惡性的。二元分類是最簡單的分類問題,我們將類別分爲兩類,可以用0和1來描述。當我們用線性迴歸來進行分類時,由於輸出的值往往大於1或者小於0,所以爲了分類,我們要將假設函數的輸出值設定在0到1之間。線性迴歸只能輸出連續的值,因此我麼可以這樣預測

                                                       當  h_{\theta }(x)>0.5 時預測 y=1

                                                       當 h_{\theta }(x)<=0.5  時預測 y=0

      上面  h_{\theta }(x) 爲假設函數,y 爲預測的結果值。我們使用0.5作爲分類的閥值,那麼我們的假設函數的值必須爲  0<h_{\theta }(x)<1

在此引入邏輯迴歸的假設函數  h_{\theta }(x)=g(\theta ^{T}X)  其中 X 爲特徵向量,\theta爲之前講述的關於\theta _{i}(i=0,1,2\cdots ) 的向量 g 代表邏輯函數(logistic function)是一個常用的邏輯函數爲S形函數(Sigmoid function),公式爲:g(z)=\frac{1}{1+e^{-z}}  該函數圖像爲

                                                         

上圖可以看出sigmoid函數的值在0到1之間,那麼合起來即爲邏輯迴歸的假設函數即  z=h_{\theta }(x)h_{\theta }(x)的作用是,對於給定的輸入變量,根據選擇的參數計算輸出變量=1的可能性(estimated probablity)如果對於給定的x,通過已經確定的參數計算得出 h_{\theta }(x)=0.7,則表示有70%的機率y爲正向類,相應地y爲負向類的機率爲1-0.7=0.3。

2 判定邊界(decision boundary)

    這個概念可以幫助我們更好的理解邏輯迴歸,邏輯迴歸如下所示

                                    

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

                                 

並且假設參數 \theta 是向量[-3 1 1]。 則當   -3+x_{1}+x_{2}\geq 0,即  x_{1}+x_{2}\geq 3時模型將預測 y=1. 我們可以繪製直線x_{1}+x_{2}=3,這條線便是我們模型的分界線,將預測爲1的區域和預測爲 0的區域分隔開。如下圖所示

                                                                          

3代價函數(Cost Function

線性迴歸的代價函數爲

                                                                J\left (\theta\right )= \frac{1}{2m}\sum_{i=1}^{m} \left ( h_{\theta }\left ( x^{i} \right ) -y^{i}\right )^{2}

邏輯迴歸中我們沿用這個定義,但是將    h_{\theta }(x)=\frac{1}{1+e^{-\theta ^{T}x}} 帶入到上述的代價函數中時,我們得到的是一個非凸函數(non-convexfunction

                                

如圖所示,現在代價函數有許多的局部最小值,那麼梯度下降算法就很難尋找到全局最小值,我們從新定義邏輯迴歸的代價函數爲

                                                      J\left (\theta\right )= \frac{1}{2m}\sum_{i=1}^{m}Cost \left ( h_{\theta }\left ( x^{i} \right ) ,y^{i}\right )

  其中

                                

因此邏輯迴歸的代價函數綜述輸如下所示

                                           

Cost(h_{\theta }(x),y)可以合成爲  Cost(h_{\theta }(x),y)=-y\times log(h_{\theta }(x))-(1-y)\times log(1-h_{\theta }(x))帶入上述的 J(\theta ) 得到簡化的邏輯迴歸代價函數爲

                                   J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_{\theta }(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta }(x^{(i)}))]

接下來要做的就是使用梯度下降算法求得使 \underset{\theta }{min }J(\theta ) 的 \theta。還有一點注意的是我們使用邏輯迴歸對新的數據進行預測,預測出的結果y,就是一個概率值:p(y=1|x;\theta ) ,即關於x\theta爲參數,y=1的概率,我們可以認爲我們的假設就是估計y=1的概率,那麼p(y=0|x;\theta )=1-p(y=1|x;\theta )

4梯度下降(Gradient Descent)

      最小化代價函數,即我們之前學習的梯度下降算法,我們常用的梯度下降的模板爲

                                                 

       所以說假設你有n個特徵,也就是說\theta =\begin{bmatrix} \theta _{0}\\ \theta _{1}\\ \theta _{2}\\ \cdots \\ \theta _{n}\end{bmatrix} ,\theta爲 n+1 維的向量,那麼就需要上述的式子更新所有的\theta _{i}的值。這與之前線性迴歸的公式是一樣的,但其實由於邏輯迴歸的假設函數和線性迴歸的假設函數不同,雖然梯度下降的規則是一樣的,但是邏輯迴歸和線性迴歸的梯度下降是不一樣的。一般這樣的同時更新所有參數,採用的是向量化的方法,這種思維很重要,也非常的便捷。

       我們之前在談線性迴歸時講到的特徵縮放,我們看到了特徵縮放是如何提高梯度下降的收斂速度的,這個特徵縮放的方法,也適用於邏輯迴歸。如果你的特徵範圍差距很大的話,那麼應用特徵縮放的方法,同樣也可以讓邏輯迴歸中,梯度下降收斂更快。

5高級優化(Advanced Optimization)

        這個優化是針對梯度下降來講,使用一些更復雜的算法來進行計算,使邏輯迴歸的效率大大提升,這也將使算法更加的合適解決大型的機器學習問題,比如,我們有數目龐大的特徵量。 現在我們換個角度來看什麼是梯度下降,我們有個代價函數J(\theta ),而我們想要使其最小化,那麼我們需要做的是編寫代碼,當輸入參數\theta 時,它們會計算出兩樣東西:J(\theta ) 以及 等於 0、1直到n時的偏導數項。如下圖所示

                                                 

假設我們已經完成了可以實現這兩件事的代碼,那麼梯度下降所做的就是反覆執行這些更新。共軛梯度法 BFGS (變尺度法) 和L-BFGS (限制變尺度法) 就是其中一些更高級的優化算法,它們需要有一種方法來計算 J(\theta ),以及需要一種方法計算導數項,然後使用比梯度下降更復雜的算法來最小化代價函數。這些算法很複雜,如果需要研究透那麼會花費大量的時間,我們可以直接調用一些庫來使用。這些算法有許多優點,比如效率高,並且通常不需要選擇學習率\alpha

6多類別分類:一對多( Multiclass Classification_ One-vs-all)

       前面所講的都是使用邏輯迴歸進行二分類問題,結果的輸出往往爲y=1 或者 y=0。邏輯迴歸也可用於多分類問題,那麼輸出的結果就不只兩種,例如下面的例子。將學習算法應用與自動的將郵件進行分類,或者說是加上標籤,那麼這些郵件就可以分爲來自工作的郵件,來自朋友的郵件,來自家人的郵件或者是有關興趣愛好的郵件。那麼就有這樣一個分類問題:其中類別有四個,分別用 y=1,y=2,y=3,y=4 來代表。

       然而對於二分類和多分類問題來講,它們之間的數據集不一樣,如下圖所示

                                                

利用不同的符號來表示不同的類別。上訴邏輯迴歸是解決二分類問題,可以將數據集一分爲二爲正類和負類,用一對多的思想將其用於多分類問題上。上圖中我們有三個類別用三角形表示 y=1 ,方框表示 y=2,叉叉表示 y=3。先從用三角形代表的類別1開始。實際上可以創建新的訓練集,類型2和類型3定爲負類,類型1設定爲正類,創建一個新的訓練集,如下圖所示,擬合處一個合適的分類器

                                 

三角形爲正樣本,圓形代表負樣本,設三角形的值爲1,圓形的爲0,訓練出一個標準的邏輯迴歸分類器,這樣就得到一個正邊界,然後依次這樣執行三次。爲了能實現這樣的轉變,我們將多個類中的一個類標記爲正向類(y=1),然後將其他分類都標記爲父分類,這個模型記作 h_{\theta }^{(1)}(x) 接着,其他爲h_{\theta }^{(2)}(x)h_{\theta }^{(3)}(x),最後我們得到一系列的模型簡記爲: h_{\theta }^{(i)}(x)=p(y=i|x;\theta )其中 i=(1,2,3\cdots k)最後,在我們需要做預測時,我們將所有的分類機都運行一遍,然後對每一個輸入變量,都選擇最高可能性的輸出變量。

7正則化(Regularization)

7.1過擬合問題The Problem of Overfitting

       過擬合問題是機器學習中常見的問題,與之對應的就是欠擬合問題。過擬合就是在機器學習算法根據數據集訓練出模型,該模型對訓練集數據有非常好的效果(代價函數可能幾乎爲0),那麼這樣對新輸入的數據就不會有很好的結果,也就是輸入新的數據,預測的結果不好。如下面迴歸問題的例子所示

                 

第一個模型是欠擬合,假設函數不能很好的適應我們的訓練集,第二個模型是非常好的效果,第三個模型是一個四次方的模型,過於強調擬合原始數據,而丟失了算法的本質:預測新數據。分類問題也存在這樣的情況:

                   

如果發現過擬合問題,我們可以採用下面的方法進行處理:

           1 丟棄一些不能幫助我們正確預測的特徵,也就是丟棄一些多餘的特徵。

           2 正則化。保留所有的特徵,但是減少參數的大小(magnitude)

7.2代價函數(Cost Function)

       上面的例子中那個過擬合的情況出現時我們的模型是: h_{\theta }(x)=\theta _{0}+\theta _{1}x _{1}+\theta _{2}x^{2}+\theta _{3}x^{3}+\theta _{4}x^{4} 正是這些高次項導致了過擬合的產生,如果可以是這些高次項的係數(也就是上面式子中的 \theta _{3} 和 \theta _{4})接近爲0的話,那麼就可以很好的擬合了。所以我們所做的就是在一定程度上減小這些參數\theta的值,這就是正則化的基本思想。要減小這些高次項係數的值,那麼就要修改代價函數,給 \theta _{3} 和 \theta _{4}設置懲罰。例如修改後的代價函數如下所示:

                                                \underset{\theta }{min}\frac{1}{2m}[\sum _{i=1}^{m}{(h_{\theta }(x^{(i)})-y^{(i)})}^{2}+1000\theta _{3}^{2}+1000\theta _{4}^{2}]

通過這樣選擇的\theta _{3} 和 \theta _{4}對預測結果的影響就非常的小,如果我們有非常多的特徵,我們並不知道其中哪些特徵我們需要懲罰,那麼就可以對所有的特徵進行懲罰,這樣得到的是一個較爲簡單的防止過擬合問題的假設

                                                J(\theta )=\frac{1}{2m}[\sum _{i=1}^{m}{(h_{\theta }(x^{(i)})-y^{(i)})}^{2}+\lambda \sum _{j=1}^{n}\theta _{j}^{2}]

其中\lambda又稱爲正則化參數(Regularization Parameter),經過正則化處理的模型與原模型的對比如下圖所示

                                                       

如果選擇的正則化參數\lambda 過大,則會把所有的參數最小化,導致模型變成  h_{\theta }(x)=\theta _{0}即圖中紅色直線所示的情況,造成欠擬合。所以對於正則化,我們要取一個合適的\lambda的值,這樣才能更好的應用正則化。

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