Нормализация данных до того, как PCA дает лучший объясненный коэффициент дисперсии

19

Я нормализовал свой набор данных, а затем провел трехкомпонентный PCA, чтобы получить малые объясненные коэффициенты дисперсии ([0,50, 0,1, 0,05]).

Когда я не нормализовал, а отбелил набор данных, а затем провел трехкомпонентную PCA, я получил высокие объясненные коэффициенты дисперсии ([0,86, 0,06,0,01]).

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

При нормализации: установка среднего значения на 0 и наличие единицы измерения.


источник
3
Хотя неясно, что вы подразумеваете под «нормализацией» данных (я знаю как минимум четыре стандартных способа сделать это в PCA и, вероятно, есть и другие), похоже, что материал на stats.stackexchange.com/questions/53 может быть освещающим.
whuber
Hi whubber: я имею в виду нормализацию каждого наблюдения к единице нормы
1
Благодарю. Обычный термин для этого - «стандартизация». Когда вы делаете это, вы выполняете PCA на основе корреляций: поэтому я думаю, что предоставленная мной ссылка уже может ответить на ваш вопрос. Тем не менее, я не вижу ни одного из ответов, которые на самом деле объясняют, почему или как вы получите другие результаты (возможно, потому что это сложно и эффект стандартизации может быть трудно предсказать).
whuber
1
Типично ли отбеливание перед PCA? Какова цель сделать это?
бродяга
2
Например, если вы работали с изображениями, норма изображений соответствует яркости. Высокая объясняемая дисперсия ненормализованных данных означает, что многие данные могут быть объяснены изменениями яркости. Если для вас не важна яркость, так как она часто не используется при обработке изображений, то сначала вы должны сделать единицу всех изображений нормой. Даже при том, что объясненная дисперсия ваших компонентов PCA будет ниже, она лучше отражает то, что вас интересует.
Аарон

Ответы:

37

Зависит от цели вашего анализа. Некоторые общие практики, некоторые из которых упоминаются в ссылке на whuber:

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

Интуитивно понятный пример:

Предположим, у вас есть две переменные: высота дерева и обхват одного и того же дерева. Мы преобразуем объем в фактор: дерево будет иметь большой объем, если его объем превышает 20 кубических футов, а в противном случае - низкий. Мы будем использовать набор данных деревьев, который предварительно загружен в R.

>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"))

Биплот третьего метода

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

Matt.135
источник
2
(+1) Очень хороший ответ, на самом деле превосходящий все, приведенные в популярной ветке о PCA, посвященной ковариации и корреляции.
говорит амеба: восстанови монику