Cluster analysis is the task of grouping a set of objects in such a way that objects in the same group are more similar to each other than to those in other groups. It is not one specific algorithm, but the general task to be solved. It can be achieved by various algorithms, that different significantly in their notion of what constitutes a cluster and how to efficiently find them. Clustering can be formulated as a multi-objective optimization problem. The appropriate clustering algorithm and parameter setting depends on the individual data set and intended use of the results. It is not an automatic task but an iterative process of knowledge discovery or interactive multi-objective optimization that involves trial and failure.
Due to the fact the cluster cannot be defined, there are many clustering algorithms. The common denominator is a group of data objects. Different researchers employ different cluster models and for each of these cluster models, a different algorithm can be given.
Clustering algorithms can be categorized based on their cluster models. Not all provide models for their clusters and can thus not easily be categorized. There is no objectively correct clustering algorithm. The most appropriate clustering algorithm for a particular problem often needs to be chosen experimentally unless there is a mathematical reason to prefer one cluster model over another.