Alguns algoritmos de cluster podem usar estruturas de índice espacial. Isso permite, por exemplo, que o DBSCAN e o OPTICS sejam executados no tempo (desde que o índice permita consultas ).O ( n logn )O ( logn )
Obviamente, um algoritmo executado nessa complexidade não cria uma matriz de distância .O ( n2)
Para alguns algoritmos, como cluster hierárquico com ligação única e ligação completa, existem algoritmos otimizados disponíveis (SLINK, CLINK). É que a maioria das pessoas usa o que pode obter e o que é fácil de implementar. E o cluster hierárquico é fácil de implementar de forma ingênua, usando iterações em uma matriz de distância (resultando em um algoritmo ...).nn2O ( n3)
Não estou ciente de uma lista completa comparando algoritmos de cluster. Provavelmente, existem mais de 100 algoritmos de clustering. Existem pelo menos uma dúzia de variantes k-means, por exemplo. Além disso, há complexidade em tempo de execução e complexidade de memória; há casos médios e piores. Existem grandes diferenças de implementação (por exemplo, link único mencionado acima; implementações de DBSCAN que não usam um índice e, portanto, estão em e, embora não precisem armazenar a matriz de distância , eles ainda precisam calcular todas as distâncias aos pares). Além disso, existem muitos parâmetros. Para k-significa,O ( n2)n × nké crítico. Para praticamente qualquer algoritmo, a função de distância faz uma enorme diferença (muitas implementações permitem apenas a distância euclidiana ...). E quando você chega a funções dispendiosas de distância (além de coisas triviais como a Euclidiana), o número de cálculos de distância pode rapidamente ser a parte principal. Então você precisaria diferenciar entre o número de operações no total e o número de cálculos de distância necessários. Portanto, um algoritmo que está em operações , mas apenas cálculos de distância pode facilmente superar um algoritmo que é em ambos, quando as funções de distância são realmente caras (por exemplo, a distância a função em si é ).O ( n2)O ( n )O ( n logn )O ( n )