Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. function[] = sgd(X, Y, X_test, Y_test)
  2. %[names, X, Y] = readdata(filename, ' ');
  3. clc
  4. rp = randperm(size(X, 1));
  5. Y = Y(rp);
  6. X = X(rp,:);
  7.  
  8. X = (X - repmat(mean(X), size(X, 1), 1)) ./ repmat(std(X), size(X, 1), 1);
  9. Y = (Y - repmat(mean(Y), size(X, 1), 1)) ./ repmat(std(Y), size(X, 1), 1);
  10.  
  11. I = ones(size(X,1), 1);
  12. X = [I X];
  13.  
  14. I_test = ones(size(X_test,1), 1);
  15. X_test = [I_test X_test];
  16. %X_test = X_test';
  17.  
  18. %X = X';
  19. w = zeros(size(X, 2), 1);
  20.  
  21. epoch = 50;
  22. logistic_error_tab = [];
  23. zero_one_error_tab = [];
  24.  
  25. param = 1;
  26. c = 0.1;
  27.  
  28.  
  29. for epo = 1:epoch
  30. for i=1:size(rp,1)
  31. alfa = c/sqrt(param);
  32. w = w + alfa * (Y(i)/(1+exp(Y(i)*(X(i,:)*w))))* X(i, :)';
  33. param = param + 1;
  34. end
  35.  
  36. logistic_error = 0;
  37. zero_one_error = 0;
  38. for j=1:size(rp,1)
  39. if Y(j)*(X(j,:)*w) <= 0
  40. zero_one_error = zero_one_error + 1;
  41. end
  42. logistic_error = logistic_error + log(1 + exp(-Y(i)*(X(i, :)*w)));
  43. end
  44.  
  45. logistic_error
  46. logistic_error_tab = [logistic_error_tab, logistic_error];
  47. zero_one_error_tab = [zero_one_error_tab, zero_one_error];
  48.  
  49. %mse = mean((Y - X*w).^2);
  50. end
  51.  
  52. figure(4)
  53. plot(logistic_error_tab, 'bo-')
  54. grid on
  55. title("logistic error")
  56. figure(5)
  57. plot(zero_one_error_tab, 'bo-')
  58. grid on
  59. title("zero one error")
  60. figure(6)
  61. hist(w)
  62.  
  63.  
  64. zero_one_error_test = 0;
  65. logistic_error_test = 0;
  66. for j=1:size(X_test, 2)
  67. if Y_test(j)*(X_test(j,:)*w) <= 0
  68. zero_one_error_test = zero_one_error_test + 1;
  69. end
  70. logistic_error_test = logistic_error_test + log(1 + exp(-Y_test(i)*(X_test(i, :)*w)));
  71. end
  72. [zero_one_error_test, logistic_error_test]
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80. %X = X';
  81. %w_test = inv(X' * X)*X'*Y;
  82.  
  83. %mse_test = mean((Y - X*w_test).^2);
  84.  
  85. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement