1. A method for making recommendations to a user, the method comprising: storing data relating to usage patterns of the user, wherein the data includes information as to items which were used and the context in which they were used, wherein context includes a situation in which the user and device were operating when the items were used; randomly initializing a set number of cluster centroids; performing an initial clustering algorithm to cluster the data into input clusters of data points based upon the cluster centroids; performing a merge-split clustering algorithm on the input clusters, wherein the merge-split clustering algorithm comprises: determining if there are any input clusters that are similar to each other; merging the similar clusters if there are any input clusters similar to each other: dividing any non-merged input clusters into split clusters if the split clusters would not be similar to each other; and repeating the determining, merging, and dividing using the merged, divided, and remaining unmerged and undivided clusters as input clusters.