PCA все еще делается через собственное разложение ковариационной матрицы, когда размерность больше, чем число наблюдений?

10

У меня есть матрица X размером , содержащая мои N = 20 выборок в D = 100- мерном пространстве. Теперь я хочу написать свой собственный анализ основных компонентов (PCA) в Matlab. Сначала я унижаю X до X 0 .20×100XN=20D=100XX0

Я читал из чьего-то кода, что в таких сценариях, где у нас больше измерений, чем наблюдений, мы больше не разлагаем собственные ковариационные матрицы . Вместо этого мы разлагаем собственные 1X0 . Почему это правильно?1N1X0X0T

Нормальная ковариационная матрица имеет размер , каждый элемент которой сообщает нам ковариацию между двумя измерениями. Мне 1D×D даже не правильных размеров! ЭтоматрицаN×N, что бы она нам сказала? Ковариация между двумя наблюдениями ?!1N1X0X0TN×N

Sibbs Gambling
источник
Ответ на ваш вопрос заключается в том обстоятельстве, что, как следует из постановки вашей задачи, вам не нужна ковариационная матрица столбцов для себя. Вы только хотели это как путь для получения ПК. Правильно? Но те же самые результаты PCA могут быть получены с помощью собственных X'Xи XX'(а также SVD Xи X'). То, что называется «нагрузками» в одном случае, будет называться «показателями ПК» в другом и наоборот. Поскольку оба являются просто координатами ( см., Например ) и осями, «основные размеры» одинаковы.
ttnphns
1
(продолжение) Если это так, и вы можете выбирать, что разлагать, - разумно разложить то, что нужно делать быстрее / эффективнее. Когда n<pтребуется меньше ОЗУ и меньше времени для разложения, XX'поскольку он имеет меньший размер.
ttnphns
@ttnphns Отличное объяснение. Теперь я вижу смысл. Тем не менее, у меня все еще есть проблемы с переходом от собственного XX'компьютера к компьютеру. Не могли бы вы очень кратко показать мне, как? Учитывая, что ПК являются просто собственными векторами ковариационной матрицы, я попытался перейти от собственного XX'к собственному ковариационной матрицы X'X, но потерпел неудачу.
Sibbs Gambling
1
Мне надо идти. Возможно, @amoeba (который гораздо более ловкий в алгебре, чем я) или другой читатель скоро заглянет сюда и поможет вам. Приветствия.
ttnphns
1
@ttnphns: Готово :)
amoeba

Ответы:

22

Ковариационная матрица имеет размер и задается как C = 1D×D

Сзнак равно1N-1Икс0Икс0,

Матрица, о которой вы говорите, - это, конечно, не ковариационная матрица; она называется матрицей Грама и имеет размер : G = 1N×N

гзнак равно1N-1Икс0Икс0,

Анализ главных компонентов (PCA) может быть реализован посредством собственного разложения любой из этих матриц. Это просто два разных способа вычислить одно и то же.

Самый простой и полезный способ убедиться в этом - использовать разложение по сингулярным числам матрицы данных . Подставив это в выражения для C и G , мы получим: CИксзнак равноUSВСг

Сзнак равноВS2N-1Вгзнак равноUS2N-1U,

Собственные векторы ковариационной матрицы являются главными направлениями. Проекции данных на эти собственные векторы являются основными компонентами; эти проекции задаются U S . Основные компоненты, масштабированные до длины единицы, определяются какВUS . Как видите, собственные векторы матрицы Грама являются именно этими масштабированными главными компонентами. И собственные значения C и G совпадают.UСг

N<DDDN<D


амеба
источник
1
Отличный ответ! Я не знал, что у него есть имя! Большое спасибо! Теперь я уверен, что использую его для ускорения вычислений.
Sibbs Gambling
3
US/(N-1)ВUИксU
Этот ответ яснее, что много экспозиций я видел в книгах. Спасибо.
usεr11852
Для чисто справочных целей: Я думаю, что статья 1969 г. по Технике IJ Good « Некоторые приложения сингулярного разложения матрицы » - одна из первых, которая полностью ссылается на это.
usεr11852
1
@MattWenham Точно.
амеба