We reviewed clustering algorithms in Section 2.4. Clustering is usually used in
RS to improve performance. A previous clustering step, either in the user of item
space, reduces the number of distance computations we need to perform. However,
this usually comes at the price of a lower accuracy so it should be handled with
care. As a matter of fact, improving efficiency by using a dimensionality reduction
technique such as SVD is probably a better choice in the general case. As opposed
to what happens with classifiers, not so many clustering algorithms have been used
in the context of RS. The simplicity and relative efficiency of the k-means algorithm
(see Section 2.4.1) make it hard to find a practical alternative. We reviewed some
of them such as Hierarchical Clustering or Message-passing algorithms in Section
2.4.2. Although these techniques have still not been applied for RS, they offer a
promising avenue for future research.