Чи є якесь значення зменшення розмірності набору даних, де всі змінні приблизно ортогональні?


11

Припустимо, у мене є -вимірний набір даних, де розміри приблизно ортогональні (мають нульову кореляцію).NNN

Чи є якась утиліта з точки зору:

  1. Візуалізація
  2. Представлення (для ефективності класифікатора)
  3. Або інші критерії

виконати зменшення розмірності даних?


3
Частково відповідна відповідь stats.stackexchange.com/a/92803/3277
ttnphns

Відповіді:


8

Я хотів уточнити коментар, який я залишив під відповіддю @ Пітера-Флома, але, мабуть, варто написати у відповідь. Наскільки ви можете зменшити розміри, застосувавши ПКС на майже ортогональних даних? Відповідь - це "залежить" від того, чи виконуєте Ви PCA на кореляційній або коваріаційній матриці .

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

set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
    x1 <- rnorm(n, mean=0, sd=sd1)
    x2 <- rnorm(n, mean=0, sd=sd2)
    x3 <- rnorm(n, mean=0, sd=sd3)
    x4 <- rnorm(n, mean=0, sd=sd4)
    prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}

Вихід:

> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion  0.2882 0.5505 0.7887 1.0000
> 
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion  0.2504 0.5006 0.7505 1.0000

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

> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
                          PC1    PC2    PC3    PC4
Standard deviation     4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion  0.2507 0.5009 0.7508 1.0000

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

> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion  0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
      PC1   PC2    PC3    PC4
x1  0.460 0.888  0.000  0.000
x2 -0.888 0.460  0.000  0.000
x3  0.000 0.000 -0.747 -0.664
x4  0.000 0.000  0.664 -0.747

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

> pc1234 <-  princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion  0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
     PC1    PC2    PC3   PC4
x1 0.000  0.000 -0.001 1.000
x2 0.001 -0.001  1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000  0.003 -0.001 0.000

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

Nota bene: тривалість часу, витраченого на обговорення випадку, коли змінні не віднесені до одиничної дисперсії - тобто з використанням коваріації, а не кореляційної матриці - не слід сприймати як ознаку того, що цей підхід якось важливіший, і, звичайно, не те, що він краще". Симетрія ситуації просто більш тонка, тому потрібна тривала дискусія.


Моя відповідь, можливо, найкраще відповідає на проблему, поставлену в оригінальному плакаті (який стосувався того, чого PCA може чи не може досягти), який, я вважаю, пояснює зелену галочку! Але я закликаю читачів переглянути відповідь @ RyanBressler, яка пропонує альтернативні рішення .
Срібна рибка

11

Ви можете спробувати більш загальний метод нелінійного зменшення розмірності в колекторі, наприклад, локальне лінійне вбудовування, лапласіанські власні карти або t-SNE.

Цілком можливо, що у ваших даних може бути нижній розмірний підпростір (колектор) таким чином, що залишається 0 кореляції між N-базисними розмірами. Наприклад, коло точок щодо походження або форми хвилі, як це видно тут . PCA цього не візьме, але інші методи будуть.

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


6

Якщо всі N змінних приблизно ортогональні, то зменшення розмірів зробить відносно невелике зменшення. НаприкладR

set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
x4 <- rnorm(100)
x5 <- rnorm(100)
x6 <- rnorm(100)
x7 <- rnorm(100)
x8 <- rnorm(100)
x9 <- rnorm(100)
x10 <- rnorm(100)

df1 <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)

pcsol <- princomp(df1)
loadings(pcsol)

По суті, "ортогональний" має на увазі "вже при найменших розмірах".


2
у вас є трохи помилка в «orthongonal»
серебрянки

6
@Silverfish, ортон - "гуманоїд середнього зросту з довгим світлим волоссям і засмаглою шкірою, одягнений в червонувато-коричневі черевики". Хоча ти можеш бути прав, Петро мав на увазі інше.
ttnphns

4
Чи варто вказати, що ця відповідь залежить від масштабування змінних? Якщо є змінні великої та низької дисперсії, і ми робимо PCA на матриці кореляції, а не в кореляційній матриці, то будуть низькодисперсні компоненти, які можна скинути (ортогональність означає лише, що їх навантаження сильно ототожнюють їх з однією змінною низької дисперсії кожна). Внесіть такі незначні зміни: x1<-rnorm(100, sd=0.1)і pcsol <- princomp(df1, cor=FALSE)є різниця, особливо якщо ми подивимось summary(pcsol). (Я не припускаю, що cov є кращим підходом, ніж кор. Просто це можливо.)
Silverfish

Я виправив помилку, дякую. Також хороший момент щодо масштабування.
Пітер Флом

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