Рейтинги отчета о соотношении флагов пользователей

Показатели в отчёте «Соотношение флагов пользователя» кажутся немного запутанными. :slightly_smiling_face:

Например:

  • Пользователи, у которых есть только оспоренные флаги, получают более высокий балл, чем те, у кого нет флагов, и выше тех, у кого примерно одинаковое количество согласованных и оспоренных.
  • Те, у кого, например, 100 оспоренных и 100 согласованных флагов, получают тот же балл (0), что и человек без флагов.

Какова цель этого показателя? (cc: @j.jaffeux)


Текущая формула для расчёта каждого балла:

if disagreed == 0
  agreed * agreed
else
  ((1 - (agreed / disagreed)) * (disagreed - agreed)).to_i

источник: app/models/reports/user_flagging_ratio.rb

Вот пример баллов для 0, 5, 10 и 15 согласованных и оспоренных флагов:

   |   0   5   10   15  согласовано
------------------------
0  |   0  25  100  225
   |
5  |   5   0    5   20
   |
10 |  10   2    0    2
   |
15 |  15   6    1    0
   |
оспорено

А вот как это выглядит, если подставить эту формулу в Wolfram Alpha. :wink: (x — согласованные, y — оспоренные)

правка:

Последние изменения в этом алгоритме описаны здесь: User_flagging_ratio_count - #8 by j.jaffeux

3 лайка

Мой сценарий использования этого конкретного отчёта — выявить пользователей, которые наиболее или наименее соответствуют требованиям модерации. С этой точки зрения, соотношения 15/0 и 0/15 одинаково важны, но по разным причинам, и в таких случаях балл 255 / -255, на мой взгляд, позволил бы значительно точнее отразить ситуацию. Однако я не уверен, как алгоритм может реализовать это, одновременно учитывая объём флагов, что также не менее важно.

3 лайка

Вау, это значит, что при постоянном значении agreed, по мере роста значения disagreed, оценка будет становиться всё лучше и лучше (когда disagreed > agreed).

Более разумная и простая формула может выглядеть так:

(agreed * agreed) - (disagreed * disagreed)

То есть agreed всегда будет повышать оценку, а disagreed — всегда понижать. Не знаю, есть ли необходимость усложнять формулу дальше, но это моё мнение (если допустимо, что оценка может быть отрицательной).

Думаю, это нормально. Есть ли здесь какая-то проблема, учитывая, что оба значения (одно должно увеличивать, а другое — уменьшать оценку) одинаковы?

1 лайк

Я написал не большую часть кода — я в основном исправил ошибку, из-за которой не отображались записи, когда количество несогласий превышало количество согласий. Поэтому я не уверен в большинстве логических решений. @eviltrout

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

Не стесняйтесь исправить формулу, чтобы она лучше обрабатывала любые специфические случаи, которые она сейчас не учитывает.

1 лайк

Вам стоит уточнить у @eviltrout

1 лайк

Я определенно открыт к предложениям. Что бы вы предложили вместо этого?

2 лайка