(That said, the venue ratings product we announced today is globally consistent: everyone will see the same rating for a given place. Our Explore product, however, does make personalized recommendations.)
Imagine if they could build up a ratings profile of people who rate the same place similarly, and then network that out... for instance:
Person 1 likes A and B, dislikes C, and hasn't been to D Person 2 dislikes A, likes B, and C, hasn't been to D Person 3 likes B, C, and D, and hasn't been to A Person 4 likes A and D, hasn't been to B or C
So, A has 2 likes, 1 dislike , B has 3 likes, C has 2 like, 1 dislike, and D has 1 like.
That's the start of a rating scale.
But what if an algorithm could identify that, say, Person 1 and Person 4 have similar tastes... so it could recommend D to 1, and B to 4. It can also see that 2 and 3 have similarity, and recommend D to 2.
Now, here's where it gets a bit tricky. The algorithmn can tease out that A and C are opposites - maybe one has great food, but with bad atmosphere/service, and the other is the opposite.
Thus with that deduction, it can recommend B, but not C to 4.
1. Sparsity of data. People surprisingly rate much less than you think they would. In fact, negative ratings are way less sparse than positive ratings (This to me is unintuitive because this is not how I would act but it is what it is).
2. Lack of features for similarity computation. Sometimes, the rating matrix is all you have to compute similarities or you have crappy metadata. You may turn out to be lucky and pull down a facebook open graph and have enough coverage to work with, it depends on your model.
3. The problem of high variance due to latent features (which you alluded to in the last part): Your model gets harder to track due to in sufficient information as to why a place is good or bad. Maybe, there is a correlation between seasonal variations and special cuisines, maybe they had a shitty chef that one time Person 4 came there.
I am not saying it is not do-able, I am just saying it is hard and sometimes ML fairy dust is not enough. :)
Absolutely. So one part of the solution is to stop putting restaurants on an "objective" 1-5 scale, and averaging every human together.
Instead, cluster restaurants so you can "people who liked the overrated, pretentious mess also liked X..."
Low weights: new users, numerous reviews (spamming), low rated reviews
High weights: older users, high rated reviews
A not-quite-as-good but easier statement to make: People who like place X also like places Y, Z... etc.
Let me guess, you live in Phoenix?
There is no such thing as an objectively good restaurant. In my town, there are famous pizza places which people absolutely love and then others who think it's an overrated, pretentious mess.
Nevermind attempting to control for different waiters, chefs, people having a bad day, etc. The problem isn't Yelp-specific.
The problem is entirely human.