Простір-ефективна кластеризація


9

Більшість алгоритмів кластеризації, які я бачив, починаються зі створення відстані "кожен до кожного" серед усіх точок, що стає проблематичним для великих наборів даних. Чи є такий, хто цього не робить? Або це в якомусь частковому / наближеному / поетапному підході?

Який алгоритм / реалізація кластеризації займає менше місця (O (n ^ 2)?

Чи є десь список алгоритмів та їх вимоги до часу та простору?


2
Можливо, переміщення кластерного типу вікон (наприклад, SaTScan, satscan.org ) відповідало б вашим вимогам. Ця конкретна програма призначена для просторових / часових даних, тому насправді не призначена для більш високих розмірів, але, можливо, дасть вам кілька ідей чи місце для початку.
Andy W

Відповіді:


5

K-Means і Mean-Shift використовують описувані описові вибірки (не потрібно попередньо обчислювати матрицю афінності).

В іншому випадку для спектрального кластеризації або кластеризації ітерації потужності можна використовувати розріджене матричне подання (наприклад, стислі розріджені рядки) матриці спорідненості k-найближчих сусідів (для деякої метрики відстані або спорідненості). Якщо k малий (скажімо, 5 або 10). Ви отримаєте дуже простірне представлення (2 * n_samples * k * 8 байт для подвійної точності значення плаваючої точки).


2

Деякі алгоритми кластеризації можуть використовувати просторові структури індексів. Це дозволяє, наприклад, DBSCAN та OPTICS запускатись в час (доки індекс дозволяє ).О(нжурналн)О(журналн)

Очевидно, що алгоритм, який працює в цій складності, не будує матрицю відстані .О(н2)

Для деяких алгоритмів, таких як ієрархічна кластеризація з односхилим і повноцінним зв’язком, є оптимізовані алгоритми (SLINK, CLINK). Просто більшість людей використовують все, що можуть отримати, і все, що легко здійснити. Ієрархічну кластеризацію легко реалізувати наївно, використовуючи ітерацій над матрицею відстані (в результаті чого алгоритм ...).нн2О(н3)

Мені невідомий повний список порівняння алгоритмів кластеризації. Зрештою, існує 100+ алгоритмів кластеризації. Наприклад, є щонайменше десяток к-варіантів. Крім того, є складність часу виконання, а також складність пам'яті; є середній і найгірший. Існує величезна різниця у впровадженні (наприклад, згадане вище посилання з одним посиланням; та реалізація DBSCAN, які не використовують індекс, і, таким чином, знаходяться в , і при цьому їм не потрібно зберігати повну матрицю відстані , тоді їм ще потрібно обчислити всі попарні відстані). Плюс є тонни параметрів. Для k-означає,О(н2)н×нкє критичним. Для майже будь-якого алгоритму функція відстані робить величезну різницю (будь-яка реалізація дозволяє лише відстань Евкліда ...). І як тільки ви дістанетесь до дорогих функцій дистанції (крім тривіальних речей, таких як Евклідова), кількість обчислень на відстані може швидко стати головною частиною. Тоді вам слід буде розмежовувати кількість операцій загалом та кількість необхідних обчислень на відстані. Отже алгоритм, який є вО(н2) операції, але тільки О(н) Розрахунки на відстані можуть легко перевершити алгоритм, який є О(нжурналн) в обох випадках, коли функції дистанції дійсно дорогі (скажімо, сама функція відстані є О(н)).


дуже добре відповісти.
MonsterMMORPG

1

Хороше питання. Солом’яний метод для, наприклад, 3 найближчих сусідів, полягає в вибірці Nsample сусідів кожної точки даних, зберігаючи найближчу 3. Хоча тривіально, запустивши це для кількох значень Nsample, ви дасте деяке уявлення про співвідношення сигнал / шум, близько / фоновий шум , легко будується для ваших даних. Додатковий трюк - перевірити сусідів сусідів, щоб побачити, чи хтось із них ближче, ніж прямі сусіди. Крім того, якщо вхідні дані вже добре переміщені, вибірки в блоках, інакше кеш буде зірвано.

(Додано): див. Швидкий кластер в R, і я вірю в SciPy v0.11.
Для тексту див. Google-all-pair-подібність-пошук .

Повторимо: "Відповідний захід несхожості набагато важливіший для досягнення успіху в кластеризації, ніж вибір алгоритму кластеризації" - вибір методу кластеризації .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.