Pontuações do relatório de proporção de sinalização de usuários

As pontuações no relatório de Proporção de Sinalização de Usuários parecem um pouco confusas. :slightly_smiling_face:

Por exemplo:

  • Usuários com apenas sinalizações discordadas recebem pontuação acima daqueles sem sinalizações e acima daqueles que têm uma quantidade similar de sinalizações concordadas e discordadas.
  • Aqueles com, por exemplo, 100 discordadas e 100 concordadas recebem exatamente a mesma pontuação que alguém sem sinalizações: 0.

Qual é a intenção por trás dessa pontuação? (cc: @j.jaffeux)


A fórmula atual para cada pontuação é:

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

fonte: app/models/reports/user_flagging_ratio.rb

Aqui está um exemplo de pontuações para 0, 5, 10 e 15 sinalizações concordadas e discordadas:

   |   0   5   10   15  agreed
------------------------
0  |   0  25  100  225
   |
5  |   5   0    5   20
   |
10 |  10   2    0    2
   |
15 |  15   6    1    0
   |
disagreed

E é assim que fica se você colocar essa fórmula no Wolfram Alpha. :wink: (x é concordadas, e y é discordadas)

_edit:

As alterações mais recentes neste algoritmo são mencionadas aqui: User_flagging_ratio_count - #8 by j.jaffeux

3 curtidas

Meu caso de uso para este relatório específico é identificar os usuários que estão mais ou menos alinhados com a moderação. Sob essa perspectiva, 15/0 e 0/15 são igualmente importantes por razões diferentes, e uma pontuação de 255 ou -255 nesses casos, na minha opinião, tornaria a situação muito mais precisa. No entanto, não tenho certeza de como o algoritmo poderia fazer isso enquanto também pondera o volume de denúncias, o que é igualmente importante.

3 curtidas

Uau, isso significa que, mantendo o número de agreed constante, à medida que o número de disagreed aumenta, a pontuação fica cada vez melhor (quando disagreed > agreed).

Uma fórmula mais razoável e direta poderia ser algo como:

(agreed * agreed) - (disagreed * disagreed)

Ou seja, o agreed sempre aumentará a pontuação, e o disagreed sempre a diminuirá. Não sei se há necessidade de tornar a fórmula mais complexa do que isso, mas, de qualquer forma, essa é apenas minha opinião (caso seja aceitável que a pontuação seja negativa).

Acho que isso está ok. Há algum problema nisso, considerando que ambos os valores (um que deveria aumentar e outro que deveria diminuir a pontuação) são iguais?

1 curtida

Não escrevi a maior parte, eu apenas corrigi um bug que impedia a exibição de registros quando havia mais discordâncias do que concordâncias. Então não tenho certeza sobre a maior parte da lógica. @eviltrout

Fiz a multiplicação de concordância * concordância porque achei interessante destacar os usuários com os quais nunca discordamos. Mas isso é um caso de borda e a maioria dos usuários não estará nesse grupo, então provavelmente devemos otimizar o outro ramo.

Sinta-se à vontade para corrigir a fórmula para lidar melhor com qualquer caso específico que isso não considere.

1 curtida

Você deve verificar com @eviltrout

1 curtida

Definitivamente estou aberto a sugestões aqui. O que você sugeriria no lugar?

2 curtidas