The CAP theorem of Clustering: Why Every Algorithm Must Sacrifice Something
blog.codingconfessions.com
blog.codingconfessions.com
- scale-invariance: stretching data along some dimensions should not change clustering.
This is clearly not true: . . . (three well-spaced spots) may be reasonably seen as three clusters, whereas ||| (three nearby elongated bars) not.
- richness: all groupings must be reachable.
Also not quite true, both of the two cases: (1) all clusters are singleton points and (2) a single cluster that contains all points, mean the same: no useful cluster structure found. So it is enough if one of these groupings are reachable, and not both.
- consistency: increasing inter-cluster differences and decreasing intra-cluster differences should not change clustering.
Also not quite true: suppose we have 9 clusters:
. . .
. . .
. . .
now move the points so that the columns get further apart, at some point we will get:
| | |, where 3 clusters are more reasonable.As for your last two points, I believe I agree! It seems that in the counterexample you give for consistency, some notion of scale-invariance is implicitly assumed -- perhaps this connection plays some role in the theorem's proof (which I haven't read).
This reminds me a bit of Arrow's impossibility theorem for voting, which similarly has questionable premises.
In fact the paper doesn't assume that your dataset is contained in a vector space at all. All you have to give a clustering algorithm (as they define it) is a set and a metric function on it.
(the paper if you don't have a link: https://www.cs.cornell.edu/home/kleinber/nips15.pdf)
It's true that there is no intrinsic meaning to the scale, but you must specify at least a relative scale -- how you want to compare (or weigh) different units -- before you can meaningfully cluster the data. Clustering can only work on dimensionless data.
Or likewise: if you have physical data recorded in some units (say, meters), it would suck if the clusters changed if you had measured stuff in another unit instead
Now if the goal is a quick prototype or to get an intuitive sense of the structure of the data, then sure, it’s fine.
But of course you’re always sacrificing something desirable when you try to shoehorn data into a model that doesn’t fit.
(you can pass to equivalence classes to recover a true metric, and I didn't see anything obviously incompatible with that in the paper, but I admit I didn't look very deeply)
[1] https://academic.oup.com/jrsssb/article-abstract/63/2/411/70...