Как реализовать Байесовский средний алгоритм для двоичной системы оценки

У меня есть система, где люди могут проголосовать или вниз проголосовать за объект, и я хочу отобразить результаты этого как пятизвездочная оценка.

Я пробовал, используют Байесовский алгоритм Оценки, объясненный здесь и здесь без успеха.

Например: у Меня есть три объекта (A, B и C) в моей базе данных:

A = 500 и 500 вниз голоса B = 0 и 1000 вниз голоса C = 0 и 1000 вниз голоса

Как я вычисляю Байесовскую среднюю оценку для каждого объекта так, чтобы это имело счет в масштабе 1 - 5?

9
задан Robert MacLean 26 June 2015 в 16:50
поделиться

2 ответа

Простая алгебра:

AvgVotes = Сумма всех голосов / Сумма всех элементов

AvgRating = Сумма голосов за все элементы * 5 / Сумма всех голосов

CurVotes = Количество голосов за текущий элемент

CurRating = Сумма голосов за текущий элемент * 5 / Количество голосов за текущий элемент

TotalVotes = Сумма всех голосов + Сумма голосов за текущий элемент

((AvgVotes * AvgRating) + (CurVotes * CurRating)) * 5 / TotalVotes

Итак, вставляем ваши числа, оценивающие вес для A ...

AvgRating = 1000

AvgRating = 0 (Помните, не включайте числа для элемент, который вы оцениваете в этом расчете)

CurVotes = 1000

CurRating = 500 * 5/1000 = 2,5

Всего голосов = 2000 + 1000 = 3000

((1000 * 0) + (1000 * 2.5)) * 5/3000 = 4.166

Я забыл добавить, НЕ включайте в какие-либо вычисления или суммы выше элементы, за которые нет голосов, иначе это сбросит вес.

РЕДАКТИРОВАТЬ - Упрощенное решение:

Я должен отметить, что существует упрощенное решение проблемы, которое может быть выполнено. Я демонстрировал только печатную форму для понимания. Сжатый алгоритм выглядит так:

Определения:

SET = Все, что не связано с текущей целью оценки, где количество голосов больше нуля.

TARGET = Элемент, который вы в настоящее время пытаетесь оценить

25 * (((Сумма голосов за SET) / (сумма голосов за SET)) + (сумма голосов за TARGET)) / (Сумма ЦЕЛЕВЫЕ голоса + сумма голосов SET)

Снова подключаемся к вашим числам, оценивающим «А» для разъяснения и доказательства:

(25 * ((0/2) +500)) / (1000 + 2000) = 4,166

3
ответ дан 4 December 2019 в 21:07
поделиться

В этом сообщении блога Как не сортировать по среднему рейтингу точно описывается ваша ситуация и способы ее решения с использованием доверительного интервала оценки Вильсона . Reddit успешно использовал это .

7
ответ дан 4 December 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: