자주 놀지 않는 사람을 다루는 ELO 알고리즘


9

나는 진행중인 탁구 대회에서 선수 순위를 정하기 위해 ELO 알고리즘을 사용하고 있습니다. 대부분의 플레이어는 매일 플레이하지만 한 달 동안 플레이하지 않은 플레이어는 한 명입니다. 내 알고리즘은 현재 지난 30 일 동안의 점수 만 추적하므로 결과적으로이 플레이어는 절대 뛰지 않았지만 순위를 빠르게 상승하고 있습니다. 그는 첫 경기를 많이 잃었지만 마지막 몇 경기에서 대부분 승리했습니다. 이는 그의 손실이 차트에서 떨어지고 결과적으로 점수가 올라가는 것을 의미합니다.

분명히 30 일 후에 점수를 떨어 뜨리려는 계획이 작동하지 않습니다. 자주 플레이하지 않는 것에 대해 플레이어에게 불이익을 가하는 데 사용할 수있는 다른 방법은 무엇입니까?

내가 지금까지 생각해 낸 유일한 것은 활동이없는 날을 기준으로 백분율을 기준으로 점수를 줄이는 것입니다. 그리고 그는 100 % 포인트로 돌아가려면 X 번 플레이해야합니다).

그러나 이것은 너무 임의적 인 것으로 보입니다. 다른 활동적인 환경에서 활동하지 않는 플레이어를 처리하기위한 더 좋은 아이디어 나 제안이 있습니까?

미리 감사드립니다.

답변:


18

각 경기에 대해 부여 된 포인트를 저장 한 다음 시간이 지남에 따라 해당 포인트 조정을 '만료'하는 것처럼 들립니다. 아시다시피, 쉽게 악용 될 수 있습니다.

표준 ELO 구현에서 ELO 점수는 영원합니다. 점수가 이런 방식으로 순위 시스템을 벗어나게되면 결국 전체 점수 디플레이션으로 이어질 것이므로 (즉, 1500은 더 이상 '평균'을 의미하지 않음) 시간이지나면서 '부패되지 않습니다.

ELO 순위는 게임 플레이어가 일반적으로 생각하는 방식에서 "포인트"가 아니라는 점을 기억하십시오. 그들은 다른 플레이어에 비해 플레이어의 기술 수준을 평가하려는 시도이며 보상이 아닙니다. 이 점수는 플레이어가 비슷한 기술 수준의 상대와 플레이어를 일치 시키려고 시도하는 유일한 도구이기 때문에 플레이어에게 처벌로 취해서는 안됩니다. 이러한 가치에 영향을 미칠 수있는 유일한 것은 다른 랭킹 플레이어와의 승패입니다.

플레이어가 높은 점수를 얻지 못하고 사라지는 것을 막고 싶어하는 대부분의 게임에서 취한 접근법은 리더 보드 디스플레이에 대한 활동 요구 사항을 갖는 것입니다. 플레이어가 30 일 이내에 게임을하지 않은 경우 리더 보드에 표시되지 않습니다. 플레이어가 돌아와 다른 랭킹 매치를 플레이하면, 절대 떠나지 않은 것처럼 전체 ELO 순위로 돌아갑니다. 중간에 다른 활성 플레이어에 비해 기술 수준이 변경된 경우, 게임은 상대방과의 경기에서 이기고지는 표준 프로세스를 통해이를 신속하게 인식하고 순위를 조정합니다.


1
이것이 실패한 이유에 대한 올바른 설명이지만 +1 대신 ELO를 삭제하고 완전히 다른 것을 시도합니다. (무엇을 모르겠거나 게시했을 것입니다 ^^)
o0 '.

4
@Lohoris 그것은 완벽하게 현명한 개발 선택이 될 것입니다. 목표가 서로에 대한 사람들의 객관적인 기술 수준의 의미있는 비교를 유지하지 않는 경우 (예 : 매치 메이킹 목적으로) ELO는 점수 매기기로 사용하기에 적합하지 않습니다. 그리고 매치 메이킹을 위해 후드 아래에 ELO와 같은 시스템을 사용하는 반면, 디스플레이 목적을 위해 완전히 다른 "포인트"시스템을 사용하여 사람들이 더 자주 플레이하는 것에 대한 보상을 줄 수있는 게임도 있습니다. 예를 들어 스타 크래프트 2는이 작업을 수행합니다.
트레버 파월

4

