신규 사용자 선정 알고리즘 관련 질문

안녕하세요,
저는 디스코르스 포럼의 신규 사용자였습니다. 첫 달이 끝날 때쯤 제게는 930개 이상의 '좋아요’가 붙어 있었습니다. 그런데 '이 달의 신규 사용자’로 선정된 사람은 두 명이었으며, 한 명은 약 40개의 좋아요, 다른 한 명은 60개의 좋아요를 가지고 있었습니다. 이 사이트의 이전 게시물에서 제공된 코드를 확인해 보았지만, 이런 상황이 벌어질 리가 없다고 생각했습니다. 제 최고 좋아요 기록만 가지고 계산해 보았을 때, 각 신뢰 수준별로 좋아요에 할당된 점수를 이용해 계산한 결과, 제 최고 좋아요만으로도 약 360점이라는 수치가 나왔습니다. 이어 60개의 좋아요를 받은 사용자의 점수를 계산해 보았는데, 그 숫자를 3으로 곱해 보았죠. 만약 그 사용자가 60번 모두 관리자로부터 좋아요를 받았다 해도, 여전히 360점에 근접하지 못했을 것입니다. 도대체 무슨 일이 있었던 걸까요? 우리는 11월 중순에 며칠 차이로 가입했습니다… 제가 놓치고 있는 것이 무엇일까요? 비꼬는 의도는 아니지만, 꽤 실망스럽고 혼란스러웠습니다. 지금까지 "이 달의 신규 사용자는 사기다"라는 답변 외에는 아무도 답을 주지 못했습니다. 제발 어떤 정보든 알려주시면 감사하겠습니다. 단, 이미 코드를 확인했다는 점을 염두에 두시기 바랍니다. 감사합니다!

코드를 살펴봤습니다. 좋아요는 계급에 따라 가중치가 매겨지는 것은 물론, 내 게시물에 좋아요를 누른 서로 다른 계정의 수에 따라 총점이 나뉘어집니다. 아마도 광범위한 인기도를 측정하는 지표인 것 같습니다.

수정: 아, 실수했네요. 계정 수가 아니라 게시물 수로 나누는 것 같으니 아래 댓글을 참고해 주세요.

그 부분도 고려는 했어요.
정말 이상한 것 같아요.

서로 다른 계정이라는 거군요. 흠. 그럴 수 있겠네요… 그 데이터는 확인할 수 없지만, 그래도 여전히 이상하게 느껴져요.

그래도 도움 주셔서 감사합니다!

Dataexplorer를 살펴보셨나요? 코어에 내장되어 있으며, 해당 쿼리에 대한 스크립트가 이미 존재할 수 있습니다.

이번 달의 신규 사용자를 수정하는 방법에 대해서는 어떤 옵션이 있는지 잘 모르겠습니다. 하지만 사이트 설정에서 TL별 가중치를 수정할 수 있다고 생각합니다.

아니요, 아직 안 해 봤어요. 한번 시도해 볼지도 모르겠네요.
감사합니다!

사용자들이 공유한 커스텀 항목을 찾는 데 도움이 될 수 있습니다.

포럼 관리자만 Date Explorer를 사용할 수 있으므로, 일반 사용자로 데이터를 가져올 수 없습니다.

총 좋아요 수에 대해 많은 설명을 하셨지만, 게시글 수에 대해서는 언급하지 않으셨습니다. 좋아요 수에서 계산된 점수는 해당 사용자의 신뢰 수준으로 가중치가 적용되며, 이 점수는 사용자가 작성한 총 게시글 수로 나뉩니다:

따라서 더 많은 좋아요를 받았을 수 있지만, 배지를 받은 다른 사용자들보다 더 자주 게시글을 작성했을 수도 있습니다.

그렇게 하면 많은 부분이 설명이 되네요. 감사합니다!
(하지만 그건 좀 말이 안 되는 것 같습니다. 제 생각에 더 많은 게시물을 올리는 것은 커뮤니티에 기여하는 것으로 여겨져야 하며, 점수에 불이익을 주어서는 안 됩니다.)

