1. A computer-implemented method of assigning a new data point to a cluster, the method comprising: maintaining a respective collection of skeleton data points for each of one or more clusters, wherein each skeleton data point has a respective associated random value; receiving the new data point; determining one or more intersecting clusters for the new data point, each intersecting cluster being a cluster having at least a first number of skeleton data points being within a threshold distance of the new data point; generating, for the new data point, a number of random values, the number being equal to a number of skeleton data points in each collection of skeleton data points for each of the one or more intersecting clusters; selecting updated skeleton data points for an updated cluster, including selecting, for each updated skeleton data point of an updated collection of skeleton data points for the updated cluster, an existing skeleton data point in an intersecting cluster or the new data point according to which data point has a smallest associated random value; replacing the one or more intersecting clusters with the updated cluster, the updated cluster being represented by the updated collection of skeleton data points; and assigning the new data point to the updated cluster.