2012-04-17 456 views
35

Necesito calcular clasificaciones de 5 estrellas como la del sitio web de Amazon. He hecho suficiente búsqueda para encontrar cuál es el mejor algoritmo, pero no puedo obtener una respuesta adecuada. Por ejemplo si estas son las clasificacionesAlgoritmo utilizado para calcular clasificaciones de 5 estrellas

5 estrellas - 252 4 estrellas - 124 3 estrellas - 40 2 estrellas - 29 1 estrella - 33 totalmente 478 opiniones Amazon ha calculado que se trata de "4,1 de 5 estrellas". ¿Alguien puede decirme cómo se llega a esta cifra? No puedo obtener esto solo haciendo un promedio.

+0

https://embed.plnkr.co/5STGsgya9mq7HLrbJtrT/ Un programa detallado para mostrar el cálculo de estrellas promedio. – SanjuAus

Respuesta

87

Eso es un promedio ponderado, donde se pesa cada calificación con el número de votos que obtuvo:

(5*252 + 4*124 + 3*40 + 2*29 + 1*33)/(252+124+40+29+33) = 4.11 and change 
+9

+1 por mencionar que es un promedio ponderado – Danish

+0

wow que era simple. Necesito sintonizar mis habilidades matemáticas :) – user1241438

+3

¿En qué se diferencia esto de un promedio "regular"? – Jeff

7

Sí, se puede promediar a cabo:

(5 * 252 + 4 * 124 + 3 * 40 + 2 * 29 + 1 * 33)/478 = 4,11

3

Este sistema de clasificación se basa en una media ponderadaweighted average o . Es decir, usaron el peso en términos de estrellas para calcular un valor decimal que se redondea a 4.1. Por ejemplo:

Sum of (weight * number of reviews at that weight)/total number of reviews 
(5*252 + 4*124 + 3*40 + 2*29 + 1*33)/478 = 4.1 
1

medio ponderado, sumar el número de estrellas veces su peso y, a continuación, dividir a través de por el número total de comentarios.

8

Hay una excelente reseña sobre este tema en evanmiller.org. Analiza los pros y los contras de unos pocos enfoques y sugiere una forma matemáticamente confiable de ponderar y calcular los votos.

http://evanmiller.org/ranking-items-with-star-ratings.html

+4

Mejor aún, ahora ha escrito otro artículo sobre clasificaciones de estrellas: http://www.evanmiller.org/ranking-items-with-star-ratings.html – sj26

+1

Muy recomendable , porque el promedio ponderado puede ser terriblemente impreciso al comparar la clasificación de los artículos. – Ryall

2

Es posible que desee comprobar este algoritmo a cabo: Calculating Average Rating the Right Way using PHP and MySQL - no hay necesidad de ahorrar cada "estrella" (también conocido como grado de calificación) y su correspondiente número de votos y luego tener que recuperar los miles de filas de la base de datos cada vez que necesita calcular su promedio. (a menos que desee mostrar exactamente cuántas personas calificaron el elemento determinado con 1, 2, 3, 4 & 5 estrellas)

5

Si está comenzando a calcular la calificación general desde el principio, entonces esta fórmula lo ayudará.

Fórmula

((Evaluación total * Clasificación total) + nueva Evaluación)/Clasificación total

Ejemplo

suponga que tiene la tasa cero hasta ahora que la fórmula es como, la calificación general es "0" hasta ahora. primera calificación de "1" y calificación dado es "4"

((0 * 1) +4)/1 = 4

Si calificación global es "4.11" Clasificación total es "478" Y la nueva calificación dar por un usuario es "2"

entonces la fórmula es como

((4,11 * 478) + 2)/479 // 479 es la subasta de nueva calificación de 478

3

super amable respuesta por Blindy, aquí está el código PHP que se basa en que algunos pueden encontrar útiles los resultados serán 4.11 como en el ejemplo de OP:..

$ratings = array(
5 => 252, 
4 => 124, 
3 => 40, 
2 => 29, 
1 => 33 
); 

function calcAverageRating($ratings) { 

$totalWeight = 0; 
$totalReviews = 0; 

foreach ($ratings as $weight => $numberofReviews) { 
    $WeightMultipliedByNumber = $weight * $numberofReviews; 
    $totalWeight += $WeightMultipliedByNumber; 
    $totalReviews += $numberofReviews; 
} 

//divide the total weight by total number of reviews 
$averageRating = $totalWeight/$totalReviews; 

return $averageRating; 
} 
Cuestiones relacionadas