Чи слід видаляти сильно корельовані змінні, перш ніж робити PCA?


111

Я читаю документ, де автор відкидає кілька змінних через високу кореляцію з іншими змінними, перш ніж робити PCA. Загальна кількість змінних становить близько 20.

Це дає якісь переваги? Для мене це виглядає як накладні витрати, оскільки PCA повинен це впоратися автоматично.


26
Просто натяк. Подумайте, яким чином змінитимуться результати PCA, якщо додавати все більше та більше копій (або близьких копій) однієї із змінних.
ttnphns

@ type2, чи можете ви назвати документ, який ви читали?
Аматія

Відповіді:


123

Це пояснює проникливий натяк, поданий у коментарі @ttnphns.

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

Діаграма розкиду

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

Накинемо тепер третю змінну рівну плюс невелику кількість випадкової помилки. Кореляційна матриця показує це з малими коефіцієнтами поза діагоналі, за винятком другого та третього рядків та стовпців ( і ):Y ( X , Y , Z ) Y ZZY(X,Y,Z)YZ

(1.0.03440180.0460760.03440181.0.9418290.0460760.9418291.)

Геометрично ми перемістили всі початкові точки майже вертикально, піднявши попереднє зображення прямо з площини сторінки. Ця хмара псевдо 3D-точок намагається проілюструвати підйом з видом збоку в перспективі (на основі іншого набору даних, хоча і генерованого так само, як і раніше):

3D сюжет

Точки спочатку лежать у синій площині і піднімаються до червоних крапок. Оригінальна вісь вказує праворуч. Отриманий нахил також розтягує точки в напрямку YZ, тим самим подвоюючи їх внесок у дисперсію. Отже, PCA цих нових даних все-таки визначив би два основні компоненти, але тепер один з них матиме вдвічі більше, ніж інший.Y

Це геометричне очікування пояснюється деякими моделюваннями в R. Для цього я повторив процедуру "підняття", створивши майже колінеарні копії другої змінної другий, третій, четвертий та п'ятий раз, називаючи їх по . Ось матриця розсіювання, яка показує, як добре співвідносяться ці останні чотири змінні:X 5X2X5

Матриця Scatterplot

PCA робиться за допомогою кореляцій (хоча для цих даних це насправді не має значення), використовуючи перші дві змінні, потім три, ..., і нарешті п'ять. Я показую результати, використовуючи графіки внеску основних компонентів у загальну дисперсію.

Результати PCA

Спочатку з двома майже некорельованими змінними внески майже рівні (верхній лівий кут). Після додавання однієї змінної, співвіднесеної з другою - точно так само, як на геометричній ілюстрації, - залишаються лише два основних компоненти, один зараз удвічі більший за інший. (Третій компонент відображає відсутність ідеальної кореляції; він вимірює "товщину" хмари в 3D-розсіювачі.) Після додавання іншої корельованої змінної ( ) перший компонент становить приблизно три чверті від загальної кількості ; після додавання п'ятої частини перший компонент становить майже чотири п’яті від загальної кількості. У всіх чотирьох випадках компоненти після другого, швидше за все, вважатимуться несуттєвими більшості діагностичних процедур PCA; в останньому випадку це 'X4один головний компонент, який варто розглянути.

Зараз ми можемо побачити, що може бути заслуга у відмові від змінних, які вважаються вимірюючими однаковими основними (але "прихованими") аспектами колекції змінних , оскільки включення майже зайвих змінних може призвести до того, що PCA перебільшує свій внесок. Немає нічого математично правильно (або неправильно) щодо такої процедури; це виклик судження, заснований на аналітичних цілях та знаннях даних. Але має бути цілком зрозуміло, що відхилення змінних, які, як відомо, сильно співвідносяться з іншими, може мати істотний вплив на результати PCA.


Ось Rкод.

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)

5
+1, красиві фігури. Що ти використав для топ-2? 1-й виглядає так, як намальований вручну.
gung

14
TEX

2
Це дуже просвітливо, бешкетник. Я дізнався щось нове.
Спейсі

7
@whuber - це як найшвидший статистик - використовує сюжети XKCD як профі.
Cam.Davidson.Pilon

