这是将训练集投射到eGespace的正确方法吗?MATLAB

这是将训练集投射到eGespace的正确方法吗?MATLAB,matlab,computer-vision,svm,face-recognition,pca,Matlab,Computer Vision,Svm,Face Recognition,Pca,我已使用以下公式计算PCA: function [signals,V] = pca2(data) [M,N] = size(data); data = reshape(data, M*N,1); % subtract off the mean for each dimension mn = mean(data,2); data = bsxfun(@minus, data, mean(data,1)); % construct the matrix Y Y = data'*da

我已使用以下公式计算PCA:

function [signals,V] = pca2(data) 
[M,N] = size(data); 
data = reshape(data, M*N,1);
% subtract off the mean for each dimension 
mn = mean(data,2); 
data = bsxfun(@minus, data, mean(data,1));     
% construct the matrix Y 
Y = data'*data / (M*N-1); 
[V D] = eigs(Y, 10);   % reduce to 10 dimension
% project the original data 
signals = data * V;
我的问题是:

“信号”是训练集在特征空间中的投影吗


我在“Amir Hossein”代码中看到,上面代码中的“中心图像向量”即“数据”需要通过在特征空间基中相乘投影到“面空间”。我真的不明白为什么投影是用居中的图像向量来完成的?“信号”不足以分类吗

关于信号,我想你的意思是问为什么我们要从原始向量形式的图像中减去平均值

如果你考虑PCA;它试图为您提供数据变化最大的最佳方向。然而,由于你的图像包含的像素可能只有正值,这些像素将始终处于正值,这将误导,尤其是你的第一个也是最重要的特征向量。您可以搜索更多有关二阶矩矩阵的信息。但我会分享一个糟糕的绘画图像来解释它。对不起我的画

请忽略星星的大小

明星:你的数据

红线:特征向量

正如您在2D中很容易看到的,居中数据可以为主分量提供更好的方向。如果您跳过这一步,您的第一个特征向量将偏向平均值,并导致较差的结果


在“数据”矩阵中,每个面是以行还是列的形式存储的?在这两种情况下,第三行中的重塑都是错误的。也许给我们看一下“pca2”的代码。我怀疑“信号”是您代码的投影版本,但我不确定。回来找我,我会帮你更好。仅供参考,您可能会发现这有助于理解PCA,并间接了解特征脸技术是如何工作的。@LightAlchest:上面的代码是“pca2”的,它是我用于查找PCA的函数的名称。我是这样使用它的-@lightalchest:你给教程的链接显示了一个404错误!既然你告诉我只有一个特征空间,我该如何标记面1(类+1)和其他面(类-1)的投影?这个链接应该可以工作:看,你从所有样本的协方差矩阵的前导特征向量计算一个投影矩阵。然后将每个样本(减去平均向量后)与该投影矩阵相乘,得到其新的表示形式。这些样本的投影版本现在将表示您的面。如果面具有标签/类别)1,则其投影样本将采用相同的标签/类别。有关为什么需要平均居中以及PCA工作原理的详细信息,请参阅我上面提供的教程。