I  have a site in which users rate things in a 1-5 star system. Once an item reaches the top of the charts, some users tend to start rating it 1 star even though it got a majority of 4-5 stars to get where it's at. It's not rampant, I would say 10-20% of the new votes are 1's. Clearly they are trying to manipulate the rating system, and I want to prevent that.The current way I am doing that is by having a reasonable window of what I consider to be a legitimate vote.For items with less than 10 votes;I currently do nothing and take the mean as it's rating. Once an item starts getting more than 10 votes I tie them to a window of their mean. This window is defined asWindow = 4.5 - Log(TotalVotes, 10);So a reasonable vote range is then (Mean - Window) thru (Mean + Window)Once the reasonable vote range is found, the Rating is just the mean of all the reasonable votes (those who fall in the reasonable range).This means an item with a real mean of 4.2 with 100 votes would have a window of 4.5-Log(100,10) = 2.5, so if that item gets a 1 star vote, it will be ignored in the rating. However, the 1 star will still effect the underlying mean.This has worked good in general but the issue is when an item's Mean - Window is just at the brink of 1.0, as soon as it dips below 1.0 every 1 star vote now is included in the rating and the rating drops significantly even the difference before and after may have just been one more 1 star rating.I need a better system/way of accomplishing to filter out these 1 star ratings, and not just them but handle the situation in where someone may get their friends to upvote an item 10 votes and all 5 stars, where its true rating may be more 3 star.Looking for any recommendations of how to handle user-driven rating systems and normalizing outlier votes.
Reducing the effect of down voters with rating system
statistics;normalization