Короткий (и бесполезный) ответ заключается в том, что функция [V, D] eig(_) дает вам собственные векторы и собственные значения. Однако, боюсь, у меня для вас плохие новости. Собственные значения и собственные векторы существуют только для квадратных матриц, поэтому для вашей матрицы 150x4 собственных векторов нет.
Не все потеряно. PCA фактически использует собственные значения ковариационной матрицы, а не исходной матрицы, а ковариационная матрица всегда квадратная. То есть, если у вас есть матрица A, ковариационная матрица будет AAT.
Ковариационная матрица не только квадратная, но и симметричная. Это хорошо, потому что сингулярные значения матрицы связаны с собственными значениями ее ковариационной матрицы. Проверьте следующий код Matlab:
A = [10 20 35; 5 7 9]; % A rectangular matrix
X = A*A'; % The covariance matrix of A
[V, D] = eig(X); % Get the eigenvectors and eigenvalues of the covariance matrix
[U,S,W] = svd(A); % Get the singular values of the original matrix
V — матрица, содержащая собственные векторы, а D — собственные значения. Теперь отношение:
ССТ ~ Д
U ~ V
Я использую «~», чтобы указать, что, хотя они «равны», знак и порядок могут различаться. Для собственных векторов нет «правильного» порядка или знака, поэтому любой из них действителен. К сожалению, у вас будет только четыре функции (если ваш массив не предназначен для наоборот).
person
timbo
schedule
25.03.2014