ex2-2: Regularized Logistic Regression


Training data set이 Non-linear한 decision boundary를 가지고 있을때.

1. mapFeature.m

중요 기존 데이터 X를 가지고 polynomial feature를 생성한다. 이후에 X는 열은 28개가 된다.
training set을 더 잘 표현할수 있게 되었지만 Overfitting 위험성이 생겼다. 따라서 Regularized해야한다.


function out = mapFeature(X1, X2)  
% MAPFEATURE Feature mapping function to polynomial features  
%  
%   MAPFEATURE(X1, X2) maps the two input features  
%   to quadratic features used in the regularization exercise.  
%  
%   Returns a new feature array with more features, comprising of   
%   X1, X2, X1.^2, X2.^2, X1*X2, X1*X2.^2, etc..  
%  
%   Inputs X1, X2 must be the same size  
%  

degree = 6;  
out = ones(size(X1(:,1)));  
for i = 1:degree  
    for j = 0:i  
        out(:, end+1) = (X1.^(i-j)).*(X2.^j);  
    end  
end  

end

1. costFunctionReg.m

gradient descent를 할때 for 문을 사용해 반복 계산할 필요가 없다. 나중에 fminunc를 사용할때 알아서한다. 여기서는 한번의공식만 구하면된다.
Regularziation logistic regression 의 gradient descent 공식이 내가 알던거랑 다른것 같음, 알아보기.확인 및 수정완료.


function [J, grad] = costFunctionReg(theta, X, y, lambda)  
m = length(y); % number of training examples  

J = 0;  
grad = zeros(size(theta));  

% ====================== YOUR CODE HERE ======================  

hx = X * theta;  
gx = sigmoid(hx);  

% Cost function J  
pos = -y' * log(gx);  
neg = (1 - y)' * log(1 - gx);  
regular = lambda / (2 * m) * sum(theta(2:end) .^ 2);  

J = (1 / m) * (pos - neg) + regular;  

% Gradient descent  

grad = (1/m) * X' * (gx - y) + (lambda/m) .* theta;  
grad(1) = (1/m) * X(:,1)' * (gx - y);  

% =============================================================  

end

results matching ""

    No results matching ""