最近自以为学习了很多识别算法,想来仿真一下,不仿真不知道,一仿真问题出来了。
在PCA中是对数据矩阵X(m*n)来做的降维,我事先是把m作为一个图片的全部维度,n代表样本,于是按照XX'来找特征向量等,由于一个图片最少也有1000+的像素,但是1000+的方阵在matlab中只要以计算就会是内存溢出,我正纳闷之际,看了别人的matlab源代码发现都是用X'来做的也就是X'X来计算协方差矩阵的。
最开始以为这个问题是在人脸识别中才会出现的,但是根据之前会议老板讲过的PCA觉得还是对于一个样本点来说的啊,纳闷的很,在群里请教了大牛,大牛直接给我找到了维基百科中对PCA中这个X的描述,竟然是这么描述的:
好了问题解决了,也就是说在PCA中行数代表的是样本点数,列数是维度。我们求出来的特征向量的维度肯定都是样本点数,那么找到一个特征向量就是对列数进行了降维!