1

Possible Duplicate:
Where can I learn about recommendation systems?

I am always interested in how web sites recommend articles and users to me, based on what I "like", what I follow, what I vote up/vote down.

And it could also recommend items when I browse an item, "related articles", "people who like this article also like ..."

I need some articles and images to teach me how to implement such a system. Thanks very much.

Update:

I got a keyword "Slope one"

Community
  • 1
  • 1
guilin 桂林
  • 17,050
  • 29
  • 92
  • 146

2 Answers2

3

The Wikipedia article, Recommender system, is a good place to start. Also, this Recommendation engine blog post has some good information and illustrations.

The simplest method is one that uses the "people who like this article also like..." approach. If you keep track of each users' article ratings, and also keep track of who likes which articles, then you have the basis for a recommendation system.

For example, say that you're viewing Article A. The system can look up in its index every user who liked Article A. From that list, it can then create a list of all the articles liked by every user who liked Article A. In all likelihood, there will be significant overlap (that is, some articles were liked by multiple people). Your algorithm keeps track of how many likes it got for each article, and then shows the top N that got the most votes.

That simple system is surprisingly effective in many cases, but not perfect. You'll find that exceptionally popular articles dominate, even if they're not related to the article you're viewing. There are ways to prevent the hugely popular articles from dominating. One way is to use a floating point number for an article's score. Rather than adding 1 to the score for each "like", you add 1 / sqrt(users_number_of_likes). So that a user who likes, say, 100 articles, would only give 1/10 point to any individual article, but a user who likes only four articles would give 1/2 a point to each. Although this doesn't sound "fair," it does tend to attenuate the effect of hugely popular, but unrelated, items.

As I said, that's the simplest approach. If you're looking for "related" articles, not based on user input, then you have to either have keywords assigned to each article, or you need some way to examine an article and extract relevant keywords.

There are many ways to do what you're looking to do. Which one you choose depends on the nature of your data, whether you're doing collaborative filtering, how much time you want to spend developing it, and how good you want the results to be.

Jim Mischel
  • 131,090
  • 20
  • 188
  • 351
3

Netflix spent 1M dollars in price for movie recommendation system (algorhitm)

http://www.netflixprize.com/

You can read here about algorithm

Luka Rahne
  • 10,336
  • 3
  • 34
  • 56