In my project I have a database of Japanese Sake(rice wine).Each Sake has following attributes which has direct link to the taste of the Sake:

  • classification (enumeration 1-5 integer)
  • alcohol percentage (1-100 integer)
  • polish percentage (1-100 integer)
  • acidity (double)

Users of the system can :

  1. Rate Sake (1-5 double value)
  2. Add Sakes to his/her favorite list.

Depend on these user data, I am thinking of developing a recommendation system for sake. I am looking at Collaborating Filtering methods,but guess it doesn't fit this scenario?

What kind of algorithm/techniques can be used for this kind of user recommendations?

[Edit] I am looking for a recommendation algorithm not only considering user rating,but also the taste attributes.


2 Answers 2


You can use collaborative filtering. From the user ratings you can define a ratings matrix with missing ratings that your algorithm will predict to recommend items to users.

The items data and user's whishlist can be included as auxiliary information (basically you cluster Sakes given their alcohol percentage, polish percentage and acidity and users given their whishlist using a K-mean algorithm). Have a look at this paper:


  • $\begingroup$ when using only CF the recommendation will not be based on sakes attributes instead it will only the the rating and find similar sakes right ? I Wanted to do recommendations based on users taste-profile $\endgroup$ Commented Sep 4, 2019 at 1:16

Nonnegative matrix factorization is clearly the first thing to try.

If factors both the Sakes and the users. So you'll have a "profile" for either.

Then you can both predict the rating and whether the user would add it to their favorites list.

It is a standard technique that can be used in a variety of domains, you can read more about it in any good textbook on machine learning or recommender systems.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.