Hatena::Grouptopcoder

naoya_t@topcoder RSSフィード

2008-12-22レーティングはどのように算出されているか

レーティングはどのように算出されているか

レーティングはどのように算出されているか - naoya_t@topcoder を含むブックマーク はてなブックマーク - レーティングはどのように算出されているか - naoya_t@topcoder レーティングはどのように算出されているか - naoya_t@topcoder のブックマークコメント

新しいレーティングは以下のように算出される:

各コンペティションの後、参加したコーダー各は以下のアルゴリズムに基づいて再レーティングされる。アルゴリズム・コンペティションでは、同じ問題セットを共有するコーダーのみが互いにレーティングされる点に留意されたい*1マラソンマッチでは、コーダーは何らかの投稿(exampleもしくはfull)をもってイベントに参加したものとみなされる。イベントに登録しただけではレーティング対象にはならない。コンペティションに参加した全員の平均レーティング(AveRating)が計算される:

http://www.topcoder.com/wiki/download/attachments/4587791/avg.gif

ここで NumCoders はコンペティションの参加コーダー数、Rating は各参加コーダーのコンペティション前の変動率を除いたレーティングを表す。

コンペティション係数(CF)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/cf.gif

ここで Volatility は参加コーダーのコンペティション前の変動率(volatility)を表す。

勝利確率(WP)推定アルゴリズム

http://www.topcoder.com/wiki/download/attachments/4587791/wp.gif

ここで Rating1 と Vol1 は比較対象となるコーダーのレーティングおよび変動率、Rating2 と Vol2 は勝利確率を計算するコーダーのレーティングおよび変動率を表す。Erf は「誤差関数*2」。

コンペティションにおいて当該コーダーが他のコーダーより高いスコアを得る確率(WPi|1≦i≦NumCOders)が推定される。

コーダーの期待ランク(ERank)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/er.gif

コーダーの期待パフォーマンス(EPerf)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/ep.gif

ここで*3は標準正規分布関数逆関数*4

各コーダーの実パフォーマンス(APref)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/ap.gif

ここで ARank はコンペティションでのスコアに基づいたコーダーの実ランク(首位なら 1、末位なら NumCoders)を表す。他のコーダーと同点の場合、同点コーダー全員によってカバーされている順位の平均値が用いられる。

コーダーのperformed asレーティング(PerfAs)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/pa.gif

コーダーにとってのコンペティションの重み(Weight)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/wt.gif

ここで TimesPlayed はコーダーがこれまでにレーティングを受けた回数を表す。高レーティングのメンバーを安定させるため、レーティングが2000〜2500のメンバーのウェイトは10%減、レーティング2500超のメンバーのウェイトは20%減とする。

訳注]参加0回→1.5, 1回→0.6393, 2回→0.47, 3回→0.3986, 4回→0.3587, 5回→0.3333, ... 20回→0.25, ... →9/41=0.21951に収束

変動上限(Cap)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/cap.gif

訳注]参加0回→900, 1回→650, 2回→525, 3回→450, 4回→400, 5回→364.28, 6回→337.5, 7回→316.6, 8回→300, ... 13回→250, 28回→200, ... →150に収束。*5

コーダーの新しい変動率(NewVolatility)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/nv.gif

コーダーの新しいレーティング(NewRating)の計算:

http://www.topcoder.com/wiki/download/attachments/4587791/nr.gif

新レーティングと旧レーティングの差が Cap を超える場合、差が最大でも Cap に収まるように新レーティングが調整される。

*1:DIV1,DIV2の区別のことか

*2:error function

*3:Φ

*4:the inverse of the standard normal function

*5:初回暫定レーティングが1200なので、Petrを抜くのに必要な最短参加回数は4回(1200→2100→2750→3275→3725)。そんな強者がいればの話だが

トラックバック - http://topcoder.g.hatena.ne.jp/n4_t/20081222