31 марта 2011

Здравствуйте, доктор, у меня проблемы с кармой

Habr

«90-60-90», или проезд по городу мимо гаишника


Мне известно достаточное количество сервисов, на которых присутствует понятие «кармы». И все эти сервисы считают рейтинг по какому-то невнятному алгоритму. Введение даже эмпирических нелинейных зависимостей этого показателя от всякого рода фаз луны и благосклонности других пользователей приводит к заметному количеству проблем. Вот о них (и возможных путях их решения) я и хотел бы сегодня порассуждать.

Гаец с радаром


Я сначала обрисую все проблемы, которые мне видны, а потом уже постараюсь сделать оптовые выводы.

Проблема 1. Весовые множители


Кармические показатели нельзя просто складывать и вычитать, как, например, это сделано на хабре. Это достаточно очевидно: сравним двух пользователей с одинаковой кармой (скажем, = 50) — Васю и Петю. При этом у Васи этот полтинник получился вычитанием одного минуса из пятидесяти одного плюса (соотношение понравилось­­­­­ ÷ не понравилось = 50 ÷ 1). А у аксакала Пети — пятьсот плюсов и 450 минусов (то есть апологеты и антагонисты поделились примерно поровну). Мне кажется весьма прозрачным, что карма Васи должна была бы быть больше Петиной, несмотря на молодость и недавнюю регистрацию.
Но если просто тупо нормировать карму на общее число голосов, получится не совсем то, что мы ожидаем: Вася станет в 50 раз круче Пети, за которого проголовало в 20 раз больше людей, а он умудрился остаться в плюсе. Кроме того, может быть злобные тупые тролли в количестве трехсот человек, которые минусуют вообще всех, у Пети давно побывали, а к Васе еще не заходили?

Проблема 2. Объективные и субъективные показатели


Да, показатели бывают и чисто объективные (под кат прошли 98% увидевших анонс), и чисто субъективные (Вася зашел к Пете в профиль и наплевал ему в карму), но все же подавляющее большинство — представляют из себя нечто среднее. Например, количество добавивших в закладки — статистически более-менее объективный показатель, а количество ­± за статью — даже на большой выборке проголосовавших ближе к субъективному. Кроме того, при расчете субъективных параметров имеет смысл учитывать склонности голосующего (если кто-то тратит весь отпущенный ресурс на минусование — его минусы должны обесцениваться, а плюсы — наоборот — дорожать, и наоборот).

Проблема 3. Очевидные и неочевидные показатели


Очевидным показателем я считаю, например, количество добавивших заметку в закладки. Это важный параметр, но его нельзя использовать напрямую: кто-то добавляет в закладки каждую вторую заметку, кто-то — одну в год. Поэтому имеет смысл пользоваться параметром, нормированным по склонности добавляющих к «закладыванию». Что-то вроде нормированной обратной частоты добавления закладок. Тогда Вася, который на сервисе неделю и «закладывает» первый раз, и Петя, который на сервисе год и это его пятидесятая закладка — внесут в карму одинаковый вклад, а Коля (месяц на сервисе, 30 закладок, «Синдром „Total Recall“») — в 7 раз меньший.
К неочевидным имеет смысл отнести, скажем, «атмосферу» в комментариях (общую сумму плюсов/минусов). Например, заметка, в комментариям к которой нет ни одного минуса (или число их пренебрежимо мало́) — наверное, скорее полезна, чем холиварна. Общее количество комментариев, при этом, как мне кажется, в качестве параметра выступать не может никаким образом.

Проблема 4. Карма vs. Рейтинг


Есть два ортогональных показателя: карма и рейтинг. Карма — это функция субъективных неочевидных показателей; рейтинг — наоборот — функция объективных очевидных. Мне представляется очевидным, что первое годно только для чемпионатов по измерению длины детозачаточного органа, тогда как для определения «полномочий» пользователя могут использоваться лишь объективные очевидные показатели.

Сущности


Я смог придумать следующие сущности, по которым можно оценивать:
  • запись
  • комментарий
  • действие (± и подобные)
  • общая активность

Все субъективные оценки должны быть нормированы как на самого пользователя (ценность оценки обратно пропорциональна балансу таких оценок у данного пользователя), так и на их общее количество.
Теперь попробуем все это свести воедино.

Записи и комментарии


Записи и комментарии могут быть оценены и∕или добавлены в закладки, кроме того на них может быть дана ссылка как извне, так и изнутри хабра. Вес комментария (и сопутствующих оценок) — меньше, чем у записи.

Действия и прочая активность


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

The Summing Up


Собственно, серебряной пули у меня нет. Коэффициенты нуждаются в эмпирической подгонке. Но я полагаю, что формулы расчета обоих упомянутых мною параметров должны выглядеть примерно так:

Карма = НОРМall ( ∑ НОРМthisв карму) )

Рейтинг = НОРМall ( ∑ НОРМthisза топики) ) + ⅓ × НОРМall ( ∑ НОРМthisза комментарии) ) + F ( количество внешних ссылок ) + ⅓ × F ( количество внутренних ссылок ) + ∑ НОРМthis (в закладках)

Весовые коэффициенты каждого члена этой формулы нужно подгонять вручную.

Конструктивная, а также деструктивная критика очень приветствуется. Уверен, что я что-то важное упустил и надеюсь дополнить методику с вашей помощью. К сожалению, у меня нет возможности пройтись по всем записям на хабре и посчитать эти числа вручную (а при наличии прямого доступа к базе — это пара запросов). Если бы удалось склонить администрацию — нет! не изменять существующую систему! — но посчитать еще эти два значения для всех пользователей, было бы круто. Ну, мне так кажется.
Теги:хабрахабркармарейтинг
Хабы: Habr
+10
757 5
Комментарии 28
Лучшие публикации за сутки