2012-04-17 2 views
35

Мне нужно рассчитать 5-звездочные рейтинги, как на сайте Amazon. Я сделал достаточно поиска, чтобы найти лучший алгоритм, но я не могу получить правильный ответ. Например, если эти рейтингиалгоритм, используемый для расчета оценок 5 звезд

5 звезд - 252 4 звезды - 124 3 звезды - 40 2 звезды - 29 1 звезда - 33 Totally 478 отзывов Amazon подсчитал, что это будет «4,1 из 5 звезд". Может ли кто-нибудь сказать мне, как эта цифра прибывает? Я не могу получить это, просто усредняя.

+0

https://embed.plnkr.co/5STGsgya9mq7HLrbJtrT/ Расширенная программа для отображения среднего звездного расчета. – SanjuAus

ответ

87

Это взвешенное среднее, где вы взвешивать каждый рейтинг с количеством голосов он получил:

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

+1 для упоминания о том, что его средневзвешенный – Danish

+0

вау, что было просто. Мне нужно настроить свои навыки математики :) – user1241438

+3

Как это отличается от «обычного» среднего? – Jeff

7

Да, вы можете усреднить их:

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

3

Эта рейтинговая система основана на weighted average или средневзвешенное. То есть они использовали вес в терминах звезд для вычисления десятичного значения, которое округляется до 4.1. Например:

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

СРЕДНЕВЗВЕШЕННОЕ, просуммировать количество звезд раз больше своего веса, а затем разделить его через на общее количество обзоров.

8

На этой странице есть действительно хорошая запись на evanmiller.org. Он обсуждает и обсуждает плюсы и минусы нескольких подходов и предлагает математически надежный способ взвешивания и подсчета голосов.

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

+4

Еще лучше, теперь он написал еще одну статью о звездных рейтингах: http://www.evanmiller.org/ranking-items-with-star-ratings.html – sj26

+1

Очень рекомендую , потому что средневзвешенное значение может быть ужасно неточным при сравнении сортировки предметов. – Ryall

2

Вы можете проверить этот алгоритм из: Calculating Average Rating the Right Way using PHP and MySQL - нет никакой необходимости сохранения каждых «звезд» (он же рейтинг класса) и соответствующее количество голосов, а затем того, чтобы получить тысячи строк из базы данных каждый раз, когда вам нужно рассчитать их среднее значение. (если вы не хотите точно отображать, сколько людей оценили данный товар с помощью 1, 2, 3, 4 & 5 звезд)

5

Если вы начинаете вычислять общий рейтинг от начала, эта формула вам поможет.

Формула

((Общая оценка * Общий рейтинг) + новый рейтинг)/Общий рейтинг

Пример

Предположим, у вас есть нулевой рейтинг до сих пор, чем формула, как, общий рейтинг «0» до сих пор. Первый рейтинг "1" и данного рейтинга "4"

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

Если общая оценка «4.11" Общий рейтинг "478" И новый рейтинг даяние одним пользователем является "2"

то формула, как

((4,11 * 478) + 2)/479 // 479 это приращение нового рейтинга от 478

3

Супер полезного ответа по Blindy, вот PHP код, который основан на нем некоторые могут оказаться полезными результаты будут 4,11 как в примере 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; 
}