A good way to deal with recommendation systems that avoids these problems is via flows on graphs. Here’s one method of converting individual ratings to global rankings. Each alternative A, B, C, etc is a node of the graph. Now, when the user/voter gives 5 stars to A and 4 stars to B, this is interpreted simply as a preference of A over B. This preference contributes a single point to the total flow from B to A. At this point, we remove all cycles from this flow (there is a standard way to do that) and produce a gradient flow F. The potential function h of this flow, grad h = F, is the rankings.