Не нормалізація даних до PCA дає краще пояснене співвідношення дисперсії


19

Я нормалізував мій набір даних, потім запустив 3-х компонентний PCA, щоб отримати невеликі пояснені коефіцієнти дисперсії ([0,50, 0,1, 0,05]).

Коли я не нормалізував, а побілив мій набір даних, то побіг 3-компонентний PCA, я отримав високі пояснені коефіцієнти дисперсії ([0.86, 0.06,0.01]).

Оскільки я хочу зберегти якомога більше даних у 3-х компонентах, чи НЕ слід нормалізувати дані? З мого розуміння, ми завжди повинні нормалізуватися перед PCA.

Нормалізуючи: встановлення середнього значення 0 та відхилення одиниці.

pca 

3
Хоча незрозуміло , що ви маєте в виду під «нормалізацією» дані (я знаю , принаймні , чотири стандартних способів зробити це в PCA і , ймовірно , є більш), це звучить як матеріал на stats.stackexchange.com/questions/53 могутності бути освітлюючим.
whuber

Вітаю, каламут: я маю на увазі нормалізацію кожного спостереження до одиничної норми

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

1
Чи є відбілювання перед PCA типовим? Яка мета цього зробити?
shadowtalker

2
Якщо ви працювали із зображеннями, наприклад, норма зображень відповідає яскравості. Висока пояснена дисперсія ненормованих даних означає, що багато даних можна пояснити зміною яскравості. Якщо яскравість для вас не важлива, оскільки це часто не в обробці зображень, то ви хочете спочатку зробити всі одиниці зображень нормою. Навіть думав, що пояснена дисперсія ваших компонентів pca буде нижчою, це краще відображатиме те, що вас цікавить.
Аарон

Відповіді:


37

Залежить від мети вашого аналізу. Деякі поширені практики, деякі з яких згадуються у посиланні whuber:

  1. Стандартизація зазвичай проводиться, коли змінні, на яких виконується PCA, не вимірюються в одній шкалі. Зауважимо, що стандартизація передбачає надання однакового значення всім змінним.
  2. Якщо вони не вимірюються в одній шкалі і ви вирішили працювати над нестандартизованими змінними, часто буває так, що на кожному ПК переважає одна змінна, і ви просто отримуєте своєрідне впорядкування змінних за їхньою дисперсією. (Одне з завантажень кожного (раннього) компонента буде близьким до +1 або -1.)
  3. Ці два методи часто призводять до різних результатів.

Інтуїтивний приклад:

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

>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))

Тепер припустимо, що висоту насправді вимірювали в милях замість ніг.

>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
                      Comp.1       Comp.2
Standard deviation     3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion  0.9999999 1.000000e+00

Перший компонент пояснює майже 100% мінливості даних. Навантаження:

> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height        -1    
tree.girth   1           

Графічна оцінка:

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Біплет першого методу

Ми бачимо, що дерева, що мають високий об'єм, мають тенденцію до високого обхвату дерев, але три висоти не дають жодної інформації про об'єм дерева. Ймовірно, це неправильно і наслідок двох різних одиничних заходів.

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

>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1    Comp.2
Standard deviation     6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion  0.8677775 1.0000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height -0.956  0.293
tree.girth  -0.293 -0.956

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Біплет другого методу

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

Однак, якщо уважно спостерігати, ми бачимо, що контраст між великим / низьким рівнем гучності є найбільш сильним у напрямку обхвату, а не у напрямку висоти. Подивимося, що станеться, коли ми стандартизуємо:

>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1     Comp.2
Standard deviation     0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion  0.9184749 1.00000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height  0.203 -0.979
tree.girth   0.979  0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Біплот третього методу

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


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