Coursea-吳恩達-machine learning學習筆記(六)【week 3之Logistic Regression】

二元分類問題:

y{0,1}{0:Negative Class1:Positive 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

由於我們希望0hθ(x)1 ,故引入邏輯迴歸算法
(注:忽略離散值,可以使用迴歸算法)

假設函數:

hθ(x)=g(θTx)
g 函數爲
g(z)=11+ez
稱爲Sigmoid 函數或邏輯函數
故邏輯迴歸算法的假設函數爲
hθ(x)=11+eθTx
hθ(x) 用來估計基於輸入特徵值xy=1 的可能性。
正式寫法:
hθ(x)=P(y=1|x;θ)=1P(y=0|x;θ)

邏輯迴歸算法的決策邊界:
hθ(x)=0.5z=0

hθ(x)0.5 or z0 時,y=1
hθ(x)<0.5 or z<0 時,y=0

若存在訓練集:{(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))}
其中,

x[x0x1xn]x0=1,y{0,1}

假設函數爲:
hθ(x)=11+eθTx
則邏輯迴歸的代價函數爲:
J(θ)=1mi=1mCost(hθ(x(i)),y(i))
其中:
Cost(hθ(x),y)={log(hθ(x))if y=1log(1hθ(x))if 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))(1y)log(1hθ(x))
則代價函數爲:
J(θ)=1mi=1mCost(hθ(x(i)),y(i))=1m[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

向量化表示則爲:
h=g(Xθ)
J(θ)=1m(yTlog(h)(1y)Tlog(1h))
梯度下降法求θ
Repeat {
θj:=θjαθjJ(θ)(θj)
}
即:
Repeat {
θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)(θj)
}
向量化表示則爲:
θ:=θαmXT(g(Xθ)y)

利用梯度下降法最小化J(θ) ,須計算的是J(θ)θjJ(θ)
除了梯度下降法外,還有其他方法計算θ
  • 共軛梯度法;
  • BFGS (變長度法)
  • L -BFGS (限制尺度法)

這三種方法的優點:

  1. 不需要手動選擇學習速率α
  2. 收斂得比梯度下降法更快。

缺點:更加複雜。

舉例:θ=[θ1θ2]
J(θ)=(θ15)2+(θ25)2
θ1J(θ)=2(θ15)
θ2J(θ)=2(θ25)
實現方法如下:

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章