📄 pca_error_plots_separated.m
字号:
%
% David Gleich
% CS 152 - Neural Networks
% 12 December 2003
%
% initialize random number generator
rand('seed', 2);
k = 4;
% load PCA data
A = pcadata('separated');
fprintf('Computing PCA using APEX\n');
[Wapex, errapex] = apex(A, k, 'rate', 0.01, 'adjrate', 1, 'niter', 10);
fprintf('Computing PCA using GHA\n');
[Wgha, errgha] = gha(A, k, 'rate', 0.01, 'niter', 10);
[ferrapex, minerr] = pcaerr(A, Wapex);
[ferrgha] = pcaerr(A, Wgha);
fprintf('Final APEX error: %f\n', ferrapex);
fprintf('Final GHA error: %f\n', ferrgha);
fprintf('Minimum error: %f\n', minerr);
xx = 1:length(errgha);
plot(xx, errapex, '-', xx, errgha, '-');
xlabel('Iteration');
ylabel('Approximate Average Reconstruction Error');
legend('APEX', 'GHA');
% components in Wgha are in "wrong" order
Wgha = Wgha(:,k:-1:1);
% compute exact
[V D] = eig(cov(A'));
V = V(:,end:-1:1);
% normalize signs
for (ii = 1:k)
if (V(1,ii)*Wgha(1,ii) < 0)
Wgha(:,ii) = -Wgha(:,ii);
end;
if (V(1,ii)*Wapex(1,ii) < 0)
Wapex(:,ii) = -Wapex(:,ii);
end;
end;
% compute norm of matrix difference
fprintf('APEX Deviation from Exact: %f\n', norm(V(:,1:k) - Wapex, 'fro'));
fprintf('GHA Deviation from Exact: %f\n', norm(V(:,1:k) - Wgha, 'fro'));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -