Расчет нормализованной кармы - PullRequest
4 голосов
/ 05 января 2010

Как я могу рассчитать нормализованное значение кармы (значение между 0 и 1) из кармы пользователей в моей системе?

Нормализованное значение должно отражать значение кармы пользователя относительно всех других пользователей.

Я думаю, что мне, вероятно, придется как-то включать средние и стандартные отклонения всех карм, но я не могу придумать правильную формулу.

Любая помощь?

Ответы [ 2 ]

8 голосов
/ 05 января 2010
 min_karma = min(karmas)
 max_karma = max(karmas)
 normalized = (karma - min_karma) / (max_karma - min_karma)

У этого свойства есть то, что пользователи с кармой = min_karma получают нормализованную карму 0, а пользователи с кармой = max_karma получают 1. Другие линейно распределяются между ними. Вам придется отдельно обрабатывать особый случай, когда все пользователи имеют одинаковую карму.

Если вы хотите нелинейное распределение, вы можете использовать логарифмическую функцию:

 normalized = (log(karma) - log(min_karma)) / (log(max_karma) - log(min_karma))

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

2 голосов
/ 05 января 2010

вы хотите рассчитать процентиль, к которому принадлежит каждый пользователь. в MySQL вы можете сделать это так:

http://forums.mysql.com/read.php?20,105223,105278#msg-105278

rank / total

где ранг - количество пользователей с низкой кармой.

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