1. A method of processing a data stream, comprising the steps of: maintaining a cluster structure, the cluster structure representing one or more clusters in the data stream; determining a set of projected dimensions for each of the one or more clusters using data points in the cluster structure; and determining assignments for incoming data points of the data stream to the one or more clusters using distances associated with each set of projected dimensions for each of the one or more clusters.