1
0
Fork 0

Vectorized regularized logistic regression, again

master
neingeist 10 years ago
parent 326a924044
commit 9117809537

@ -1,14 +1,14 @@
function [J, grad] = lrCostFunction(theta, X, y, lambda)
%LRCOSTFUNCTION Compute cost and gradient for logistic regression with
%LRCOSTFUNCTION Compute cost and gradient for logistic regression with
%regularization
% J = LRCOSTFUNCTION(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.
% 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
% You need to return the following variables correctly
J = 0;
grad = zeros(size(theta));
@ -25,25 +25,23 @@ grad = zeros(size(theta));
%
% Each row of the resulting matrix will contain the value of the
% prediction for that example. You can make use of this to vectorize
% the cost function and gradient computations.
% the cost function and gradient computations.
%
% Hint: When computing the gradient of the regularized cost function,
J = 1/m * (-y'*log(sigmoid(X*theta)) - (1-y)'*log(1-sigmoid(X*theta))) ...
+ lambda/(2*m) * theta(2:end)' * theta(2:end);
% Hint: When computing the gradient of the regularized cost function,
% there're many possible vectorized solutions, but one solution
% looks like:
% grad = (unregularized gradient for logistic regression)
% temp = theta;
% temp(1) = 0; % because we don't add anything for j = 0
% temp = theta;
% temp(1) = 0; % because we don't add anything for j = 0
% grad = grad + YOUR_CODE_HERE (using the temp variable)
%
regularization_term = lambda/m * vertcat([0], theta(2:end));
grad = 1/m * X' * (sigmoid(X*theta) - y) + regularization_term;
% =============================================================