I also have a data set based on users' seen-not seen items and I tried a
demo to recommend items that a user hasn't seen yet. My demo source code is
based on Mahout's taste demo; I just BooleanTanimoto as similarity measure
between users.
DataModel model=new FileDataModel(new File("ratings.txt"));
UserSimilarity similarity =new
BooleanTanimotoCoefficientSimilarity(model);
UserNeighborhood neighborhood=new
NearestNUserNeighborhood(20,similarity,model);
Recommender recommender=new
GenericUserBasedRecommender(model,neighborhood,similarity);
List<RecommendedItem> recList=recommender.recommend(userID,5);
However, there is a problem here. The lists of recommended items are usually
same for different users which are not correlated, also they are irrelevant
recommendations. Then I divided the data set into three parts (populars,
moderates, rares) and I've seen that recommendation engine produces very
similar results for all populars, moderates, and rares. Does
NearestNUserNeighborhood algorithm causes that problem? Could you share your
ideas?