Нужно ли удалять высококоррелированные переменные перед PCA?

111

Я читаю статью, где автор отказывается от нескольких переменных из-за высокой корреляции с другими переменными, прежде чем делать PCA. Общее количество переменных составляет около 20.

Это дает какие-то преимущества? Мне это кажется непосильным, так как PCA должен справиться с этим автоматически.

типа2
источник
26
Просто намек. Подумайте, как изменится результат PCA, если добавить все больше и больше копий (или почти копий) одной из переменных.
ttnphns
@ type2 можешь ли ты назвать бумагу, которую читал?
Amatya

Ответы:

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 сюжет

Точки изначально лежат в синей плоскости и поднимаются до красных точек. Исходная ось указывает на право. В результате наклона также растягивает точки вдоль направлений YZ, тем самым удвоив свой вклад в дисперсию. Следовательно, СПС этих новых данных будет по-прежнему идентифицировать два основных главных компонента, но теперь один из них будет иметь двойную дисперсию другого.Y

Это геометрическое ожидание подтверждается некоторыми моделями в R. Для этого я повторил процедуру «подъема», создав почти коллинеарные копии второй переменной во второй, третий, четвертый и пятый раз, назвав их от до . Вот матрица рассеяния, показывающая, как эти последние четыре переменные хорошо коррелируют:X 5X2X5

Матрица рассеяния

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

Результаты PCA

Первоначально, с двумя почти некоррелированными переменными, вклады почти равны (верхний левый угол). После добавления одной переменной, соотнесенной со второй - точно так же, как на геометрической иллюстрации, - все еще остается только два основных компонента, один теперь в два раза больше другого. (Третий компонент отражает отсутствие идеальной корреляции; он измеряет «толщину» облака на трехмерной диаграмме рассеяния.) После добавления другой коррелированной переменной ( ) первый компонент теперь составляет около трех четвертей от общего числа. ; после добавления пятой части первый компонент составляет почти четыре пятых от общего числа. Во всех четырех случаях компоненты после второго, вероятно, будут считаться несущественными для большинства диагностических процедур PCA; в последнем случае этоX4один главный компонент стоит рассмотреть.

Теперь мы можем видеть, что может быть полезно отбросить переменные, которые, как считается, измеряют один и тот же базовый (но «скрытый») аспект набора переменных , потому что включение почти избыточных переменных может привести к тому, что СПС переоценит их вклад. В такой процедуре нет ничего математически правильного (или неправильного); это суждение, основанное на аналитических целях и знаниях данных. Но должно быть совершенно ясно, что откладывание переменных, о которых известно, что они сильно коррелируют с другими, может оказать существенное влияние на результаты 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)
Whuber
источник
5
+1, красивые фигуры. Что вы использовали для топ-2? 1-й выглядит как нарисованный от руки.
gung
14
@gung Я использовал вариант кода на mathematica.stackexchange.com/questions/11350/xkcd-style-graphs для первой фигуры. Давно известно, что добавление небольшого случайного дрожания в текст или изображение может сделать его более теплым и доступным. ( Сам изначально был построен на Metafont , который Дональд Кнут разработал после глубокого изучения типографики; он включил такую ​​встроенную вариацию.) Для некоторых графических объектов, таких как псевдо 3D диаграмма рассеяния на втором рисунке, техника дрожания добавляет немного или отвлекает, поэтому я не использовал его там. TEX
whuber
2
Это очень поучительно. Я узнал что-то новое.
Спейси
7
@whuber - самый стильный статистик, использующий графики XKCD как профессионал.
Cam.Davidson.Pilon
2
@logan Другими словами, нет. Позвольте мне обратить ваше внимание на предложение в конце этого поста: «Нет ничего математически правильного (или неправильного) в такой процедуре; это суждение, основанное на аналитических целях и знании данных».
whuber
43

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

X1X2X3X2X4X5

Затем идут графики загрузок первых 2 главных компонентов. Красные пики на графиках говорят о корреляциях между переменными, так что группа из нескольких пиков - это то место, где находится кластер тесно коррелированных переменных. Компоненты - серые линии; Относительная «прочность» компонента (его относительная величина собственного значения) определяется весом линии.

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

