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