Как ранжировать истории, основанные на «противоречии»? - PullRequest
4 голосов
/ 16 ноября 2008

Я бы хотел оценить свои истории на основе коэффициента «противоречия». Например, на reddit.com в настоящее время есть «спорный» раздел: http://www.reddit.com/controversial/

Когда в истории много голосов «за» и «против», она противоречива, хотя общий балл равен 0 (например). Как мне рассчитать этот коэффициент, чтобы, когда много людей голосует «за» и «против», я мог как-то это зафиксировать.

Спасибо !!!

Ник

Ответы [ 4 ]

7 голосов
/ 16 ноября 2008

Я бы рекомендовал использовать стандартное отклонение голосов.

Спорный голос, который на 100% поляризован, будет иметь равное число голосов -1 и +1, поэтому среднее значение будет равно 0, а значение stddev будет около 1,0

И наоборот, полностью согласованный набор голосов (без голосов в противоположном направлении) будет иметь среднее значение 1 или -1 и стандартное отклонение 0,0.

Голоса, которые не являются либо полностью непротиворечивыми, либо полностью поляризованными, приведут к значению стандартного отклонения между 0 и ~ 1,0, где это значение будет указывать на степень противоречия при голосовании.

0 голосов
/ 16 ноября 2008
// figure out if up or down is winning - doesn't matter which
if (up_votes > down_votes)
{
    win_votes = up_votes;
    lose_votes = down_votes;
}
else
{
    win_votes = down_votes;
    lose_votes = up_votes;
}
// losewin_ratio is always <= 1, near 0 if win_votes >> lose_votes
losewin_ratio = lose_votes / win_votes; 
total_votes = up_votes + down_votes;
controversy_score = total_votes * losewin_ratio; // large means controversial

Эта формула даст высокие оценки для историй, которые имеют много голосов и почти 50/50 голосов, и низкие оценки для историй, которые имеют либо несколько голосов, либо много голосов за один выбор.

0 голосов
/ 16 ноября 2008

А как насчет простого получения меньшего из двух значений (вверх или вниз) на определенный момент времени? Если он много поднимается и немного падает, или наоборот, это не вызывает сомнений.

Если, например, элементы имеют 10 взлетов и 5 спадов, «уровень controversiality» является 5, так как существует 5 человека согласные о душе или нет. С другой стороны, если у него есть либо 10 или 10 взлетов падений, «уровень controversiality» равен 0, так как никто не соглашаясь.

Таким образом, в итоге меньший из обоих пунктов в этом случае определяет «жаркость» или «противоречивость». Имеет ли это смысл?

0 голосов
/ 16 ноября 2008

Самый простой способ - это подсчитать количество пар повышающих / понижающих голосов для данного комментария в пределах временного интервала (например, 1 неделя, 48 часов и т. Д.), И сначала нужно получить комментарии с наибольшим количеством проверок. Все более сложное требует проб и ошибок или экспериментов с наилучшим алгоритмом - как всегда, это зависит от содержимого сайта и от того, как вы хотите, чтобы он был взвешен.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...