Можно наблюдать два эффекта добавления «копий»:

  1. Компонент 1 становится все сильнее и сильнее, а Компонент 2 все слабее и слабее.
  2. X1X2X3X2

Я не буду возобновлять мораль, потому что @whuber уже сделал это.


r=0r=0.62r=0.77

X1X2r=0 X1X2Сами линии могут быть выбраны в качестве компонентов.] Координаты точек данных (200 объектов) на компоненте являются баллами компонента, а их сумма квадратов, разделенная на 200-1, является собственным значением компонента .

rX1X2(но добавление третьей переменной может отклонить ее в любом случае). Угол (косинус) между переменным вектором и линией компонентов является корреляцией между ними, и поскольку векторы имеют единичную длину, а компоненты ортогональны, это не что иное, как координаты, загрузка . Сумма квадратов нагрузок на компонент является его собственным значением (компонент просто ориентируется в этом предметном пространстве, чтобы максимизировать его)

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


Addition2. Кроме того, я говорил о «переменном пространстве» и «предметном пространстве», как будто они несовместимы друг с другом, как вода и масло. Мне пришлось пересмотреть это и, возможно, сказать, что - по крайней мере, когда мы говорим о PCA - оба конца в конце изоморфны, и благодаря этому мы можем правильно отобразить все детали PCA - точки данных, переменные оси, оси компонентов, переменные как баллов, - на одном неискаженном биплоте.

Ниже приведены диаграмма рассеяния (переменное пространство) и диаграмма загрузки (пространство компонентов, которое по своему генетическому происхождению является предметным пространством). Все, что можно было показать на одном, можно было бы показать и на другом. Изображения идентичны , повернуты только на 45 градусов (и отражены, в данном конкретном случае) относительно друг друга. Это был PCA переменных v1 и v2 (стандартизированный, таким образом, именно r был проанализирован). Черные линии на картинках - это переменные в виде осей; зеленые / желтые линии являются компонентами в виде осей; синие точки - облако данных (субъекты); красные точки - это переменные, отображаемые в виде точек (векторов).

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

ttnphns
источник
1
+1 интересная иллюстрация. Кстати, ваше второе наблюдение является артефактом данных: ориентация изменилась, потому что в первом случае корреляция была идеальной, давая двумерное собственное пространство. (Это крайне редко встречается в реальных данных; обычно это означает, что была допущена ошибка в базе данных, а одна переменная является линейным повторным выражением другой.) Программное обеспечение могло свободно выбирать любую ортогональную основу для этого пространства, произвольно. Только малейшее количество корреляции могло бы устранить это вырождение. Поэтому я думаю, что вы чрезмерно истолковываете это явление переориентации.
whuber
@whuber, может я тебя не понимаю. Какая «идеальная» корреляция? r bw X1 и X2 было 0,003; и это мог быть любой, например .503. Это будет потому, что угол bw двух красных векторов на графике. Независимо от 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 не должна меняться

Juancentro
источник
4
К сожалению, PCA действительно меняется: это почти гарантировано.
whuber
1
@whuber Wow, огромное количество ответов, и очень информативно. Извините за мой комментарий, это было совершенно неправильно. Виноват. Очень информативный ответ BTW
Juancentro
4
Я больше всего учусь на совершенно неправильных ответах, Juancentro - особенно на моих собственных, которые, к счастью, редко выходят на публику :-). У меня были мысли похожие на ваши, пока @ttnphns не оставил комментарий.
whuber
-1

Зависит от того, какой метод выбора компонентов вы используете, не так ли?

Я склонен использовать любой принципиальный компонент с собственным значением> 1. Так что это не повлияет на меня.

А из приведенных выше примеров даже метод создания осыпи обычно выбирает правильный. ЕСЛИ ВЫ СОХРАНИТЕ ВСЕ ДО ПОТЕРЯ. Однако, если вы просто выбрали основной компонент с «доминирующим» собственным значением, вы бы сбились с пути. Но это не правильный способ использования сюжета!

Крис Хауден
источник
5
Добро пожаловать на сайт, Крис. К сожалению, ни одна из этих специальных процедур не является особенно оправданной. Обратите внимание, что в первом случае вы не могли вообще изменить форму ваших данных и перейти от выбора всех из них к выбору ни одного из них (просто умножив все на константу).
кардинал