Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function[] = sgd(X, Y, X_test, Y_test)
- %[names, X, Y] = readdata(filename, ' ');
- clc
- rp = randperm(size(X, 1));
- Y = Y(rp);
- X = X(rp,:);
- X = (X - repmat(mean(X), size(X, 1), 1)) ./ repmat(std(X), size(X, 1), 1);
- Y = (Y - repmat(mean(Y), size(X, 1), 1)) ./ repmat(std(Y), size(X, 1), 1);
- I = ones(size(X,1), 1);
- X = [I X];
- I_test = ones(size(X_test,1), 1);
- X_test = [I_test X_test];
- %X_test = X_test';
- %X = X';
- w = zeros(size(X, 2), 1);
- epoch = 50;
- logistic_error_tab = [];
- zero_one_error_tab = [];
- param = 1;
- c = 0.1;
- for epo = 1:epoch
- for i=1:size(rp,1)
- alfa = c/sqrt(param);
- w = w + alfa * (Y(i)/(1+exp(Y(i)*(X(i,:)*w))))* X(i, :)';
- param = param + 1;
- end
- logistic_error = 0;
- zero_one_error = 0;
- for j=1:size(rp,1)
- if Y(j)*(X(j,:)*w) <= 0
- zero_one_error = zero_one_error + 1;
- end
- logistic_error = logistic_error + log(1 + exp(-Y(i)*(X(i, :)*w)));
- end
- logistic_error
- logistic_error_tab = [logistic_error_tab, logistic_error];
- zero_one_error_tab = [zero_one_error_tab, zero_one_error];
- %mse = mean((Y - X*w).^2);
- end
- figure(4)
- plot(logistic_error_tab, 'bo-')
- grid on
- title("logistic error")
- figure(5)
- plot(zero_one_error_tab, 'bo-')
- grid on
- title("zero one error")
- figure(6)
- hist(w)
- zero_one_error_test = 0;
- logistic_error_test = 0;
- for j=1:size(X_test, 2)
- if Y_test(j)*(X_test(j,:)*w) <= 0
- zero_one_error_test = zero_one_error_test + 1;
- end
- logistic_error_test = logistic_error_test + log(1 + exp(-Y_test(i)*(X_test(i, :)*w)));
- end
- [zero_one_error_test, logistic_error_test]
- %X = X';
- %w_test = inv(X' * X)*X'*Y;
- %mse_test = mean((Y - X*w_test).^2);
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement