matlab中高维数组怎么做PCA

如题所述

其实有一个很小的trick解决这个问题。可以让矩阵的维度大大降低。
假设x为m*n的matrix, m >> n
S = x*x', PCA需要计算S最大的k个特征值以及对应的特征向量。但是m*m维度太大,无法直接求解。
Let C = x‘*x, Cv = av, a 为eigenvalue,v为eigenvector,then x*Cv=x*x'*xv = ax*v, ie, S*(xv) = a*(xv)
所以假设(a v)是C的eigenvalue and eigenvector,那么(a, xv) 是S的eigenvalue and eigenvector
楼主例子中m = 262144,假设你有1000张图片,n = 1000,那么最多只需要计算一个1000*1000的矩阵的eigenvalue and eigenvector,计算量不知小到哪里去了。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