レーティングの妄想
ここで言うレーティングは、ゲームのマッチングとかで使う、勝敗から参加者の強さを数字で評価するアレの事を指す。
個人的には、商品レビューとか作品レビューとかでも、五つ星とかの絶対評価より、作品同士の相対評価を勝敗とみなして、レーティングしてそれを評価値と用いてほしいと常々思っている。
内容的には概ねEloとかのパクリ。Eloとかだと、レートが初期値から実力に見合った値になるまで時間が掛かるから、そこをどうにかしてほしいと思っていたら、こんなん出来ましたって感じ。
基本的なやり方
算出に使う数字は2つ
- 直近100戦分の勝率
- 直近100戦分の相手のレートの平均値
対戦数が100なのはなんとなく。減らせば精度は落ちるけど強さの変化への追従が早くなり、増やせばその逆になる。
レーティング値=相手レート平均+log10(勝率/(1-勝率))*400
式はこんな感じ。対戦相手の平均レートが1500、勝率を0.6とすると
レーティング値=1500+log10(0.6/(1-0.6))*400
レーティング値=1500+log10(0.6/0.4)*400
レーティング値=1500+log10(1.5)*400
レーティング値=1500+約70
レーティング値=約1570
となる。
勝率が1や0の場合
勝率が1や0だと、logの部分が計算できなくなっちゃうので、勝率のデータにはあらかじめ引き分けを1戦分ダミーとして追加する。
実際の勝率が4勝0敗だった場合、レートの計算では4勝1分0敗扱いで、勝率は4.5勝÷5戦=0.9とする。
勝ったのにレートが下がる問題
対戦者同士のレート差が大きい組み合わせで、レートが高いほうが勝ち、レートが低い方が負けた時、勝った方のレートが下がり、負けた方のレートが上がったりすることがあるみたい。