Pergunta

A matemática não é o meu ponto forte e estou perdido aqui.

Basicamente, tudo o que preciso é de uma fórmula simples que dará uma classificação ponderada em uma escala de 1 a 5. Se houver muito poucos votos, eles carregam menos influência e a prensa de classificação mais para a média (neste caso, quero que ele ser 3, não a média de todas as outras classificações).

Eu tentei algumas implementações bayesianas diferentes, mas elas não deram certo. Eu acredito que a representação gráfica que estou procurando pode ser mostrada como:

     ___
    /
___/

Felicidades

Foi útil?

Solução

Eu faria dessa maneira

1*num(1) + 2*num(2) + 3*num(3) + 4*num(4) + 5*num(5) + A*3
-----------------------------------------------------------
      num(1) + num(2) + num(3) + num(4) + num(5) + A

Onde num (i) é o número de votos para i.
A é um parâmetro. Não posso lhe dizer o valor exato disso. Depende do que você quer dizer com "poucos votos". Em um alto valor geral de um significa que você precisa de muitos votos para obter a média diferente de 3, o valor baixo de um meio que você precisa de poucos votos para obter valor diferente de 3.

Se você considerar 5 como "poucos votos", poderá tomar um = 5.

Nesta solução, apenas presumo que cada produto começa com votos por 3 em vez de sem votos.

Espero que ajude.

Outras dicas

(sum(ratings) / number(ratings)) * min(number(ratings), 10)/max(number(ratings), 10)

A primeira parte é a classificação média não normalizada. A segunda parte aumentará lentamente a classificação em direção a 5, à medida que o número de classificações individuais cresce para 10. A pergunta não é clara o suficiente para eu fornecer uma resposta melhor, mas acredito que a fórmula acima pode ser algo que você pode começar e adaptar Enquanto vais. Escusado será dizer que você deve verificar se existem classificações (não para se dividir por zero).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top