커뮤니티에 가장 큰 기여를 하는 것은 무엇일까요? 매력 부족으로 인해 좋아요가 적은 게시글을 많이 올리는 것, 아니면 사용자의 관심을 끌고 많은 좋아요를 받는 게시글을 소수로 올리는 것일까요?

(커뮤니티마다 좋아요 사용 방식이 다르다는 점, 일부 커뮤니티에서는 사용자가 게시글에 좋아요를 누르는 가치를 느끼지 못하거나 그것이 그들의 습관이 아니라는 점 등을 인지하고 있습니다…)

동의합니다. 대부분은 말씀하시는 부분이 이해가 되지만, 제 포럼에서는 상황이 좀 다르다고 생각합니다.
대부분의 게시글은 1~2개의 좋아요를 받는 경우가 많고, ‘이 달의 신규 사용자’ 선정 기준에는 해결책 제공 여부가 반영되지 않습니다. 이 부분은 좋다고 생각하지만(플러그인인지는 확신할 수 없습니다), 아니면 배지를 자동으로 부여하지 않고 관리자가 직접 선택하게 하면 어떨까요? 그러면 각 포럼에 더 적합한 배지 제도가 될 것 같습니다.
그렇다면, 2주 동안 약 1,100개의 좋아요, 약 700개의 게시글, 약 60개의 해결책을 제공한 사용자가 포럼에서 '도움이 되는 사용자’로 평가되는 것이 나은지, 아니면 같은 기간 동안 약 60개의 좋아요와 약 40개의 게시글을 올린 사용자가 '이 달의 신규 사용자’에 더 적합한지 어떻게 생각하시나요?
그리고 명절 잘 보내세요!

매우 좋은 지적입니다. 현재 알고리즘이 너무 단순할 수 있다는 데 동의합니다. 첫 단계로 게시물 요소를 비선형으로 만드는 것이 좋다고 생각합니다.

SUM(...) / SQRT(5 + COUNT(DISTINCT p.id))::float AS score

또는 어쩌면

LN(1 + SUM(CASE ... END)) / (5 + COUNT(DISTINCT p.id))::float AS score

더 인기 있는 게시물을 우대하는 한 가지 방법은 좋아요 수의 제곱 합을 구한 후, 이를 게시물 수로 나누는 것입니다.

제가 오해했을 수도 있지만, 이 관점이 가치를 가질 수 있다고 생각합니다. 즉, 좋아요를 누른 고유 계정 수를 고려하는 것입니다. 예를 들어, 특정 그룹이나 투표 조작 행위를 방지하는 데 도움이 될 수 있습니다.

참고로, 제 포럼에서는 지난 12개월간 ‘이달의 신규 사용자’ 배지 후보 24명 중 13명만 수상자로 선정되었습니다.

네, 동의합니다. 좋은 아이디어일 수 있겠네요.

이것을 영어로 설명해 주실 수 있을까요? 이번 달의 신규 사용자 코드를 거의 이해하지 못했습니다. 하하.

신뢰 수준이 높은 분이 제목을 "이번 달의 신규 사용자 알고리즘 질문"이나 유사한 내용으로 수정해 주실 수 있을까요? 이는 명백히 버그가 아닙니다. 그저 조금 특이할 뿐입니다.
@Moin 님, 감사합니다!

"문제"는 점수(Score)가 기본적으로 다음과 같다는 것입니다.

\text{Score} = \frac{\text{좋아요 수}}{\text{게시물 수}}

이미 지적하신 대로, 이는 바람직한 상황이 아닐 가능성이 높습니다. 평균 좋아요 수가 동일하다면, 많은 수의 게시물이 적은 수의 게시물보다 높은 평가를 받아야 하기 때문입니다.

따라서 이 문제를 "수정"하려면 함수를 변경해야 합니다: 게시물의 수가 커질 때 분모가 덜 증가해야 합니다. 이를 수정하기 위해 분모에 함수를 적용할 수 있습니다. 증가하지만 선형보다 느리게 증가하는 특성 때문에 통상적인 후보로는 SQRT(제곱근)와 LN(자연로그)가 있습니다:

