0
votes

I want to design a recommendation system that goes like this:

  • I have many restaurants with different tags

  • I have users making searches using those tags

  • I want to make recommendations based on the tags the users have search most

I am not looking for a complicated algorithm.

For example:

I have a user who has searched:

tag1 - n1 times

tag2 - n2 times

tag3 - n3 times

tag4 - n4 times

tag5 - n5 times

And there are 3 restaurants with the corresponding tags:

restaurant1: tag1, tag2, tag4, other_tag

restaurant2: tag5, other_tag

restaurant3: tag1, tag4, other_tag, other_tag

I was thinking about the following logic:

Let n = n1 + n2 + n3 + n4 + n5

Let t_i = the number of tags for the i_th restaurant

Then I'll compute:

R1 = sum(is_tag_i_in_restaurant1 * ni) / t_1, where i goes from 1 to 5

R2 = sum(is_tag_i_in_restaurant2 * ni) / t_2, where i goes from 1 to 5

R3 = sum(is_tag_i_in_restaurant3 * ni) / t_3, where i goes from 1 to 5

T1 = n / t_1

T2 = n / t_2

T3 = n / t_3

And now for each restaurant I will compare Ri with Ti. Let say, if Ri >= Ti/2 I will consider it a recommendation.

Is this a good way of doing this? Can you recommend me something more efficient?

1

1 Answers

0
votes

There's scholarly research regarding tags at Google Scholar and http://grouplens.org/publications, in particular Jesse Vig, Shilad Sen, Tien Nguyen, and John Riedl's work. A lot of thought has gone into predicting tag preference as well. Check out the Tagommender paper. In general, users and items (restaurants or movies or other things) all have values for tags on some scale, such as preference or appropriateness. Then you find nearest neighbors using a similarity algorithm like cosine similarity.