1. A method for making recommendations to a user, the method comprising: storing data relating to user usage patterns, wherein the data includes an application portion having information as to items which were used and a context portion having information as to the context in which the items were used, wherein the context is the situation in which the user or device operated by the user is operating when the items were used; clustering the data into clusters of data points; computing, for each of the clusters, a centroid, wherein the centroid includes an application portion and a context portion; selecting at least one cluster similar to a current user context by comparing a data point representing the current user context to the context portions of one or more of the centroids; and computing, for each of one or more items, an expectation value of user usage pattern for the corresponding item by selecting data points within the selected similar clusters that have application portions indicating the use of the corresponding item and determining the similarity of the current user context to the context portions of the selected data points, wherein the expectation values are used to recommend one or more of the items.