분모를 게시물의 수가 커질 때 더 느리게 커지는 값으로 변경하면, 점수는 더 높아집니다(결국 더 작은 값으로 나누면 더 큰 결과가 나오기 때문입니다). 공식에 분모에 SQRT 또는 LN을 적용하도록 변경하면 원하는 결과를 얻을 수 있습니다(“평균 좋아요 수가 동일하다면, 많은 수의 게시물이 적은 수의 게시물보다 높은 평가를 받아야 한다.”).

두 번째 공식은 반대되는 바람직하지 않은 효과를 방지하려는 시도를 합니다: 소수의 좋아요를 많이 받은 게시물이 점수를 지배하도록 해서는 안 되기 때문입니다.

관리자라면 사이트 설정으로 가서 가중치 요인을 조정하여 이를 평탄화할 수 있습니다.

예를 들어, 신뢰도(Trust level)별 좋아요 가중치 변경, 심지어 스태프에 대한 가중치 변경도 가능합니다. 가중치를 조정하여 신뢰도(TL)나 스태프 여부와 관계없이 좋아요가 동일한 비중으로 계산되도록 할 수 있습니다.

저는 관리자가 아니지만, 그래도 감사합니다.
매일 새로운 것을 배우는 것 같습니다 :grinning:

그렇게 설명해 주셔서 감사합니다. 아주 깔끔한 해결책이네요. 제 포럼에도 이런 기능이 있으면 좋겠습니다…

대부분의 경우 이는 사실이 아닙니다. 이러한 논리에 따르면, 게시글이 실제로 유용한지를 알려주는 신호가 바로 좋아요 수입니다. 많은 글을 올리지만 좋아요/게시글 비율을 높게 유지하지 못한다면, 이는 사용자가 수다를 떨고 있거나 검색으로 쉽게 찾을 수 있는 질문을 하고 있다는 것을 의미합니다.

예를 들어, 사용자의 질문은 이미 다음에서 논의되고 있습니다.

알겠습니다. 이런 질문을 게시글로 올려서 죄송합니다. 다만, 저는 동의하지 않습니다. 다른 포럼들은 좋아요 기능을 다르게 활용하며, @RGJ 님이 게시한 해결책은 제 포럼에서 유용할 것 같다고 생각합니다. 모든 포럼이 모든 게시물에 좋아요를 누르도록 설계되어 있는 것은 아닙니다. 우리는 종종 우리를 격려해주거나 우리가 말한 것에 동의할 때에만 좋아요를 누르는 경향이 있기 때문입니다. 대부분의 사용자들에게는 단순히 '맞다’는 것만으로는 좋아요를 누를 충분한 이유가 되지 못합니다. 링크를 확인해 보겠습니다만, 전에 보이지는 않았습니다. 토론 초반에 이미 답변을 드린 것과 동일한 의견을 다시 게시할 필요는 없다고 생각합니다. 서로 다른 의견을 존중하며 합의할 수 있을까요?

하지만 생각해 보세요. 진정으로 도움이 되는 사람이라면, 게시물을 많이 올릴수록 좋습니다. 제가 생각하는 배지의 취지는 바로 이것입니다.
링크를 건네신 게시물에서 데이터에 대해서는 맞았을 수 있지만, 커뮤니티에서의 활동은 숫자만으로 평가할 수 있는 것이 아닙니다. 앞서 말씀드렸듯이, 제가 딱 한 번, 딱 맞는 주제에서 맞는 말을 하고 나서 완전히 비활성 상태가 되었다면 배지를 받을 수 있었을 것입니다. 그것은 허용될 수 없는 허점입니다.

정말 그렇습니다.

현재 공식에 따르면, "포기한다, 이 포럼은 쓰레기다"라는 단일 게시글을 올려 20개의 좋아요를 받은 사용자가, 총 200개의 좋아요를 받은 60개의 유용한 게시글을 작성한 사용자보다 더 높은 점수를 받게 됩니다.

(제 생각에는) 그렇게 하면 안 되는 것 같습니다.