邏輯回歸和正規化
邏輯回歸(logistic regression)
1.用來解決歸類問題(只是由於歷史上的原因取了回歸的名字)
2.二分歸類(binary classification)
- 定義:對於輸入,輸出值不連續,而是兩個離散的值,eg:{0,1}
- 方法:利用線性回歸,將大於0.5的輸出預測值設為1,小於0.5的輸出預測值設為0.(目前不可行,因為歸類問題不是線性函數,所以引入S型函數(Sigmoid Function)/邏輯函數(logistic function))
- Sigmoid Function / logistic function
z>=0時g>=0.5,z<0時g<0.5; z-> -∞,g->0; z-> +∞,g->1
, ,
h(x)為輸出值為1的概率:
- 為了得到離散的歸類,假設:
,所以有:
- 決策邊界(decision boundry):將y=0和y=1的區域分開的那條線(對應上面來說就是θ‘x=0那個方程)
- 代價方程(cost function):
合並上面兩個式子:
再向量化表示:
畫圖是:
- 梯度下降(gradient decent):
求偏導可得:(和之前線性回歸的結果一樣)
向量化表示為:
- 比梯度下降更優的求θ的方法:
Conjugate gradient, BFGS, L-BFGS
用octave內部的函數庫來調用這些方法,步驟:
1.寫出代價函數和它的偏導:
function [jVal, gradient] = costFunction(theta) jVal = [...code to compute J(theta)...]; gradient = [...code to compute derivative of J(theta)...]; end
2.調用fminunc函數,optimset是傳給該函數的參數
options = optimset(‘GradObj‘, ‘on‘, ‘MaxIter‘, 100); initialTheta = zeros(2,1); [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
3.多類歸類(multiclass classification):
- 結果為多個類別,y={0,1,....n}
- 這種情況下,可以將問題分為n+1個二分歸類問題,選擇一個類,將其他所有類看成一個類,利用二分歸類,求出每個h(x),再求最大值
正規化(regularization)
1.正規化用來解決過擬合問題(overfitting),適用於線性回歸和邏輯回歸問題。
延伸:
- h函數太簡單:欠擬合,高偏差(underfitting,high bias)
- h函數太復雜:過擬合,高方差(overfitting,high variance)
- 解決過擬合方法有:減少參數(人工進行參數選擇或者用特定的參數選擇算法)、正規化
2.正規化後的代價函數:
(λ是正規化參數)
演示:https://www.desmos.com/calculator/1hexc8ntqp
eg:
h(x)=
如果想要減少theta3,theta4參數的影響,代價函數可以寫成如下形式:
後面的兩項參數乘以很大的數,這樣為了得到代價的最小值,後兩個參數就得很小,趨近於0,這樣h函數中的那兩個參數就
會很小,相當於消去了參數,所以函數就會變得平緩了,從而不會過擬合
3.正規化線性回歸:
- 梯度下降變為:(多了λ項)
移項也可以寫成:
可以看出,和沒有正規化相比,只是每次叠代時,theta都變為原來的(1-α*λ/m)<1倍
- 不叠代的nomal equation為:
( L=(n+1)*(n+1) )
4.正規化邏輯回歸:
- 代價函數為:(多了λ項)
(註意沒有第0項)
- 梯度下降:(和線性回歸正規化的一樣)
邏輯回歸和正規化