I have started to read about user-based and item-based collaborative filtering techniques. I understand how a rating of the target user for a particular item is predicted. How top-N recommendation list is created in user-based/item-based collaborative filtering??
Apache Mahout has several implementations about this problem. Most common approach is to predict all unrated items of a particular user and sorting items by their predicted values. Then you can select top N items to recommend. (see class AllUnknownItemsCandidateItemsStrategy in Mahout).
A version of this implementation with better performance and low accuracy is SamplingCandidateItemsStrategy. This one does not select all unrated items to predict, instead it selects some of them randomly with a given rate and then predict only these items. Finally you can select best predicted items as usual. Advantage of this method is to predict less items but since you eliminate some items randomly accuracy of this method obviously will be worse.
Moreover, there are other implementations which use item based similarity to select candidate items such as AllSimilarItemsCandidateItemsStrategy, PreferredItemsNeighborhoodCandidateItemsStrategy,
AllSimilarItemsCandidateItemsStrategy finds similar items of the customer's preferred items and predicts this set. It has a better accuracy since you select relevant items for customer but selecting candidate items phase requires effort.
These are some methods which are used generally.