I would like to understand, what is the major implementation difference between standard and spherical k-means clustering algorithms.

In each step, k-means computes distances between element vectors and cluster centroids, and reassigns document to this cluster, whose centroid is the closest one. Then, all centroids are recomputed.

In spherical k-means, all vectors are normalized, and distance measure is cosine dissimilarity.

Is that all, or there is something else?


1 Answer 1


The question is:

What is the difference between classical k-means and spherical k-means?

Classic K-means:

In classic k-means, we seek to minimize a Euclidean distance between the cluster center and the members of the cluster. The intuition behind this is that the radial distance from the cluster-center to the element location should "have sameness" or "be similar" for all elements of that cluster.

The algorithm is:

  • Set number of clusters (aka cluster count)
  • Initialize by randomly assigning points in the space to cluster indices
  • Repeat until converge
    • For each point find the nearest cluster and assign point to cluster
    • For each cluster, find the mean of member points and update center mean
    • Error is norm of distance of clusters

Spherical K-means:

In spherical k-means, the idea is to set the center of each cluster such that it makes both uniform and minimal the angle between components. The intuition is like looking at stars - the points should have consistent spacing between each other. That spacing is simpler to quantify as "cosine similarity", but it means there are no "milky-way" galaxies forming large bright swathes across the sky of the data. (Yes, I'm trying to speak to grandma in this part of the description.)

More technical version:

Think about vectors, the things you graph as arrows with orientation, and fixed length. It can be translated anywhere and be the same vector. ref

enter image description here

The orientation of the point in the space (its angle from a reference line) can be computed using linear algebra, particularly the dot product.

If we move all the data so that their tail is at the same point, we can compare "vectors" by their angle, and group similar ones into a single cluster.

enter image description here

For clarity, the lengths of the vectors are scaled, so that they are easier to "eyeball" compare.

enter image description here

You could think of it as a constellation. The stars in a single cluster are close to each other in some sense. These are my eyeball considered constellations.

enter image description here

The value of the general approach is that it allows us to contrive vectors which otherwise have no geometric dimension, such as in the tf-idf method, where the vectors are word frequencies in documents. Two "and" words added does not equal a "the". Words are non-continuous and non-numeric. They are non-physical in a geometric sense, but we can contrive them geometrically, and then use geometric methods to handle them. Spherical k-means can be used to cluster based on words.

So the (2d random, continuous) data was this: $$ \begin{bmatrix} x1&y1&x2&y2&group\\ 0&-0.8&-0.2013&-0.7316&B\\ -0.8&0.1&-0.9524&0.3639&A\\ 0.2&0.3&0.2061&-0.1434&C\\ 0.8&0.1&0.4787&0.153&B\\ -0.7&0.2&-0.7276&0.3825&A\\ 0.9&0.9&0.748&0.6793&C\\ \end{bmatrix} $$

Some points:

  • They project to a unit sphere to account for differences in document length.

Let's work through an actual process, and see how (bad) my "eyeballing" was.

The procedure is:

  1. (implicit in the problem) connect vectors tails at origin
  2. project onto unit sphere (to account for differences in document length)
  3. use clustering to minimize "cosine dissimilarity"

$$ J = \sum_{i} d \left( x_{i},p_{c\left( i \right)} \right) $$ where
$$ d \left( x,p \right) = 1- cos \left(x,p\right) = \frac{\langle x,p \rangle}{\left \|x \right \|\left \|p \right \|} $$

(more edits coming soon)


  1. http://epub.wu.ac.at/4000/1/paper.pdf
  2. http://citeseerx.ist.psu.edu/viewdoc/download?doi=
  3. http://www.cs.gsu.edu/~wkim/index_files/papers/refinehd.pdf
  4. https://www.jstatsoft.org/article/view/v050i10
  5. http://www.mathworks.com/matlabcentral/fileexchange/32987-the-spherical-k-means-algorithm
  6. https://ocw.mit.edu/courses/sloan-school-of-management/15-097-prediction-machine-learning-and-statistics-spring-2012/projects/MIT15_097S12_proj1.pdf
  • $\begingroup$ In text files, I think that "diff" function that aligns characters, or indicates changes with weights, might be useful preprocessing of "close-together" texts in order to improve meaningful clustering $\endgroup$ Commented Jul 10, 2013 at 16:03
  • $\begingroup$ I get "Access forbidden" at the link in #1 (sci.utah.edu/~weiliu/research/clustering_fmri/…) $\endgroup$ Commented Oct 18, 2016 at 13:38
  • $\begingroup$ @David - me too. Always in motion is the ... internet? One moment please. $\endgroup$ Commented Oct 18, 2016 at 14:32
  • 5
    $\begingroup$ After some hesitation I chose to downvote this answer currently. It is not only too "grandma" explanation, it is imprecise. radial distance from the cluster-center to the element location should "have sameness" or "be similar" for all elements of that cluster sounds simply incorrect or blunt. In both uniform and minimal the angle between components "components" is not defined. I hope that you could improve the potentially great answer if you do it a bit more rigorous and extended. $\endgroup$
    – ttnphns
    Commented Aug 7, 2017 at 6:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.