1. 程式人生 > >(吳恩達機器學習)Logistic 迴歸

(吳恩達機器學習)Logistic 迴歸

邏輯迴歸提出的原因:

對於分類問題,為什麼不能用我們之前學習的線性迴歸演算法來解決呢?有以下兩點:
1:不能很好地說明實際情況的真正意義
2:函式值可能大於1或者小於0(對於二類分類0,1)

假設函式:

為了使函式值在0~1之間,假設函式h(x)從h(x) = θ’x換為 h(x) = g(θ’x)
其中g(z)=1/(1+e^-z)

h(x)的含義為:對於給定的輸入x,y=1的概率為多少? 如下圖所示:

這裡寫圖片描述

由h(x)的含義可知,我們可以得到:
P(y=1|x;θ) = h(x)
P(y=0|x;θ) = 1-h(x)

代價函式:

對於線性迴歸問題,代價函式如下所示:
這裡寫圖片描述
但是若對於邏輯迴歸問題(分類)同樣使用上面的代價函式的話,將會發現J並不是一個凸函式

(這裡不進行說明),函式中間會存在很多的區域性最優解,這對我們使用梯度下降演算法來說不是很好。所以要改變邏輯迴歸問題的代價函式,如下:
這裡寫圖片描述
對於為什麼邏輯迴歸的代價函式是上圖所示的原因,我先不進行解釋,也許是上面的e^-z和下面的log(z)函式相對應了。這裡我們先對上面的代價函式進行驗證,看它是否能夠滿足我們問題的實際要求,即預測的好代價小,預測的差代價大。

(1):這裡寫圖片描述代價函式如圖所示:
這裡寫圖片描述
當y=1時
h(x)的值越接近1,代表結果為1的可能性越大,預測值和實際值相符,代價函式值也越趨於0。當h(x)越接近0時,代表預測的結果越差,所以代價函式值越大,滿足要求。

(2):這裡寫圖片描述代價函式如圖所示:
這裡寫圖片描述


同理,也滿足實際要求。

所以邏輯迴歸演算法的整體代價函式如下分段函式:
這裡寫圖片描述
將分段函式整合後,如下所示:
這裡寫圖片描述

邏輯迴歸的梯度下降演算法如下:
這裡寫圖片描述
經過計算偏導數項,邏輯迴歸梯度下降具體計算過程如下:
這裡寫圖片描述

你會驚訝的發現,現在邏輯迴歸的迭代計算過程和線性迴歸的一模一樣!(可能是數學家的總結),不過它們的h(x)的表示式改變了。

高階演算法對梯度下降的引用:fminunc函式

對於不同的問題,使用梯度下降演算法,它們之間的不同點在於
1:所選的代價函式不同,因此它們對每個引數的偏導數的計算結果也不同。
2:達到最優點,迭代的次數不同。
並且通過學習梯度下降演算法,我們知道對於各個引數的偏導數其實只用求解一次表示式即可,後面每次迭代只用代入不同的引數值即可。
而有關具體的迭代更新過程,都是相同的,學習率也可以進行自動選擇,因此這些相同的過程可以使用一個高階演算法函式來表示,再像此函式輸入不同的引數(不同點)即可,fminunc就是這樣的函式。
這裡寫圖片描述


上圖就是使用fminunc函式的一個簡單的例子。我們只需要在costFunction中寫出代價函式J的表示式,並計算出每一個引數的偏導數表示式,設定引用外部代價函式,設定最大的迭代數為100,初始化theta向量即可。
fminunc函式會返回:最優的theta值、代價函式的最小值、函式是否收斂的資訊。

下圖為寫costFunction函式的一般步驟:
這裡寫圖片描述

一對多分類演算法

這裡寫圖片描述

如上圖所示,現在有多分類問題(三角形,矩形,叉)。我們知道一個邏輯迴歸函式只能將樣本分為不同的兩類0和1,並且h(x)的值表示樣本為1的概率。現在對於多類問題,我們的處理是用不同的預測函式hi(x)計算出新的樣本屬於每一類的概率,最後選定概率最大的類。

對於上圖問題,我們先將三角形看為1類,其他的看為0類,這就變成了我們熟悉的二類問題了,通過擬合樣本訓練得到h1(x),可以計算出新的樣本為三角形這一類的概率。對於矩形和叉同理,訓練出的h2(x),h3(x)分別表示新的樣本為矩形或叉這一類的概率。最後比較三個函式值的大小,將新樣本歸為最大值的那一類。