1. A computer-implemented method of assigning a new data point to a cluster, the method comprising: maintaining a respective ordered tuple of skeleton points for each of one or more clusters of data points, each skeleton point of each respective tuple being one of the data points of the corresponding cluster, wherein each cluster has more total data points than skeleton points, wherein each tuple has M or more skeleton points, where M is greater than three, and wherein each skeleton point at each position in each cluster has a respective associated random value; receiving the new data point; identifying two or more intersecting clusters for the new data point, each intersecting cluster being a cluster having at least a threshold number of skeleton points that are within a threshold distance of the new data point; generating, for the new data point, an ordered tuple of M random values; generating a new cluster to replace the two or more intersecting clusters, including: generating a new ordered tuple of M skeleton points for the new cluster, including selecting as the skeleton point in the j-th position in the new tuple, for 1≦j≦M, either (i) the new data point or (ii) a skeleton point in the j-th position of the tuple of one of the two or more intersecting clusters, including selecting the skeleton point associated with the closest random value to a limiting value among the random values associated with the j-th positions in the tuples if the closest random value is closer to the limiting value than the j-th random value of the new data point, or selecting the new data point otherwise; and associating as the random value of each skeleton point at each position in the new tuple either (i) the random value of the skeleton point selected for the position if a skeleton point was selected or (ii) the random value at the corresponding position in the tuple of random values of the new data point otherwise; replacing the two or more intersecting clusters with the new cluster, the new cluster having as data points all the data points of the two or more intersecting clusters; and assigning the new data point to the new cluster.