Выполнение PCA только с дистанционной матрицей


12

Я хочу объединить массивный набор данных, для которого у меня есть только попарные расстояния. Я реализовал алгоритм k-medoids, но его запуск занимает слишком много времени, поэтому я хотел бы начать с уменьшения масштабов моей проблемы путем применения PCA. Тем не менее, единственный способ, которым я знаю, чтобы выполнить этот метод, это использовать ковариационную матрицу, которой у меня нет в моей ситуации.

Есть ли способ применить PCA, зная только парные расстояния?


1
Итак, у вас есть большая квадратная матрица расстояний между точками, которые вы хотите сгруппировать. (Между прочим, какое расстояние? Евклидово?) Что заставляет вас думать, что именно количество измерений этих точек охватывает, а не количество самих точек (кардинальность), которые препятствуют кластеризации?
ttnphns

1
Количество баллов не очень большое (несколько тысяч). Расстояние, которое я использую, является корреляцией Пирсона между этими точками
bigTree

2
Но мой вопрос: действительно ли вы хотите уменьшить размерность (и если да, то почему?) Или мощность (число точек)? Потому что ваш вопрос неясен .
ttnphns

1
N×NNN

1
Я думаю, что самый простой способ для вас - использовать такой (а) метод кластеризации или (б) такую ​​его реализацию или (в) такой сильный (достаточный объем ОЗУ) компьютер, который будет принимать и классифицировать 6000 объектов (я не знаю, почему ваш Программа medoid находит это трудным. 6000 большой, но не очень большой.) Некоторые методы (например, K-means) требуют, чтобы объекты X содержали данные. Вы можете создать такие данные из матрицы расстояний между объектами с помощью метрики MDS (если, опять же, ваш компьютер / программа MDS разрешит 6000 объектов).
ttnphns

Ответы:


8

Обновление: я полностью удалил свой первоначальный ответ, потому что он был основан на путанице между евклидовыми расстояниями и скалярными произведениями. Это новая версия моего ответа. Извиняюсь.

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

Очень кратко, матрица евклидовых расстояний может быть преобразована в центрированную матрицу Грама, которая может быть непосредственно использована для выполнения PCA посредством собственного разложения. Эта процедура известна как [классическое] многомерное масштабирование (MDS) .

Если ваши попарные расстояния не являются евклидовыми, то вы не можете выполнить PCA, но все равно можете выполнить MDS, который больше не будет эквивалентен PCA. Тем не менее, в этой ситуации MDS, вероятно, будет еще лучше для ваших целей.


Расстояние, которое я использую, является корреляцией (корреляция Пирсона) и, следовательно, не является евклидовым расстоянием. Будет ли это работать аналогично?
BigTree

1
@bigTree: Если это не евклидово расстояние, вы не сможете запустить PCA. Тем не менее, вы можете использовать многомерное масштабирование, которое представляет собой метод уменьшения размерности, который использует именно матрицу попарных расстояний (это может быть любое расстояние). Еще одно примечание: при определенных предположениях об исходных точках данных (которых у вас нет) корреляции могут быть преобразованы в евклидовы расстояния. Допущения: (1) имеет нулевое среднее значение, (2) имеет фиксированную, например, единицу, длину. Это случайно для ваших данных?
говорит амеба, восстанови Монику

Ничего из этого не является правдой или моими данными, но я попробую MDS, спасибо
bigTree

1
вы не можете использовать ядро ​​PCA? Я полагаю, что для этого потребуются только попарные продукты, но я не знаю много о проблеме, поэтому не знаю, имеет ли это смысл
rep_ho

4

PCA с матрицей расстояний существует и называется многомерным масштабированием (MDS). Вы можете узнать больше в Википедии или в этой книге .

Вы можете сделать это Rс помощью функции MDS cmdscale. Для примера xвы можете проверить это prcomp(x)и cmdscale(dist(x))дать тот же результат (где prcompPCA и distпросто вычисляет евклидовы расстояния между элементами x)


3

Это похоже на проблему, к которой может быть применена спектральная кластеризация. Поскольку у вас есть матрица попарных расстояний, вы можете определить полностью связанный граф, в котором каждый узел имеет N соединений, что соответствует его расстоянию от любого другого узла в графе. Исходя из этого, вы можете вычислить лапласианский график (если это звучит страшно, не беспокойтесь - это простое вычисление), а затем взять собственные векторы наименьшегоСобственные значения (в этом отличие от PCA). Например, если вы возьмете 3 собственных вектора, у вас будет матрица Nx3. В этом пространстве точки (надеюсь) должны быть хорошо разделены из-за некоторой теории аккуратных графов, которая предполагает, что это оптимальный отрезок для максимизации потока (или расстояния, в данном случае) между кластерами. Оттуда вы можете использовать k-средних или аналогичный алгоритм для кластеризации в 3-пространстве. Я рекомендую проверить это удивительное прохождение для большего понимания:

http://arxiv.org/abs/0711.0189


0

Попарные расстояния также образуют квадратную матрицу, как матрицу ковариации. PCA - это просто SVD ( http://en.wikipedia.org/wiki/Singular_value_decomposition ), применяемый к ковариационной матрице. Вы все еще должны быть в состоянии уменьшить размерность, используя SVD для ваших данных. Я не совсем уверен, как интерпретировать ваш вывод, но это определенно что-то попробовать. Вы можете использовать методы кластеризации, такие как k-means или иерархическая кластеризация. Также обратите внимание на другие методы уменьшения размеров, такие как многомерное масштабирование. Что вы пытаетесь выбраться из своих кластеров?


Эндрю Кэссиди ответ действительно действителен. Если мерой расстояния является корреляция Пирсона, вы просто стандартизирующий фактор «слишком далеко» от фактического наличия ковариационной матрицы. Таким образом, применение SVD - это то же самое, что и PCA.
Мэтью Энтони
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.