二元分類問題:
y∈{0,1}{0:1:Negative ClassPositive Class
將線性迴歸應用於二元分類問題:
假設函數:
hθ(x)=θTx 分類器閾值輸出
hθ(x) 爲
0.5
若
hθ(x)≥0.5 ,預測
y=1 ;
若
hθ(x)<0.5 ,預測
y=0 。
對於分類問題來說,y=0 or 1 ,但是對於hθ(x) ,可以>1 or <0 。
由於我們希望0≤hθ(x)≤1 ,故引入邏輯迴歸算法:
(注:忽略離散值,可以使用迴歸算法)
假設函數:
hθ(x)=g(θTx)
g 函數爲
g(z)=11+e−z
稱爲
Sigmoid 函數或邏輯函數
故邏輯迴歸算法的假設函數爲
hθ(x)=11+e−θTx
hθ(x) 用來估計基於輸入特徵值
x ,
y=1 的可能性。
正式寫法:
hθ(x)=P(y=1|x;θ)=1−P(y=0|x;θ)
邏輯迴歸算法的決策邊界:
hθ(x)=0.5或z=0
當
hθ(x)≥0.5 or z≥0 時,
y=1 ;
當
hθ(x)<0.5 or z<0 時,
y=0 。
若存在訓練集:{(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))}
其中,
x∈⎡⎣⎢⎢⎢x0x1⋯xn⎤⎦⎥⎥⎥x0=1,y∈{0,1}
假設函數爲:
hθ(x)=11+e−θTx
則邏輯迴歸的代價函數爲:
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))
其中:
Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x))if y=1if y=0
當
y=1 時,若
hθ(x)=1 ,則
Cost=0 ,若
hθ(x)=0 ,則
Cost→∞ ;
當
y=0 時,若
hθ(x)=0 ,則
Cost=0 ,若
hθ(x)=1 ,則
Cost→∞ 。
將Cost(hθ(x),y) 簡化可得:
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
則代價函數爲:
J(θ)==1m∑mi=1Cost(hθ(x(i)),y(i))−1m[∑mi=1y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
向量化表示則爲:
h=g(Xθ)
J(θ)=1m(−yTlog(h)−(1−y)Tlog(1−h))
梯度下降法求
θ :
Repeat {
θj:=θj−α∂∂θjJ(θ)(θj同時更新)
}
即:
Repeat {
θj:=θj−α1m∑i=1m(hθ(x(i))−y(i))x(i)j(θj同時更新)
}
向量化表示則爲:
θ:=θ−αmXT(g(Xθ)−y)
利用梯度下降法最小化
J(θ) ,須計算的是
J(θ) 及
∂∂θjJ(θ) 。
除了梯度下降法外,還有其他方法計算
θ :
- 共軛梯度法;
- BFGS (變長度法)
- L -BFGS (限制尺度法)
這三種方法的優點:
- 不需要手動選擇學習速率α ;
- 收斂得比梯度下降法更快。
缺點:更加複雜。
舉例:θ=[θ1θ2]
J(θ)=(θ1−5)2+(θ2−5)2
∂∂θ1J(θ)=2∗(θ1−5)
∂∂θ2J(θ)=2∗(θ2−5)
實現方法如下:
function[jVal,gradient]=costFunction(theta)
jVal=(theta(1)-5)^2+(theta(2)-5)^2;
gradient=zeros(2,1);
gradient(1)=2*(theta(1)-5);
gradient(2)=2*(theta(2)-5);
options=optimset('Gradobj','on','MaxIter','100');
initialTheta=zeros(2,1);
[OptTheta,functionVal,exitFlag]=fminunc(@costFunction,initialTheta,options);
利用梯度下降法求J(θ) 及∂∂θjJ(θ) 的一般程序模板:
theta=⎡⎣⎢⎢⎢⎢θ0θ1⋮θn⎤⎦⎥⎥⎥⎥
function[jVal,gradient]=costFunction(theta)
jVal=[code to computeJ(θ)]
gradient(1)=[code to compute ∂∂θ0J(θ)]
gradient(2)=[code to compute ∂∂θ1J(θ)]
⋮
gradient(n+1)=[code to compute ∂∂θnJ(θ)]
對於多元分類問題,可將其拆解爲多個二元分類問題。
即:
h(i)θ=P(y=i|x;θ)(i=1,2,⋯,n)
prediction=max h(i)θ(x)