頻繁にプレイしない人を扱うELOアルゴリズム


9

私は、ELOアルゴリズムを使用して、進行中の卓球競技でプレーヤーをランク付けしています。ほとんどのプレーヤーは毎日プレーしますが、1か月プレーしていないプレーヤーが1人います。私のアルゴリズムは現在、過去30日間のスコアのみを追跡しているため、このプレーヤーは一度もプレイしたことがないにもかかわらず、ランクを急上昇しています。彼は最初のゲームの束を失いましたが、彼の最後のいくつかのゲームのほとんどを獲得しました、それは彼の損失がチャートから落ちて、結果として彼のスコアが上がっていることを意味します。

明らかに、30日後にスコアを落とすという私の計画は機能していません。頻繁にプレイしないことでプレイヤーにペナルティを課すには、他にどのような方法がありますか?

これまでに私が思いついた唯一のことは、非アクティブの日数に基づいたパーセンテージに基づいてポイントを減らすことです(つまり、ユーザーが1週間プレイしなかった場合、彼のポイントは通常の70%にすぎません、そして彼は100%ポイントに戻るためにX回プレイしなければならないでしょう)。

ただし、これは恣意的すぎるようです。他のアクティブな環境で非アクティブなプレーヤーを処理するためのより良いアイデアや提案はありますか?

前もって感謝します。

回答:


18

試合ごとに授与されたポイントを保存し、それらのポイント調整を時間の経過とともに「期限切れ」にしているようです。お気づきのとおり、これは簡単に悪用される可能性があります。

標準のELO実装では、ELOスコアは永遠です。この方法でポイントがランキングシステムを離れると、最終的には全体的なスコアの低下につながるため、時間の経過とともに「減衰」することはありません(つまり、1500は「平均」を意味しなくなります)。

ELOのランキングは、ゲームプレーヤーが通常考えているような「ポイント」ではないことに注意してください。他のプレイヤーと比較してプレイヤーのスキルレベルをランク付けする試みであり、報酬ではありません。これらのポイントは、プレイヤーを同様のスキルレベルの対戦相手と対戦させるために必要な唯一のツールであるため、プレイヤーへの罰として取り上げるべきではありません。これらの値に影響を与えるべき唯一のことは-これまでに-他のランク付けされたプレイヤーに対する勝敗です。

プレーヤーがハイスコアを獲得するのを止め、二度とプレーしないことを望んでいるほとんどのゲームで採用されているアプローチは、リーダーボードディスプレイのアクティビティ要件を持つことです。プレーヤーが30日間(または何でも)ゲームをプレイしなかった場合、その日まで、リーダーボードに表示されません。プレーヤーが戻って別のランク付けされた試合をプレイすると、彼らは完全にELOランキングで戻ります。暫定的に他のアクティブプレーヤーと比較してスキルレベルが変化した場合、ゲームはすぐにそれに気づき、ランク付けを調整します。これは、対戦相手との試合の勝敗の標準的なプロセスです。


1
+1これが失敗した理由についての正しい説明ですが、代わりにELOをドロップして、まったく別のことを行います。(私は何がわからないか、それを投稿したでしょう^^)
o0 '。

4
@Lohorisそれは完全に賢明な開発の選択になるでしょう。人々の互いの客観的なスキルレベルの有意義な比較を維持することが目的ではない場合(つまり、マッチメイキングの目的で)、ELOはスコアリングメカニズムとして使用するのに適していません。そして、マッチメイキングのフードの下でELOのようなシステムを使用するゲームもありますが、表示の目的でまったく異なる「ポイント」システムを使用して、より頻繁にプレイすることで人々に報酬を与えることができます。たとえば、StarCraft 2がこれを行います。
Trevor Powell

4

EloやTrueSkillなどのアルゴリズムは、時間の経過に関係なく、プレイされた各ゲームの結果に基づいてプレーヤーのスキルを決定します。ただし、どちらのアルゴリズムにも「不確実性」の要素があります。Eloの場合、K Factor通常、新しいプレーヤーにはEloレーティングが「真の」スキルレーティングにすぐに収束するように高く設定されます。設定された時間または設定された数のゲームの後、K Factor通常はが減少するため、ゲーム間の評価の変化は少なくなります。

あなたが見ているものはおそらくEloの典型的な振る舞いです(Eloの実装によって異なります):プレーヤーは競合他社よりも少ないゲームをプレイしたため、より高い「新しいプレーヤー」になりK Factorます。彼はゲームに勝っているので、アルゴリズムは彼をよりスキルの高いプレーヤーと見なし、彼により高いランキングを与えます!

ランキングアルゴリズムは通常、プレーヤー間の比較のためにのみ使用され、その動作を考慮して、競争の結果を決定するためではないことに注意してください。参加に報酬を与えたいのであれば、別の方法で選手をスコアリングすることをお勧めします。いくつかの提案:

  • 勝利の数に基づいてプレイヤーにスコアを付けます。
  • 勝利/損失にポイント値を割り当てます。たとえば、勝利の場合は2ポイント、損失の場合は1ポイントです。
  • 特定の週/月にプレイヤーの最高のXゲームのみを数えます。
  • 「資格を得る」には、プレーヤーに最低限のゲームをプレイするように要求します。

これらの解決策はどれも完全に「公平な」結果をもたらさないことに注意してください。より多くプレーするプレーヤーは、そうしないプレーヤーよりも高いスコアを持っているからです。公平性を確保する唯一の方法は、プレーヤーが同じ数のゲームをプレイすることです。


(平均勝率/敗北率が同じである)より多くプレーするプレーヤーは、あまりプレーしないプレーヤーよりも高いスコアを持つべきだと思うのは公平だと思います...
David Gouveia

3
@davidluzgouveia-それは厳密には「公正」の定義ではありません。トーナメントでプレーヤーを採点するとき、他のプレーヤーが(スキルを考慮せずに)他にない利点を持っているプレーヤーがいない場合、結果は「フェア」になります。そうは言っても、私たちが話しているのは友人同士のカジュアルな競争だと思います。採点は、完全な勝利よりも参加を奨励することに関するものです。
Blair Holloway、2011

はい、これは厳密なトーナメントというよりはカジュアルなコンテストです。明らかに、Davidのコメントに同意します。そのため、ここで解決策を模索しています。ご協力ありがとうございます。
Jemaclus

0

私はELOアルゴリズムについては知りませんが、頻繁にプレイしない人にペナルティを課す代わりに、頻繁にプレイする人に報酬与えますか?たとえば、スコアを次のようにしたとします。

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

そうすれば、頻繁にプレイする人はおそらくより多くのゲームをプレイし、より高いスコアを獲得する機会が増えるでしょう。

また、変更する可能性のあるもう1つのことは、古いスコアの消去がプレーヤーの合計スコアに影響を与えないようにすることです。それが、そのプレイヤーがランクで上昇している主な理由です(そして、彼が最終的にチャートから完全に落ちる理由でもあります)。

また、しばらく真剣にプレーして素晴らしい実績を達成した人は、彼らの業績が最終的に消えて消えてしまうことを知って満足できないでしょう。そのシステムはひどく落胆します。

これは、スコア自体を削除した後でも、各プレーヤーの「プレイしたゲームの合計」と「勝敗の比率」のキャッシュを保持するだけで簡単に修正できます。

その情報を使用して、プレーヤーが持っていた勝ち負けの数を簡単に推定し、プレーヤーが再びプレーするたびにそれに応じて更新することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.