Elo 및 TrueSkill과 같은 알고리즘 은 시간의 경과에 관계 없이 각 게임의 결과를 기반으로 플레이어의 기술을 결정합니다 . 그러나 두 알고리즘 모두 "불확실성"요소가 있습니다. Elo의 경우 K Factor일반적으로 새로운 플레이어에 대해 높게 설정되어 Elo 등급이 "진정한"기술 등급에 빠르게 수렴됩니다. 정해진 시간 또는 정해진 수의 게임 후에, 게임 K Factor은 등급이 덜 변경되도록 보통 줄어 듭니다.

현재보고있는 것은 전형적인 Elo 행동 (Elo 구현에 따라 다름) 일 가능성이 높습니다. 플레이어가 경쟁사보다 적은 수의 게임을 해왔 기 때문에 더 높은 "새로운 플레이어"가되었습니다 K Factor. 그가 게임에서 이기고 있기 때문에 알고리즘은 그를 더 숙련 된 선수로보고 더 높은 순위를 부여합니다!

랭킹 알고리즘은 일반적으로 플레이어 간의 비교에만 사용되며 경기 결과에 따라 경기 결과를 결정 하지는 않습니다 . 참여에 대한 보상을 원한다면 경쟁에서 다른 방식으로 득점하는 것이 좋습니다. 몇 가지 제안 :

  • 승리 횟수에 따라 점수를 매 깁니다.
  • 승 / 패에 포인트 값을 할당합니다 (예 : 승 2 포인트, 손실 1 포인트).
  • 주어진 주 / 월에 플레이어의 최고의 X 게임 만 계산하십시오.
  • 플레이어가 "자격을 갖추려면"최소한의 게임을해야합니다.

더 많은 게임을하는 플레이어는 그렇지 않은 플레이어보다 더 높은 점수를 얻으므로 이러한 솔루션 중 어느 것도 완전히 "공정한"결과를 제공하지는 않습니다. 공정성을 보장하는 유일한 방법은 플레이어가 동일한 수의 게임을하는 것입니다.


나는 (동일한 평균 승리 / 손실 비율을하면서) 더 재생 플레이어가 많이 연주하지 않는 선수보다 높은 점수 ...이 것이 공평하다고 생각
데이비드 Gouveia의

3
@davidluzgouveia- "fair"에 대한 정의는 아닙니다. 토너먼트에서 플레이어를 득점 할 때, 다른 플레이어가 (기술에 관계없이)하지 않는 이점이없는 플레이어는 결과가 "공정"합니다. 우리가 이야기하고있는 사례는 친구들 사이의 우연한 경쟁이라고 생각합니다. 점수는 명백한 승리보다 참여를 장려하는 것에 관한 것입니다.
블레어 홀로 웨이

예, 이것은 엄격한 토너먼트가 아닌 일반적인 경쟁입니다. 분명히 David의 의견에 동의합니다. 그래서 여기서 해결책을 찾고 있습니다. 입력 해 주셔서 감사합니다!
Jemaclus

0

ELO 알고리즘에 대해서는 잘 모르지만 자주 플레이하지 않는 사람들에게 불이익을주는 대신 자주 플레이하는 사람들에게 보상 하는 것은 어떻습니까? 예를 들어 점수를 다음과 같이 만든 경우 :

Score = (Wins / Losses) * (Total Games Played) * Some_Scale_Factor

그러면 종종 게임을하는 사람들은 더 많은 게임을하게되고 더 높은 점수를 얻을 가능성이 높아집니다.

또한 변경하려는 다른 점은 오래된 점수를 제거하는 것이 플레이어의 총 점수에 영향을 미치지 않도록하는 것입니다. 그것이 플레이어가 순위에서 상승하는 주된 이유입니다 (그리고 결국 그는 차트에서 완전히 떨어질 것입니다).

또한, 한동안 진지하게 플레이하고 훌륭한 실적을 달성 한 사람들은 아마도 그들의 업적이 결국 사라지고 사라질 것이라는 것을 알고 기뻐하지 않을 것입니다. 그 시스템은 심각하지 않습니다.

점수 자체를 삭제 한 후에도 각 플레이어의 "총 게임 수"와 "승 / 손실 비율"의 캐시를 유지하여 쉽게 해결할 수 있습니다.

이 정보를 사용하면 플레이어가 얼마나 많은 승패를했는지 쉽게 추론하고 다시 플레이 할 때마다 업데이트 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.