Files
matlab/RBM/pca_eval.asv
T
jens 7b34529b24 imported RBM
git-svn-id: http://moon:8086/svn/matlab/trunk@91 801c6759-fa7c-4059-a304-17956f83a07c
2016-07-12 11:24:12 +00:00

37 lines
1.1 KiB
Plaintext

function pca_eval()
close all;
Ntrain = 100;
Ndim = 2;
K = 1;
epsilon = 0.1;
x = 2*(rand(Ndim, Ntrain)-0.5)
x = 0.3*x + repmat(linspace(-0.7,0.7, Ntrain), Ndim, 1)
plot(x(1,:), x(2,:), '+'); axis([-1 1 -1 1]); grid; title('Raw data'); xlabel('x_1'); ylabel('x_2');
sigma = x * x' / size(x, 2)
[U,S,V] = svd(sigma)
xrot = U' * x;
figure;
plot(xrot(1,:), xrot(2,:), '+'); axis([-1 1 -1 1]); grid; title('Rotated data'); xlabel('x_{rot,1}'); ylabel('x_{rot,2}');
lambda = diag(S);
retained_variance = sum(lambda(1:K))./sum(lambda)
xpca = diag(sqrt(1./(lambda + epsilon))) * xrot;
figure;
plot(xpca(1,:), xpca(2,:), '+'); axis([-1 1 -1 1]); grid; title('Whitened data dim=2'); xlabel('x_{pca,1}'); ylabel('x_{pca,2}');
xtilde = zeros(size(xrot));
xtilde(1:K, :) = xrot(1:K, :);
figure;
plot(xtilde(1,:), xtilde(2,:), '+'); axis([-1 1 -1 1]); grid; title('Rotated data reduced to dim = 1'); xlabel('x_{tilde,1}'); ylabel('x_{tilde,2}');
xhat = U*xtilde;
figure;
plot(xhat(1,:), xhat(2,:), '+'); axis([-1 1 -1 1]); grid; title('Data reduced to dim = 1'); xlabel('x_{hat,1}'); ylabel('x_{hat,2}');