На самом деле есть общепринятый лучший способ вычислить это:
http://www.evanmiller.org/how-not-to-sort-by-average-rating.html
Вам может понадобиться объединить «любит» и «комментарии» в один балл, присваивая свой собственный весовой коэффициент для каждого, прежде чем подключить его в формулу как значение «положительного голоса».
из приведенной выше ссылке:
Score = Нижняя граница Уилсона забить доверительный интервал для Бернулли параметра
Нам необходимо сбалансировать соотношение положительных оценок с неопределенности небольшого числа наблюдений. К счастью, математика была разработана в 1927 году Эдвином Б. Уилсоном. Мы хотим, чтобы задал вопрос: Учитывая, что у меня есть рейтинги, есть вероятность, что «настоящая» доля положительных оценок - это хотя бы что? Уилсон дает ответ . Учитывая только положительные и отрицательные рейтинги (т.е. не 5-звездочный шкале), нижняя граница доли положительных оценок определяется по формуле:
(Используйте минус, где он говорит плюс/минус, чтобы вычислить нижний оценка.) Здесь p̂
является наблюдается доли положительных оценок, zα/2
является (1-α/2)
квантиля стандартного нормального распределения, и n
является общего количества оценок. Же формула реализованы в Ruby:
require 'statistics2'
def ci_lower_bound(pos, n, confidence)
if n == 0
return 0
end
z = Statistics2.pnormaldist(1-(1-confidence)/2)
phat = 1.0*pos/n
(phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end
pos
этого количество положительных оценок, n
это общее число оценок, и доверие относится к статистическому уровню достоверности: подобрать 0,95 иметь 95% вероятность того, что ваша нижняя граница верна, 0.975 , чтобы иметь шанс на 97,5% и т. Д. Z-счет в этой функции никогда не изменений, поэтому, если у вас нет пакета статистики, или если производительность является проблемой вы всегда можете скорректировать значение здесь для z
. (Используйте 1,96 для уровня достоверности 0,95.)
Та же формула, как SQL запрос:
SELECT widget_id, ((positive + 1.9208)/(positive + negative) -
1.96 * SQRT((positive * negative)/(positive + negative) + 0.9604)/
(positive + negative))/(1 + 3.8416/(positive + negative))
AS ci_lower_bound FROM widgets WHERE positive + negative > 0
ORDER BY ci_lower_bound DESC;
Как Вы оцениваете положительные комментарии против негативных комментариев? Должны ли «подобные» быть такими же важными, как комментарии? –
мы не оцениваем положительные и отрицательные комментарии. Является ли «likeits» таким же важным, как комментарии, это то, что я выбрасываю там. Я довольно гибкий. (возможно, «самый активный» может быть лучшим термином, чем «самый популярный») – paullb