Предупреждение: R
термин «загрузки» используется в замешательстве. Я объясню это ниже.
Рассмотрим набор данных с (центрированными) переменными в столбцах и точками данных в строках. Выполнение PCA этого набора данных представляет собой разложение по сингулярным значениям . Столбцы являются главными компонентами (ПК "очки"), а столбцы являются главными осями. Ковариационная матрица задается как , поэтому главные оси являются собственными векторами ковариационной матрицы.XNX=USV⊤USV1N−1X⊤X=VS2N−1V⊤V
«Нагрузки» определяются как столбцы , то есть они являются собственными векторами, масштабированными по квадратным корням соответствующих собственных значений. Они отличаются от собственных векторов! Смотрите мой ответ здесь для мотивации.L=VSN−1√
Используя этот формализм, мы можем вычислить кросс-ковариационную матрицу между исходными переменными и стандартизированными ПК: т. Е. Определяется нагрузками. Матрица взаимной корреляции между исходными переменными и ПК задается тем же выражением, деленным на стандартные отклонения исходных переменных (по определению корреляции). Если исходные переменные были стандартизированы до выполнения PCA (т. Е. PCA была выполнена на матрице корреляции), они все равны . В этом последнем случае матрица взаимной корреляции снова задается просто как .
1N−1X⊤(N−1−−−−−√U)=1N−1−−−−−√VSU⊤U=1N−1−−−−−√VS=L,
1L
Чтобы прояснить терминологическую путаницу: то, что пакет R называет «нагрузками», является главными осями, а то, что он называет «корреляционными нагрузками», (для PCA, выполненных на корреляционной матрице) в фактических нагрузках. Как вы сами заметили, они отличаются только масштабированием. Что лучше построить, зависит от того, что вы хотите увидеть. Рассмотрим следующий простой пример:
Левый подпункт показывает стандартизированный 2D-набор данных (каждая переменная имеет единичную дисперсию), вытянутый вдоль основной диагонали. Средний подплот представляет собой биплот : это график рассеяния PC1 против PC2 (в данном случае просто набор данных, повернутый на 45 градусов) со строками нанесенными сверху в качестве векторов. Обратите внимание, что векторы и разнесены на 90 градусов; они говорят вам, как ориентированы исходные оси. Правый подплот - это тот же биплот, но теперь векторы показывают строки из . Обратите внимание, что теперь векторы и имеют острый угол между ними; они говорят вам, сколько исходных переменных коррелируют с ПК, а также и x y L x y x yVxyLxyxyгораздо сильнее связаны с ПК1, чем с ПК2. Я думаю, что большинство людей предпочитают видеть правильный тип биплота.
Обратите внимание, что в обоих случаях векторы и имеют единичную длину. Это произошло только потому, что набор данных был 2D для начала; в случае, когда имеется больше переменных, отдельные векторы могут иметь длину меньше , но они никогда не могут достичь за пределами единичного круга. Доказательство этого факта я оставляю в качестве упражнения.у 1xy1
Давайте теперь еще раз посмотрим на набор данных mtcars . Вот биплот PCA, сделанный на матрице корреляции:
Черные линии отображаются с помощью , красные линии - с помощью .LVL
И вот биплот PCA, сделанный на ковариационной матрице:
Здесь я масштабировал все векторы и единичный круг на , потому что в противном случае он не был бы виден (это часто используемый прием). Опять же, черные линии показывают строки , а красные линии показывают корреляции между переменными и ПК (которые больше не задаются , см. Выше). Обратите внимание, что видны только две черные линии; это потому, что две переменные имеют очень высокую дисперсию и доминируют в наборе данных mtcars . С другой стороны, все красные линии можно увидеть. Оба представления передают некоторую полезную информацию.В л100VL
PS Существует много различных вариантов болтов PCA, см. Мой ответ здесь для некоторых дополнительных объяснений и общего обзора: Расположение стрелок на биплоте PCA . Самый красивый биплот, когда-либо размещенный на CrossValidated, можно найти здесь .