Files
MachineLearningCoursera/machine-learning-ex2/ex2/costFunctionReg.m
2015-12-05 16:43:37 +01:00

42 lines
1.4 KiB
Matlab

function [J, grad] = costFunctionReg(theta, X, y, lambda)
%COSTFUNCTIONREG Compute cost and gradient for logistic regression with regularization
% J = COSTFUNCTIONREG(theta, X, y, lambda) computes the cost of using
% theta as the parameter for regularized logistic regression and the
% gradient of the cost w.r.t. to the parameters.
% Initialize some useful values
m = length(y); % number of training examples
% You need to return the following variables correctly
J = 0;
grad = zeros(size(theta));
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta.
% You should set J to the cost.
% Compute the partial derivatives and set grad to the partial
% derivatives of the cost w.r.t. each parameter in theta
% Calculating J
theta_t_x = X*theta;
h_theta = sigmoid(theta_t_x);
part_1 = -y'*log(h_theta);
part_2 = (1 - y)' * log(1 - h_theta);
part_3 = sum(theta(2:length(theta)).^2);
%part_3 = sum(theta(2:length(theta)).*theta(2:length(theta)));
J = ((1 / m) * sum(part_1 - part_2)) + ((lambda/(2*m)) * part_3);
% Calculating g
temp_1 = sigmoid(X*theta) - y;
temp_2 = repmat(temp_1, 1, size(X, 2));
theta_vector = (lambda/m) * theta;
theta_vector(1) = 0;
grad = (1/m * sum(X .* temp_2))' + theta_vector;
% =============================================================
end