TopCoder の Rating

Rating がかなり激しく上下するのですが、この Rating がどのように決まっているのか興味があるところ。実は、かなり複雑な方法で求まっているようです。

Rating を計算するというのは、実はかなり難しくてチャレンジングな課題だと思います。試験なり何なりのスコアというのは、かなり多くの不確定要素を含んでいるわけで、一つは問題の難度が常に違う(得点分布の分散が変わる)。それから同じ試験でも試験のたびに一定のスコアを出すわけではない(ある受験者の獲得点数に分散がある)。その上で、受験者の「実力」が意味のある変動をするということ(ある受験者の得点の期待値が時間で変動する)。単発の試験であれば、偏差値でも求めれば試験自体の難度の問題は解消されますし、2番目の問題はどうしようもないのであきらめます。何度も続く(しかもその間に実力が変わることを仮定する)試験では、後者の2つの問題をうまく解消させるようなスコアを作ってやらないといけません。

上の Rating の式を追ったんですが、おおよそ Rating の差で勝率が決定すると仮定して、現在の実力差から考えられる Rank を求める。そして、正規分布を仮定した Rating の順に Rank が決定していると仮定して、その大会での Rank から求まる Rating との差を、前回の Rating に加算してやる感じで求めているようです(たぶん)。Volatility というのが、最近の大会の Rating 変動の大きさを示しているようで、これに応じて勝率や得点変動を調整しているみたいです。

Rating 決定という問題も、定式化してやればちゃんとした問題になりそうなので、こういった研究もありそうですね。