2
@logan Іншим словом, ні. Дозвольте звернути вашу увагу на пропозицію, пізнє в цій публікації: "Немає нічого математично правильного (або неправильного) щодо такої процедури; це виклик судження, заснований на аналітичних цілях та знаннях даних".
whuber

42

Далі я проілюструю той самий процес та ідею, що й @whuber, але з навантаженням сюжетів, - оскільки завантаження є сутністю результатів PCA.

X1X2X3X2X4X5

Сюжети навантажень перших двох основних компонентів потім йдуть. Червоні шипи на графіках говорять про кореляції між змінними, так що купа кількох шипів - це місце, де знайдено скупчення тісно корельованих змінних. Компоненти - сірі лінії; відносна "сила" компонента (його відносна власне значення величини) задається вагою лінії.

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

Можна спостерігати два ефекти додавання "копій":

  1. Компонент 1 стає все сильнішим і сильнішим, а компонент 2 - слабшим і слабшим.
  2. X1X2X3X2

Я не відновлю мораль, тому що @whuber це вже зробив.


r=0r=0.62r=0.77

X1X2r=0 X1X2самі компоненти можуть бути обрані як компоненти.] Координати точок даних (200 предметів) на компоненті є компонентними балами, а їх сума квадратів, поділених на 200-1, є власним значенням компонента .

rX1X2(але додавання 3-ї змінної може відхилити її як завгодно). Кут (косинус) між змінним вектором та компонентною лінією є співвідношенням між ними, і оскільки вектори є одиничною довжиною, а компоненти ортогональними, це не що інше, як координати, навантаження . Сума навантажень у квадраті на компонент - це його власне значення (компонент просто орієнтується в цьому предметному просторі, щоб максимально збільшити його)

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


Додавання2. Крім того, я говорив про "мінливий простір" та "предметний простір" так, ніби вони несумісні разом, як вода та нафта. Мені довелося переглянути його, і я можу сказати, що - принаймні, коли ми говоримо про PCA - обидва простори зрештою є ізоморфними, і завдяки цій силі ми можемо правильно відобразити всі деталі PCA - точки даних, змінні осі, осі компонентів, змінні як очок, - на одному неспотвореному біплоті.

Нижче наведені розсіювач (змінний простір) та ділянка завантаження (компонентний простір, який підлягає простору за своїм генетичним походженням). Все, що можна було показати на одному, могло бути показане і на іншому. Знімки однакові , лише обертаються на 45 градусів (і відображаються в даному конкретному випадку) відносно один одного. Це було PCA змінних v1 та v2 (стандартизовано, таким чином , було проаналізовано r ). Чорні лінії на малюнках є змінними у вигляді осей; зелені / жовті лінії є компонентами у вигляді осей; блакитні точки - це хмара даних (теми); червоні точки - це змінні, відображені у вигляді точок (векторів).

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


1
+1 цікава ілюстрація. До речі, ваше друге спостереження є артефактом даних: орієнтація змінилася, оскільки в першому випадку кореляція була ідеальною, даючи двовимірне власне простір. (Це вкрай рідко в реальних даних; зазвичай це означає, що була допущена помилка в базі даних, і одна змінна є лінійним повторним вираженням іншої.) Програмне забезпечення було вільне вибрати будь-яку ортогональну основу для цього простору, довільно. Якраз найменша кореляційна залежність усунула б це виродження. Тому я думаю, що ви занадто інтерпретуєте це переорієнтаційне явище.
whuber

@whuber, Можливо, я тебе не розумію. Яке "ідеальне" співвідношення? r bw X1 і X2 було 0,003; і це могло бути будь-яке, наприклад .503. Це було б cos кута, який перекинув два червоні вектори на ділянці. Незалежно від r , 1-й ПК завжди є бісектрисою, тоді як аналізуються лише 2 змінні. Я здогадуюсь, що Ваша примітка The software was free to choose any orthogonal basis for that space, arbitrarilyстосується круглої хмари у змінному просторі (тобто розсіювання даних, як і перша картинка у вашій відповіді), але навантаження сюжету - це предметний простір, де змінні, а не випадки - точки (вектори).
ttnphns

1
R5

