Перший головний компонент не розділяє класи, але це роблять інші ПК; як це можливо?


11

Я запустив PCA на 17 кількісних змінних, щоб отримати менший набір змінних, що є основними компонентами, які будуть використовуватися в контрольованому машинному навчанні для класифікації примірників на два класи. Після PCA на PC1 припадає 31% дисперсії даних, PC2 - 17%, PC3 - 10%, PC4 - 8%, PC5 - 7%, а PC6 - 6%.

Однак, дивлячись на середні відмінності між ПК між двома класами, на диво, PC1 не є хорошим дискримінатором між двома класами. Залишилися ПК - це хороші дискримінатори. Крім того, PC1 стає неактуальним при використанні в дереві рішень, що означає, що після обрізки дерева його навіть немає в дереві. Дерево складається з PC2-PC6.

Чи є пояснення цьому явищу? Чи може бути щось не так з похідними змінними?


5
Прочитайте останнє запитання stats.stackexchange.com/q/79968/3277 з подальшим посиланням на нього. Оскільки PCA не знає про існування класів, це не гарантує, що будь-який з ПК буде дійсно хорошим дискримінатором; тим більше, що PC1 буде хорошим дискримінатором. Дивіться також два малюнки як приклад тут .
ttnphns

2
Дивіться також Що може призвести до погіршення результатів класифікатора PCA? , зокрема цифри у відповіді @vqv.
амеба

Відповіді:


14

Це також може статися, якщо змінні не масштабують, щоб мати відмінність одиниць перед тим, як робити PCA. Наприклад, для цих даних (зауважте, що шкала переходить лише від до тоді як від до ):y0.51x33

введіть тут опис зображення

PC1 становить приблизно і становить майже всю дисперсію, але не має дискримінаційної сили, тоді як PC2 є і відмінно розрізняє класи.xy


Привіт, дякую за вашу відповідь! Як слід робити масштабування? (x-середній) / sd?
Фріда

Так, в RI використовується, prcomp(x, center=T, scale=T)що є тим же, що і виконувати (x-mean) / sd. У цьому прикладі ви побачите, що жоден головний компонент не є хорошим дискримінатором між класами; він працює лише в тому випадку, якщо вони обидва використовуються разом.
Flounderer

Я розумію, що ПК є додатковими, але чи є пояснення за цим? Якщо чесно, мені вперше отримати слабший PC1 порівняно з іншими.
Фріда

@Frida: коментар ttnphns націлений на ціль. Дивіться en.wikipedia.org/wiki/Linear_discriminant_analysis третій параграф. У деякому сенсі щастя, що PCA виявляється корисним так часто.
Уейн

6

Я припускаю, що відповідь та приклад, наданий @Flounderer, це випливають, але я думаю, що варто це прописати. Аналіз основних компонентів (PCA) є маркувальним (класифікацією) байдужим. Все, що вона робить, - це перетворити деякі високовимірні дані в інший розмірний простір. Це може допомогти в спробах класифікації, наприклад, створивши набір даних, який простіше розділити певним методом. Однак це лише побічний продукт (або побічний ефект) PCA.


1

Коли ми робимо аналіз основних компонентів, основні компоненти відповідають напрямкам максимальної мінливості, вони не гарантують максимальної дискримінації або розділення між класами.

Отже, другий компонент дає вам гарну класифікацію, тобто дані в цьому напрямку дають вам кращу дискримінацію між класами. Коли ви виконуєте лінійний дискримінантний аналіз (LDA), він дає вам найкращі ортогональні компоненти напряму, які максимально збільшують міжкласову відстань і мінімізують внутрішньокласову відстань.

Отже, якщо ви робите LDA на даних замість PCA, ймовірно, один із перших компонентів буде ближче до PC6, ніж до PC1. Сподіваюсь, це допомагає.

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