判定邊界(decision boundary)
上一次我們讨論了一個新的模型——邏輯回歸模型(logistic regression),在邏輯回歸中,我們預測:
當hø大于等于0.5時,預測y=1
當hø小于0.5時,預測y=0
根據上面的預測,我們繪制出一條s形函數,如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI5YzN5ATOzATM1IDNwYTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
根據函數圖像,我們知道,當
z=0時,g(z)=0.5
z>0時,g(z)>0.5
z<0時,g(z)<0.5
又有:
是以
以上,為我們預知的邏輯回歸的部分内容。好,現在假設我們有一個模型:
并且參數ø是向量 :[-3 1 1]。那麼當-3+x1+x2大于等于0,即x1+x2大于等于3時,模型将預測 y=1。
我們可以繪制出來x1+x2=3,這條線便是我們模型的分界線,也稱之為判定邊界(decision boundary),将預測為1的區域和預測為0的區域分隔開。
假設我們的資料呈現出如下圖的分布情況,那麼我們的模型是什麼樣才能适合這些資料呢?
如上圖,函數圖像為一個圓,圓點在原點且半徑為1,這樣一條曲線來分隔開了 y=1 和 y=0 的區域,是以我們需要的是一個二次方特征:
假設參數為 [-1 0 0 1 1],則我們得到的判定邊界恰好是圓點在原點并且半徑為1的圓形。
我們可以使用非常複雜的模型來适應非常複雜形狀的判定邊界。
邏輯回歸模型的代價函數(cost function)
對于線性回歸模型,我們定義的代價函數是所有模型誤差的平方和。理論上講,我們也可以沿用這個定義來對邏輯回歸模型使用,但是問題在于,當我們将:
代入到這樣定義的代價函數中時,我們得到的代價函數将會是一個非凸函數(non-covex function)。
這意味着,我們的代價函數将會有許多的局部最小值,這就會影響到梯度下降算法去找尋全局最小值。
是以,我們重新定義邏輯回歸的代價函數為:
其中,cost(hø(x(i), y(i))) 是我們定義的一個代價函數疊代形式,具體表示如下:
hø(x) 與 cost(hø(x),y)之間的關系是如下圖所示:
通過這樣建構的cost(hø(x), y)函數的特點是:
當實際的 y=1 且 hø=1 時,誤差為0;當 y=1 但 hø != 1時,誤差随hø的變小而變大;
當實際的 y=0 且 hø=0 時,誤差代價為0;當 y=0 但 hø != 0 時,誤差随hø的變大而變大。
将建構的cost(hø(x), y) 進行一個簡化,可以得到如下簡化公式:
這個簡化其實是對上面cost(hø(x), y) 的兩種表達式的一次性結合。
将簡化代入到代價函數,得到:
這便是邏輯回歸模型的代價函數了。
在得到這樣的一個代價函數之後,我們便可以使用梯度下降算法(gradient descent)來求得能夠使代價函數最小的參數了。
梯度下降算法:
對此求導,得到:
*注:雖然得到的梯度下降算法,表面上看上去和線性回歸的梯度下降算法一樣,但是這裡的hø(x) = g(øtx)與線性回歸不同,是以實際上是不一樣的。另外,在運作梯度下降算法之前,對特征進行特征縮放(features scaling)也是非常必要的。
一些梯度下降算法之外的選擇:
除了梯度下降算法之外,還有一些常被用來使代價函數最小的算法,這些算法更加複雜和優秀,而且通常情況下,不需要人工選擇學習速率,通常也比梯度下降算法更加快速。舉一些例子:共轭梯度法(conjugate gradient),局部優化法(broyden
fletcher goldfarb shann, bfgs)和有限記憶體局部優化法(lbfgs)。這些算法更加複雜也更加優秀,如果感興趣我們可以以後再繼續讨論。
在matlab或octave中,有一個最小值優化函數,fminunc。使用時,我們需要提供代價函數和每個參數的求導,這裡給大家舉一個例子:
*ps :關于機器學習相關算法的matlab或octave代碼,我上傳到了我的coding.net項目中,有需要的童鞋可以聯系我。