公式
-
sigmoid function (logistic function):
-
Hypothesis:
-
Cost Function:
-
Gradient
Regularized logistic regression
- 帶正則項的Cost Function(當(dāng)features過多時防止過度擬合)
注意theta的下標(biāo)從1 開始(matlab就是從2開始計算的) -
gradient:
1.
2.
部分疑惑代碼
plotDecisionBoundary里為什么要對z轉(zhuǎn)置敞掘?
else
% Here is the grid range
u = linspace(-1, 1.5, 50);
v = linspace(-1, 1.5, 50);
z = zeros(length(u), length(v));
% Evaluate z = theta*x over the grid
for i = 1:length(u)
for j = 1:length(v)
z(i,j) = mapFeature(u(i), v(j))*theta;
end
end
%z = z'; % important to transpose z before calling contour 【就是這里W拭獭W旆摹!】
% Plot z = 0
% Notice you need to specify the range [0, 0]
contour(u, v, z, [0, 0], 'LineWidth', 2)
end
hold off
contour(X,Y,Z)产捞、contour(X,Y,Z,n) 和 contour(X,Y,Z,v) 使用 X 和 Y 繪制 Z 的等高線圖,以確定 x 和 y 值。
- 如果 X 和 Y 為向量卦溢,則length(X) 必須等于 size(Z,2) 且 length(Y) 必須等于 size(Z,1)。這些向量必須是嚴(yán)格遞增或嚴(yán)格遞減的秀又,并且不能包含任何重復(fù)值单寂。
- 如果 X 和 Y 為矩陣,則其大小必須等于 Z 的大小吐辙。通常宣决,應(yīng)設(shè)置 X 和 Y 以使列嚴(yán)格遞增或嚴(yán)格遞減并且行是均勻的(或者使行嚴(yán)格遞增或嚴(yán)格遞減并且列是均勻的)。
因此昏苏, 對于contour(u,v,z),比如u(1),v(2)->z(1,2),那么根據(jù)contour函數(shù)應(yīng)該是z(2,1)尊沸。
[0,0]指的是取z=0的等高線。
Decision boundary
plotData里的find函數(shù)
pos = find(y == 1);
neg = find(y == 0);
find返回所有滿足條件的下標(biāo)贤惯。
計算正則化損失函數(shù)的時候椒丧,對theta計算是從下標(biāo)2開始計算的!>认铩壶熏!
[n,z]=size(theta);
hx=sigmoid(X*theta);
J=(-y'*log(hx)-(1-y')*log(1-hx))/m+lambda/(2*m)*sum(theta(2:n,:).^2);
%theta(0)
tmp = X'*(hx-y);
grad(1,:)=tmp(1,:)/m;
grad(2:n,:)=tmp(2:n,:)/m+lambda*theta(2:n,:)/m;