Answers.Body: <p>Let me try to explain how recommender systems work in production, as intuitively as possible:</p>
  
  <p>Let's say we want to build a rec sys. for a restaurant discovery product, where users can rate restaurants, add reviews, photos, etc and also order food from there.</p>
  
  <p>So, the user's feed will have a list of restaurants in his/her area. But, as I gain money from restaurants in the $-per-click model, I need to maximize the number of times a user clicks on a restaurant.</p>
  
  <p>Also, it is obvious that a user is more likely to click on a restaurant if he tends to like it the most. [Restaurant features being Cost-for-two, cuisines, ratings, etc]</p>
  
  <p>So here, a user is a data point and so is the restaurant. So, let's say the distance between the user vectors and the restaurant is the "likeability" of the user for the restaurant.</p>
  
  <p>Let's say the vector is in the form [Japanese Spanish Mexican Chinese Indian Thai Turkish Lebanese]
  Let's say a restaurant's vector is: <code>A = [0 0 0 1 1 0 0 0]</code></p>
  
  <p>and the user's is: <code>B = [2 23 4 53 43 21 2 45]</code></p>
  
  <p>Each number being a particular cuisine. For restaurant, it is yes or no (1 or 0), a.k.a whether the cuisine is served or not.</p>
  
  <p>For user, it can be the number of clicks he/she did on restaurants with that cuisine. (I am over-simplifying here. But, this can be as complex as a weighted score for clicks+transactions+content_generated like review, ratings, etc)</p>
  
  <p>Now, the the cosine similarity measure between the 2 vectors in an 8-dimensional space (length of the vector) is the <em>likeability score</em>.</p>
  
  <p>Now, the system uses these scores while doing it's <a href="https://www.quora.com/How-does-the-ranking-of-answers-on-Quora-work" rel="nofollow noreferrer">feed ranking</a> for each user. </p>
  
  <p>This can be near-realtime to being updated hourly/daily, depending on the servers the company can afford.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-04-02T12:10:03.437Z
Answers.LastActivityDate: 2017-04-02T17:35:22.680Z
Answers.LastEditDate: 2017-04-02T17:35:22.680Z
Answers.UserDisplayName: Dawny33
Body: <p>How do recommendation systems (e.g. on Youtube) work? Apparently, every user gets different recommendations depending on his location, his past liked videos, etc. So it would seem like a training model is applied to every single user, but that can't be possible, so how are these recommendations user-specific without applying a unique training model to every single user?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2024-06-01T17:20:58.000Z
Comments.Text: I think, most recommender systems are based on Clustering algorithms. Another way, I think, SVM's One-vs-Rest algorithm can be used to specify best recommendations/features for single-user
Comments.UserDisplayName: JeeyCi
Tags: <machine-learning><applications><recommender-system>
Title: How do recommendation systems work?
UserDisplayName: Guest2000
ThreadText: # How do recommendation systems work?
  
  (Asked by: username_0 on 2017-03-28)
  
  How do recommendation systems (e.g. on Youtube) work? Apparently, every user gets different recommendations depending on his location, his past liked videos, etc. So it would seem like a training model is applied to every single user, but that can't be possible, so how are these recommendations user-specific without applying a unique training model to every single user?
  
  **Tags:** machine-learning, applications, recommender-system
  > **Comments:**
  > **username_1**: I think, most recommender systems are based on Clustering algorithms. Another way, I think, SVM's One-vs-Rest algorithm can be used to specify best recommendations/features for single-user  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2017-04-02. Score: 3 | Accepted answer
  
  Let me try to explain how recommender systems work in production, as intuitively as possible:
  
  Let's say we want to build a rec sys. for a restaurant discovery product, where users can rate restaurants, add reviews, photos, etc and also order food from there.
  
  So, the user's feed will have a list of restaurants in his/her area. But, as I gain money from restaurants in the $-per-click model, I need to maximize the number of times a user clicks on a restaurant.
  
  Also, it is obvious that a user is more likely to click on a restaurant if he tends to like it the most. [Restaurant features being Cost-for-two, cuisines, ratings, etc]
  
  So here, a user is a data point and so is the restaurant. So, let's say the distance between the user vectors and the restaurant is the "likeability" of the user for the restaurant.
  
  Let's say the vector is in the form [Japanese Spanish Mexican Chinese Indian Thai Turkish Lebanese]
  Let's say a restaurant's vector is: `A = [0 0 0 1 1 0 0 0]`
  
  and the user's is: `B = [2 23 4 53 43 21 2 45]`
  
  Each number being a particular cuisine. For restaurant, it is yes or no (1 or 0), a.k.a whether the cuisine is served or not.
  
  For user, it can be the number of clicks he/she did on restaurants with that cuisine. (I am over-simplifying here. But, this can be as complex as a weighted score for clicks+transactions+content\_generated like review, ratings, etc)
  
  Now, the the cosine similarity measure between the 2 vectors in an 8-dimensional space (length of the vector) is the *likeability score*.
  
  Now, the system uses these scores while doing it's [feed ranking](https://www.quora.com/How-does-the-ranking-of-answers-on-Quora-work) for each user.
  
  This can be near-realtime to being updated hourly/daily, depending on the servers the company can afford.
  
  
  ---
  
  