Виконання PCA лише матрицею відстані


12

Я хочу об'єднати масивний набір даних, для якого у мене є лише попарні відстані. Я реалізував алгоритм k-medoids, але це займає занадто багато часу, тому я хотів би почати, зменшивши розмір моєї проблеми, застосувавши PCA. Однак єдиним способом, яким я знаю виконати цей метод, є використання матриці коваріації, якої у мене немає.

Чи є спосіб застосувати PCA, знаючи лише попарні відстані?


1
Отже, у вас є велика квадратна матриця відстаней між точками, які потрібно кластеризувати. (BTW яка відстань? Евклідовий?) Що змушує вас думати, що саме кількість розмірів цих точок, а не кількість самих точок (кардинальність), перешкоджає кластеризації?
ttnphns

1
Кількість балів не "дуже велика" (кілька тисяч). Відстань, яку я використовую, - це співвіднесеність між цими точками
bigTree

2
Але моє запитання було: ви дійсно хочете зменшити розмірність (і якщо так, то чому?) Чи кардинальність (кількість балів)? Тому що ваше запитання незрозуміле .
ttnphns

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

1
Я думаю, що для вас найпростіший спосіб використовувати такий (а) метод кластеризації або (б) таку його реалізацію, або (в) такий сильний (достатньо оперативної пам'яті) комп'ютер, який займе і класифікує 6000 об'єктів (я не знаю, чому ваш Медоїдна програма вважає це важким. 6000 є великим, але не дуже великим.). Деякі методи (наприклад, K-засоби) вимагають, щоб об'єкти 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). Ви можете дізнатися більше на wikipedia або в цій книзі .

Ви можете це зробити за Rдопомогою функції mds cmdscale. Для вибірки xви можете перевірити це prcomp(x)і cmdscale(dist(x))дати той самий результат (де prcompPCA і distпросто обчислює евклідові відстані між елементами x)


3

Це виглядає як проблема, до якої може бути застосовано спектральне кластеризація. Оскільки у вас є матриця попарної відстані, ви можете визначити повністю пов'язаний графік, де кожен вузол має N з'єднань, що відповідає його відстані від кожного іншого вузла в графі. З цього ви можете обчислити графік Laplacian (якщо це звучить страшно, не хвилюйтеся - це просте обчислення), а потім взяти власні вектори найменшихвласні значення (саме це відрізняється від PCA). Якщо ви візьмете, наприклад, 3 власні вектори, у вас буде матриця Nx3. У цьому просторі точки (сподіваємось) повинні бути добре відокремлені через деяку точну теорію графіків, яка дозволяє припустити, що це оптимальний розріз для максимізації потоку (або відстані, в даному випадку) між кластерами. Звідти ви можете використовувати k-засоби або подібний алгоритм для кластеризації в 3-просторі. Рекомендую ознайомитись із цим дивовижним покроковим описом:

http://arxiv.org/abs/0711.0189


0

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


Відповідь Ендрю Кассіді насправді справедлива. Якщо ваша міра відстані - це грунтовна кореляція, ви просто стандартизуючий коефіцієнт, "занадто далеко" від фактично матриці коваріації. Таким чином, застосовувати SVD - це те саме, що робити PCA.
Метью Ентоні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.