Wednesday, May 7, 2014

Gradient Descent with Multiple Feature Algorithm



 function [theta, J_history] = gradientDescentMulti(X, y, theta, alpha, num_iters)  
 %GRADIENTDESCENTMULTI Performs gradient descent to learn theta  
 %  theta = GRADIENTDESCENTMULTI(x, y, theta, alpha, num_iters) updates theta by  
 %  taking num_iters gradient steps with learning rate alpha  
 % Initialize some useful values  
 m = length(y); % number of training examples  
 J_history = zeros(num_iters, 1);  
 for iter = 1:num_iters  
   % ====================== YOUR CODE HERE ======================  
   % Instructions: Perform a single gradient step on the parameter vector  
   %        theta.   
   %  
   % Hint: While debugging, it can be useful to print out the values  
   %    of the cost function (computeCostMulti) and gradient here.  
   %  
      %Vectorization Fundamental  
           %h(theta)X = summ(theta(j) * X(j)); where j = 0 .. n  
               % = transpose(theta) * X;  
                      %where theta is a Vector  
                      %theta = [theta(1)/theta(2)/theta(3)] .. column Vector  
                      %X = [X(1)/X(2)/X(3)] ... column Vector  
      %Gradient Descent with Multiple Variables Formula  
      %theta(j) := theta(j) - alpha * 1/m * summ(h(theta)x(i) - y(i)).Xj(i)); where i = 0 ... n  
      %Xj(i) is Vector  
      %h(theta)x(i) = X*theta ... as it takes all the values  
      vectorMultiple = X' * (X*theta - y);  
      theta = theta - (alpha/m) * (vectorMultiple);  
      square = (X * theta - y).^2;  
      J_history(iter) = (1/(2*m))*sum(square);  
      %read more about vectorization  
      %https://www.gnu.org/software/octave/doc/interpreter/Basic-Vectorization.html  
   % ============================================================  
   % Save the cost J in every iteration    
   % J_history(iter) = computeCostMulti(X, y, theta);  
 end  
 end  


No comments: