1. 程式人生 > >【吳恩達機器學習筆記】week3:1/2邏輯迴歸

【吳恩達機器學習筆記】week3:1/2邏輯迴歸

第三週

六、邏輯迴歸(Logistic Regression)

這裡首先區分一下線性迴歸邏輯迴歸,線性迴歸就是擬合,邏輯迴歸是分類。

6.2 假說表式(Hypothesis Representation)

下面一個部分主要講的是假設函式h(x)在分類問題中輸出只能是0/1,所以需要引入新的函式表示,也即是邏輯函式。
在這裡插入圖片描述
在這裡插入圖片描述

6.3 判定邊界

【我的理解:下邊講的其實就是邏輯迴歸的假設函式(Hypothesis Representation)和線性迴歸的假設函式的區別就是多了一層邏輯迴歸函式,而且裡邊的z是什麼函式,區別在於你的分類邊界時什麼樣子的。】
  現在講下決策邊界(decision boundary)的概念。這個概念能更好地幫助我們理解邏輯迴歸的假設函式在計算什麼。
  在這裡插入圖片描述


在這裡插入圖片描述
在這裡插入圖片描述

6.4 代價函式

這裡主要講的是:邏輯迴歸模型由於假設函式h(x)中含有非線性的邏輯函式,如果直接將假設函式帶入代價函式就會出現非凸函式,那麼就無法使用梯度下降。
在這裡插入圖片描述

所以,這裡將代價函式通過下邊的過程變換,得到了凸函式J( θ \theta ).
 在這裡插入圖片描述

在得到這樣一個代價函式以後,我們便可以用梯度下降演算法來求得能使代價函式最小的引數了。演算法為:
在這裡插入圖片描述

6.4.2.題外話

1.雖然得到的梯度下降演算法表面上看上去與線性迴歸的梯度下降演算法一樣,但是這裡的在這裡插入圖片描述與線性迴歸中不同,所以實際上是不一樣的。
在這裡插入圖片描述
2.另外,在執行梯度下降演算法之前,進行特徵縮放依舊是非常必要的。

6.5 簡化的成本函式和梯度下降 (Simplified Cost Function and Gradient Descent )

以上都是在推倒如何建立模型,如何1.構建假設函式,如何構建邏輯迴歸的2.代價函式與3.使用梯度下降法的話如何求導,下面通過簡單的整合,我們再梳理一遍整個過程:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

另外需要關注的三點:
1.那麼,線性迴歸和邏輯迴歸是在假設函式的區別:
在這裡插入圖片描述
2. θ

1 n \theta_{1-n} 向量化計算,同時更新。
3.特徵縮放是如何提高梯度下降的收斂速度的,這個特徵縮放的方法,也適用於邏輯迴歸。如果你的特徵範圍差距很大的話,那麼應用特徵縮放的方法,同樣也可以讓邏輯迴歸中,梯度下降收斂更快

6.6 高階優化

好,現在以上的所有一切的介紹就是將分類問題歸納為:用梯度下降的方法最小化邏輯迴歸中代價函式 J ( θ ) J(\theta) 這樣一個問題,作者這裡這節想介紹的是:1.如何編寫程式碼求解這個問題。2.擴充套件介紹一下其他方法代替梯度下降【這個涉及到最優化問題了】。

1.如何編寫程式碼求解這個問題。
現在我們換個角度來看什麼是梯度下降,我們有個代價函式 J ( θ ) J(\theta) ,而我們想要使其最小化,那麼我們需要做的是編寫程式碼,當輸入引數 θ \theta 時,它們會計算出兩樣東西: J ( θ ) J(\theta) 以及 j j 等於 0、1直到 n n 時的偏導數項 d / d ( θ j ) J ( θ ) d/d(\theta_{j})*J(\theta)
在這裡插入圖片描述

對於梯度下降來說,我認為從技術上講,你實際並不需要編寫程式碼來計算代價函式 J ( θ ) J(\theta) 。你只需要編寫程式碼來計算導數項 d / d ( θ j ) J ( θ ) d/d(\theta_{j})*J(\theta) ,但是,如果你希望程式碼還要能夠監控這些 J ( θ ) J(\theta) 的收斂性,那麼我們就需要自己編寫程式碼來計算代價函式 J ( θ ) J(\theta) 和偏導數項 d / d ( θ j ) J ( θ ) d/d(\theta_{j})*J(\theta) .

2.擴充套件介紹一下其他方法代替梯度下降
在這裡插入圖片描述
這三種演算法有許多優點:

一個是使用這其中任何一個演算法,你通常不需要手動選擇學習率 ,所以對於這些演算法的一種思路是,給出計算導數項和代價函式的方法,你可以認為演算法有一個智慧的內部迴圈,而且,事實上,他們確實有一個智慧的內部迴圈,稱為線性搜尋(line search)演算法,它可以自動嘗試不同的學習速率 ,並自動選擇一個好的學習速率 ,因此它甚至可以為每次迭代選擇不同的學習速率,那麼你就不需要自己選擇。這些演算法實際上在做更復雜的事情,不僅僅是選擇一個好的學習速率,所以它們往往最終比梯度下降收斂得快多了。

6.7 多類別分類:一對多

多分類問題的可以轉化為二分類問題,具體轉化如下過程:

1.訓練的時候,構建一個“偽”訓練集,將其中一個設為正類,其他為負類:構造二分類代價函式:
在這裡插入圖片描述

2.其他類別也這樣做,構造一系列模型:

在這裡插入圖片描述

3.在我們需要做預測時,我們將所有的分類機都執行一遍,然後對每一個輸入變數,都選擇最高可能性的輸出變數。
在這裡插入圖片描述