Coursera_機器學習_week3_邏輯迴歸

52nlp的筆記,我的筆記中主要討論偏微分方程的推導

分類算法 邏輯迴歸

分類問題的y取值是在一定範圍
y = {0,1}或者y={0,1,2,3}
這種情況下線性迴歸方程並不適用,這時候可以採用邏輯迴歸算法

邏輯迴歸Logistic Regression

hθ(X)=g(ΘTX)=11+eθTX

這樣就使得 0hθ(x)1 ,這裏hθ(X) 的定義是
hθ(X)=P(y=1|x,θ)

也就是,對給定的x,θ ,y=1的概率

決策邊界Decision Boundary

如果我們假定閾值爲0.5 ,也即
hθ(X)0.5 時,y=1;
hθ(X)0.5 時,y=0;
那麼hθ(X)=0.5 ,也即ΘTX=0 是決策邊界。

代價函數 Cost Function

對於邏輯迴歸問題,我們選擇對數損失函數/對數似然損失函數作爲代價函數,這樣的代價函數是凸函數,有global optimum 而不是很多個local optimum

Cost(hθ(x),y)={log(hθ(x))log(1hθ(x))if y=1if y=0

簡化的代價函數

總代價函數爲

J(Θ)=1mi=1mCost(hθ(x(i)),y(i))

將代價函數合併成一個函數
Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

這其實就是最大似然函數的形式
從而總的代價函數可以表示爲
J(Θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

梯度下降算法

minθJ(Θ):
Repeat{
Θj:=ΘjαθjJ(Θ)
(simutaneously undate all θj )
}
其中

θjJ(Θ)=1mi=1m(hθ(x(i))y(i))x(i)j

推導過程需要用到:
y=logx , yx=1x
y=expx i.e. ex , yx=expx
limx+(1+1x)x=e
(f(x)g(x))=f(x)g(x)f(x)g(x)g(x)2
以及倒數的定義
Δy=f(x0+Δx)f(x0)
ΔyΔx=f(x0+Δx)f(x0)Δx
f(x0)=limΔx0ΔyΔx
推導過程:
J(Θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

=1m[i=1my(i)loghθ(x(i))1hθ(x(i))+log(1hθ(x(i)))]

hθ(X)=11+eθTX 代入,得到
J(Θ)=1m[i=1my(i)ΘTx(i)+log(eΘTx(i)1+eΘTx(i))]

那麼

θjJ(Θ)=1m[i=1my(i)x(i)j+1+eΘTx(i)eΘTx(i)eΘTx(i)(x(i)j)(1+eΘTx(i))eΘTx(i)(x(i)j)(eΘTx(i))(1+eΘTx(i))2]

=1m[i=1my(i)x(i)j+(x(i)j)(1+eΘTx(i))(x(i)j)(eΘTx(i))1+eΘTx(i)]

=1mi=1m(hθ(x(i))y(i))x(i)j

調用 fminunc()函數

不用再編寫循環和設置步長了,一個函數搞定

fminunc

過擬合Overfitting

特徵太多,擬合的太好,代價函數幾乎爲0,但預測結果並不好
過擬合發生時,我們需要
1)降低特徵個數(手動/通過算法),代價是失去了部分信息
2)正規化:保留所有特徵,但減少θj 的大小,這樣就保留了所有的特徵

正規化 Regularization

使用數值小的參數,得到“簡化”的h函數,降低過擬合的傾向性

線性迴歸的正規化

J(Θ)=12m[i=1m(hθ(x(i)y(i))2+λj=1nθ2j]

注意,θ0 單列出來,不在懲罰範圍內
λ 爲正規化參數,如果λ 過大,則可能導致underfitting

assignment

plot樣本數據的時候用到了find

% Find Indices of Positive and Negative Examples
pos = find(y==1); neg = find(y == 0);
% Plot Examples
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, ...
     'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', ...
     'MarkerSize', 7);

求解過程用到的函數其實也沒怎麼搞明白

%  Set options for fminunc
options = optimset('GradObj', 'on', 'MaxIter', 400);
%  Run fminunc to obtain the optimal theta
%  This function will return theta and the cost
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial theta, options);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章