Яка різниця між "навантаженнями" та "кореляційними навантаженнями" в PCA та PLS?


11

Одне загальне, що потрібно робити при аналізі головних компонентів (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')

loadingplot кореляційне завантаження

Чим відрізняється інтерпретація цих сюжетів? І який сюжет (якщо такий є) найкраще використовувати на практиці?


для кращого перегляду pca, використовуйте біплот (pca), він показує вам завантаження та бали pca, і тому ви зможете краще інтерпретувати його.
Пол

6
R prcompпакет безрозсудно називає власних векторів "навантаженнями". Я рада , щоб тримати ці терміни окремо. Навантаження - це власні вектори, масштабовані до відповідних власних значень.
ttnphns

1
Пояснення геометрії завантажувальної ділянки: stats.stackexchange.com/a/119758/3277
ttnphns

Відповіді:


13

Попередження: Rтермін "завантаження" використовує заплутано. Я пояснюю це нижче.

Розглянемо набір даних із (в центрі) змінними у стовпцях та точками даних у рядках. Виконання PCA цього набору даних дорівнює сингулярному розкладанню значення . Стовпці є основними компонентами ("рахунки" ПК), а стовпці - основними осями. Матриця коваріації задається , тому головні осі є власними векторами матриці коваріації.XNX=USVUSV1N1XX=VS2N1VV

"Завантаження" визначається як стовпці , тобто вони є власними векторами, масштабованими квадратними коренями відповідних власних значень. Вони відрізняються від власних векторів! Дивіться мою відповідь тут щодо мотивації.L=VSN1

Використовуючи цей формалізм, ми можемо обчислити матрицю між коваріації між оригінальними змінними та стандартизованими ПК: тобто задається завантаженнями. Матриця перехресної кореляції між оригінальними змінними та ПК задається тим самим виразом, розділеним на стандартні відхилення вихідних змінних (за визначенням кореляції). Якщо вихідні змінні були стандартизовані до виконання PCA (тобто PCA проводили на кореляційній матриці), всі вони дорівнюють . В останньому випадку матриця перехресної кореляції знову задається просто .

1N1X(N1U)=1N1VSUU=1N1VS=L,
1L

Щоб усунути термінологічну плутанину: те, що пакет R називає "навантаженнями", є основними осями, а те, що він називає "кореляційними навантаженнями", - це фактично навантаження. Як ви самі помітили, вони відрізняються лише масштабуванням. Що краще побудувати, залежить від того, що ви хочете побачити. Розглянемо наступний простий приклад:

Біплоти

Ліва підпрограма показує стандартизований 2D набір даних (кожна змінна має одиничну дисперсію), розтягнутий уздовж основної діагоналі. Середній субплот - це біплот : це графік розсіяння PC1 проти PC2 (в даному випадку просто набір даних, повернутий на 45 градусів) з рядками нанесеними зверху як вектори. Зверніть увагу, що вектори і розташовані на відстані 90 градусів; вони розповідають, як орієнтуються оригінальні осі. Правий субплот - той самий біплот, але тепер вектори показують рядки . Зауважимо, що тепер вектори і мають гострий кут між ними; вони розповідають, наскільки оригінальні змінні співвідносяться з ПК, і і x y L x y x yVxyLxyxyнабагато сильніше корелює з PC1, ніж з PC2. Я здогадуюсь, що більшість людей найчастіше вважають за краще бачити правильний тип біплоту.

Зверніть увагу, що в обох випадках і і вектори мають одиничну довжину. Це сталося лише тому, що набір даних був двовимірним; у випадку, коли є більше змінних, окремі вектори можуть мати довжину менше , але вони ніколи не можуть досягати поза одиничного кола. Доказ цього факту я залишаю як вправу.y 1xy1

Давайте поглянемо ще раз на набір даних mtcars . Ось біплот PCA, зроблений на кореляційній матриці:

mtcars pca biplot

Чорні лінії накреслюються за допомогою , а червоні - за допомогою .LVL

А ось біплот PCA, зроблений на матриці коваріації:

mtcars pca biplot

Тут я масштабував всі вектори та одиничне коло на , бо в іншому випадку це було б не видно (це загальновживаний трюк). Знову чорні лінії показують рядки , а червоні лінії показують кореляції між змінними та ПК (які більше не задано , див. Вище). Зверніть увагу, що видно лише дві чорні лінії; це тому, що дві змінні мають дуже велику дисперсію і домінують у наборі даних mtcars . З іншого боку, видно всі червоні лінії. Обидва представлення передають корисну інформацію.В л100VL

PS Існує багато різних варіантів біплотів PCA, дивіться мою відповідь тут для отримання додаткових пояснень та огляду: Розміщення стрілок на біплоті PCA . Найкрасивіший біплот, коли-небудь розміщений на CrossValided, можна знайти тут .


2
Хоча це дуже гарна відповідь (+1), він має одну лише дидактичну слабкість, оскільки спочатку розміщує змінні у рядках X, а не у стовпцях X, як це традиційно йде у статистичних наборах даних / прикладах. Через цю транспозицію U вектори стають у відповіді про змінні, а V про випадки. Більшість людей, які знають PCA, звикли до протилежної розробки; тому трохи заважає сприйняттю.
ttnphns

1
Я, можливо, порекомендую наголосити на "моральній" різниці між "осями білот" та "білот навантаження" на скануванні. По-перше, мінливість (= масштаб, = величина, = інерція, = маса) не представлена: вона зберігається в власних значеннях. По-друге, вона була повністю віддана власним векторам, що представляють змінні; завдяки цьому «відродженню» змінні стають значущим хмарою даних двох точок, або векторів, із конкретними довжинами від початку та конкретного кута. Ось так ми «раптово» опиняємось у предметному просторі .
ttnphns

Дякую @ttnphns, обидва хороші моменти. Щодо рядків / стовпців : насправді я віддаю перевагу використаному макету. Одинарна точка даних зазвичай записується як вектор стовпця . Матриця діє на неї, буде записана як . Якщо зараз - це колекція векторів стовпців, складених разом, я можу написати , що зручно. Якщо натомість має зразки в рядках, як ви виступаєте, тоді мені потрібно буде написати , що виглядає дивно. Але я визнаю, що багато підручників використовують цю умову (я не впевнений, чому). x U U x X U X X X UXxUUxXUXXXU
амеби

1
Це, звичайно, питання смаку. Однак майте на увазі, що переважна більшість статистичних програм відображає електронні таблиці як cases X variables. За традицією лінійна алгебра у більшості текстів статистичного аналізу робить вектором рядок. Може, в машинному навчанні це інакше?
ttnphns

1
@user_anon Ні, ця відповідь вважає стандартним PCA, без обертання факторів.
амеба
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.