как найти собственные значения для неквадратичной матрицы

Я хочу сделать графики, аналогичные приведенным на картинке: введите здесь описание изображения

Я использую данные Fisher Iris и использую PCA для уменьшения размерности. это код:

load fisheriris
[pc,score,latent,tsquare,explained,mu] = princomp(meas); 

Я предполагаю, что собственные значения даны в скрытом, что показывает мне только четыре функции и касается сокращенных данных.

Мой вопрос: как показать все собственные значения исходной матрицы, которая не является квадратичной (150x4)? Пожалуйста помоги! Заранее большое спасибо!


person user19565    schedule 25.03.2014    source источник
comment
Так в чем тогда проблема? Вы не можете ожидать, что матрица 150x4 будет иметь более 4 собственных значений.   -  person patrik    schedule 25.03.2014
comment
она хотела определить собственное значение неквадратной матрицы, которой, конечно, не существует, вместо термина собственное значение у нас есть сингулярное значение, которое мы можем найти, например, с помощью разложения svd   -  person dato datuashvili    schedule 25.03.2014
comment
Конечно, но сингулярных значений по-прежнему не больше 4. Который кстати конечно можно найти с свд +1   -  person patrik    schedule 25.03.2014


Ответы (1)


Короткий (и бесполезный) ответ заключается в том, что функция [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