This is not a problem, it's sampling bias. If you went to restaurants randomly, then your average rating would be lower. But if you purposely select restaurants that you tend to like, then the average must be higher. Same for books, music, and everything on Amazon.
So if Yelp had that kind of thing, this person rated McDonald's highly, they'll probably like Burger King. This person liked Subway but hated McDonalds, so they'll probably like Jimmy John's but not Wendy's. Even more specifically, this person liked Wendy's spicy chicken sandwich, they'll probably like Subway's sriracha buffalo chicken sub.
That's the kind of investment and innovation that drivers user interaction.
The 2 and 3 star complaints? Trivial crap.
"Sure the food is great, but other restaurants also have great food, 3 stars."
"There is this other restaurant on <other side of the country> that has food as good at this restaurant, and my meal was $30 cheaper!" (for a $200 meal)
"I had to call ahead to get reservations, they couldn't just seat me, 2 stars"
Crap like that ends up with Michelin Star rated restaurants having equal "star" ratings on Yelp as the local Subway.
They're probably measuring the wrong things. Maybe they should have something similar to the AirBnB / eBay ratings, which measure a lot of categories.