Eu tenho um site no qual os usuários classificam coisas em um sistema de 1 a 5 estrelas. Quando um item chega ao topo dos gráficos, alguns usuários tendem a começar a classificá-lo com 1 estrela, mesmo que tenha uma maioria de 4-5 estrelas para chegar onde está. Não é galopante, eu diria que 10 a 20% dos novos votos são 1's. Claramente eles estão tentando manipular o sistema de classificação, e eu quero evitar isso.
A maneira atual de fazer isso é ter uma "janela razoável" do que considero um voto legítimo.
Para itens com menos de 10 votos; Atualmente, não faço nada e tomo a média como sua classificação.
Quando um item começa a receber mais de 10 votos, amarro-os a uma janela da média deles. Esta janela é definida como
Window = 4.5 - Log(TotalVotes, 10);
Portanto, um intervalo de votos razoável é então (Mean - Window) thru (Mean + Window)
Uma vez que o intervalo razoável de votos é encontrado, o "Rating" é apenas a média de todos os votos razoáveis (aqueles que se enquadram no intervalo razoável).
Isso significa que um item com uma média real de 4,2 com 100 votos teria uma janela 4.5-Log(100,10) = 2.5
; portanto, se esse item receber um voto de 1 estrela, ele será ignorado na classificação. No entanto, a estrela ainda afetará a média subjacente.
Isso funcionou bem em geral, mas a questão é quando um item Mean - Window
está à beira de 1,0, assim que cai abaixo de 1,0 a cada 1 estrela agora é incluída na classificação e a classificação cai significativamente até mesmo a diferença antes e depois de maio foram apenas mais uma classificação de 1 estrela.
Preciso de um sistema / forma de realizar melhor para filtrar essas classificações de 1 estrela, e não apenas elas, mas lidar com a situação em que alguém pode fazer com que seus amigos votem com um item em 10 votos e em todas as 5 estrelas, onde sua verdadeira classificação pode ser mais 3 estrelas.
Procurando recomendações de como lidar com sistemas de classificação orientados pelo usuário e normalizar votos fora de série.