Я використовував кореляції (зауважте матрицю і той факт, що червоні вектори по суті однакової довжини). Так, предметний простір - це розсіювач тупсі-торві з n осями (предметами) і p точками (змінними). Звичайно, всі розміри np є зайвими, і будь-який набір змінних p може бути побудований в p-мірному предметному просторі, але це не перетворює його у змінний простір! Я просто додам картину до своєї відповіді.
ttnphns

5
+1, дякую за додатковий внесок, @ttnphns. Це перетворення з того, що я спочатку вважав, було досить простим питанням у казково інформативну тему.
gung

4

Без деталей у вашому документі я б припустив, що це відкидання висококорельованих змінних було зроблено лише для економії на обчислювальній потужності або навантаженні. Я не бачу причини, чому PCA "зламається" для сильно корельованих змінних. Проектування даних на основи, знайдені PCA, впливає на відбілювання даних (або їх кореляцію). У цьому вся суть за PCA.


4
Ви читали підказку від @ttnphns? PCA звертає увагу не тільки на власні вектори (про які ви обговорюєте), але й на власні значення (які ви ігноруєте). Це критично важливо, оскільки власні значення використовуються для визначення компонентів, які потрібно зберегти, а які - для відкидання.
whuber

2
@whuber Так ... так, я думаю, я зараз це отримаю. Отже, по суті, більш корельовані змінні будуть надто підкреслювати окремі власні вектори, (напрямки), і якщо існує багато корельованих змінних, то буде так багато більше переоцінених «підроблених» напрямків, що витіснять «оригінальний» власний вектор / напрямок, який би інакше їх було легко помітити. Я правильно тебе розумію?
Спейсі

2
Це дуже близько, Мухаммеде. Реальність полягає в тому, що набір корельованих змінних може «навантажуватися» на кілька основних компонентів (власних векторів), тому включення багатьох змінних з такого набору буде різною вагою декількох власних векторів - і тим самим змінить напрямки всіх власних векторів.
whuber

1

З мого розуміння, корельовані змінні в порядку, оскільки PCA виводить вектори, ортогональні.


5
Ви маєте рацію, але чи не проти пояснити, чому ортогональність має відношення до того, чи потрібно заздалегідь відкидати змінні?
whuber

-1

Ну, це залежить від вашого алгоритму. Висококорельовані змінні можуть означати погано обумовлену матрицю. Якщо ви використовуєте чутливий до цього алгоритм, це може мати сенс. Але я наважуся сказати, що більшість сучасних алгоритмів, які використовуються для викручування власних значень та власних векторів, є надійними для цього. Спробуйте видалити сильно корельовані змінні. Чи змінюються власні значення та власний вектор на багато? У такому випадку відповідь може бути жорстоким кондиціонером. Оскільки сильно корельовані змінні не додають інформації, розкладання PCA не повинно змінюватися


4
На жаль, PCA робить зміниться: це майже гарантовано.
whuber

1
@whuber Вау, величезна кількість відповідей та дуже інформативна. Вибачте за коментар, це було абсолютно неправильно. Моє ліжко. Дуже інформативна відповідь BTW
Juancentro

4
Я дізнаюся найбільше з абсолютно невірних відповідей, Juancentro - особливо мої власні, які, на щастя, рідко виходять на публіку :-). У мене були думки, подібні до ваших, поки @ttnphns не залишив коментар.
whuber

-1

Залежить від того, яким принциповим методом вибору компонентів ви користуєтесь, чи не так?

Я схильний використовувати будь-який основний компонент із власним значенням> 1. Так що це не вплине на мене.

І з наведених вище прикладів навіть метод сюжетного сюжету зазвичай обирає правильний. ЯКЩО ВИ ВДАЄТЬСЯ ВСІ, ПЕРЕД ЕЛЬБОМ. Однак якби ви просто вибрали основний компонент з "домінуючим" власним значенням, ви б звели з толку. Але це не правильний спосіб використання сюжетного огляду!


5
Ласкаво просимо на сайт, Кріс. На жаль, жодна з цих спеціальних процедур не може бути особливо захищеною. Зауважте, що в першому випадку ви взагалі не змогли змінити форму своїх даних і перейдіть від вибору всіх до вибору жодної з них (просто множивши все на константу).
кардинал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.