При анализе основных компонентов (PCA) обычно нужно распределить две нагрузки друг на друга, чтобы исследовать отношения между переменными. В документе, сопровождающем пакет PLS R для выполнения регрессии главных компонентов и регрессии PLS, есть другой график, называемый графиком корреляционных нагрузок (см. Рисунок 7 и страницу 15 в документе). Корреляция нагрузки , как это объясняется, является корреляция между баллами (от PCA или PLS) и фактические наблюдаемые данные.
Мне кажется, что нагрузки и корреляционные нагрузки довольно похожи, за исключением того, что они масштабируются немного по-другому. Воспроизводимый пример в R со встроенным набором данных mtcars выглядит следующим образом:
data(mtcars)
pca <- prcomp(mtcars, center=TRUE, scale=TRUE)
#loading plot
plot(pca$rotation[,1], pca$rotation[,2],
xlim=c(-1,1), ylim=c(-1,1),
main='Loadings for PC1 vs. PC2')
#correlation loading plot
correlationloadings <- cor(mtcars, pca$x)
plot(correlationloadings[,1], correlationloadings[,2],
xlim=c(-1,1), ylim=c(-1,1),
main='Correlation Loadings for PC1 vs. PC2')
В чем разница в интерпретации этих сюжетов? И какой сюжет (если есть) лучше всего использовать на практике?
источник
R
prcomp
Пакет опрометчиво называет собственные векторы «нагрузками». Я советую держать эти условия отдельно. Нагрузки являются собственными векторами, масштабированными до соответствующих собственных значений.Ответы:
Предупреждение:
R
термин «загрузки» используется в замешательстве. Я объясню это ниже.Рассмотрим набор данных с (центрированными) переменными в столбцах и точками данных в строках. Выполнение PCA этого набора данных представляет собой разложение по сингулярным значениям . Столбцы являются главными компонентами (ПК "очки"), а столбцы являются главными осями. Ковариационная матрица задается как , поэтому главные оси являются собственными векторами ковариационной матрицы.X N X=USV⊤ US V 1N−1X⊤X=VS2N−1V⊤ V
«Нагрузки» определяются как столбцы , то есть они являются собственными векторами, масштабированными по квадратным корням соответствующих собственных значений. Они отличаются от собственных векторов! Смотрите мой ответ здесь для мотивации.L=VSN−1√
Используя этот формализм, мы можем вычислить кросс-ковариационную матрицу между исходными переменными и стандартизированными ПК: т. Е. Определяется нагрузками. Матрица взаимной корреляции между исходными переменными и ПК задается тем же выражением, деленным на стандартные отклонения исходных переменных (по определению корреляции). Если исходные переменные были стандартизированы до выполнения PCA (т. Е. PCA была выполнена на матрице корреляции), они все равны . В этом последнем случае матрица взаимной корреляции снова задается просто как .
Чтобы прояснить терминологическую путаницу: то, что пакет R называет «нагрузками», является главными осями, а то, что он называет «корреляционными нагрузками», (для PCA, выполненных на корреляционной матрице) в фактических нагрузках. Как вы сами заметили, они отличаются только масштабированием. Что лучше построить, зависит от того, что вы хотите увидеть. Рассмотрим следующий простой пример:
Левый подпункт показывает стандартизированный 2D-набор данных (каждая переменная имеет единичную дисперсию), вытянутый вдоль основной диагонали. Средний подплот представляет собой биплот : это график рассеяния PC1 против PC2 (в данном случае просто набор данных, повернутый на 45 градусов) со строками нанесенными сверху в качестве векторов. Обратите внимание, что векторы и разнесены на 90 градусов; они говорят вам, как ориентированы исходные оси. Правый подплот - это тот же биплот, но теперь векторы показывают строки из . Обратите внимание, что теперь векторы и имеют острый угол между ними; они говорят вам, сколько исходных переменных коррелируют с ПК, а также и x y L x y x yV x y L x y x y гораздо сильнее связаны с ПК1, чем с ПК2. Я думаю, что большинство людей предпочитают видеть правильный тип биплота.
Обратите внимание, что в обоих случаях векторы и имеют единичную длину. Это произошло только потому, что набор данных был 2D для начала; в случае, когда имеется больше переменных, отдельные векторы могут иметь длину меньше , но они никогда не могут достичь за пределами единичного круга. Доказательство этого факта я оставляю в качестве упражнения.у 1x y 1
Давайте теперь еще раз посмотрим на набор данных mtcars . Вот биплот PCA, сделанный на матрице корреляции:
Черные линии отображаются с помощью , красные линии - с помощью .LV L
И вот биплот PCA, сделанный на ковариационной матрице:
Здесь я масштабировал все векторы и единичный круг на , потому что в противном случае он не был бы виден (это часто используемый прием). Опять же, черные линии показывают строки , а красные линии показывают корреляции между переменными и ПК (которые больше не задаются , см. Выше). Обратите внимание, что видны только две черные линии; это потому, что две переменные имеют очень высокую дисперсию и доминируют в наборе данных mtcars . С другой стороны, все красные линии можно увидеть. Оба представления передают некоторую полезную информацию.В л100 V L
PS Существует много различных вариантов болтов PCA, см. Мой ответ здесь для некоторых дополнительных объяснений и общего обзора: Расположение стрелок на биплоте PCA . Самый красивый биплот, когда-либо размещенный на CrossValidated, можно найти здесь .
источник
cases X variables
. Тогда, по традиции, линейная алгебра в большинстве текстов статистического анализа делает случай вектор-строкой. Может быть, в машинном обучении все иначе?