ボドゲーマのレートシステムを検証する

 

初めに

ボドゲーマ、というサイトがある。

ボードゲーム専門の総合情報サイト」と称しており、実際2023年現在、日本国内においては最大のボードゲーム情報プラットフォームとなっているサイトである。

bodoge.hoobby.net

 

ところで、ボドゲーマには「レーティング」という概念が存在している。
サイトにユーザ登録をしていれば各ゲームにつき1つ、1~10の10段階でレーティングを付けることができる。
また、各ユーザが付けたレーティングを基にした、各ゲームごとの「レート」が存在している。
(以降、ボドゲーマでの表記に従い、各ユーザが付けた10段階の評価を「レーティング」、ゲームごとの値を「レート」と記載する。)

ここで、「各ユーザが付けたレーティングを基にした」と表現した、つまり「各ユーザが付けたレーティングを平均した」と記載しなかったのには、事情がある。

 

まずは、以下ゲームのレーティングを見てほしい。

これは、記事執筆時点(2023/10/18)時点で最もレートが高いゲームの一つ、『モジリー』である。ここではゲームの内容には触れないので、気になった方は自身で検索してみてほしい。


さて、このゲームのレーティングを見てみると、以下のとおりである。

ん……???何かおかしな点にお気付きだろうか。
レーティング分布は10点が9人、9点が1人となっており、この単純平均によるレートは「9.9」である。
しかし、前述の通りゲームのレートは「8.6」となっており、この数値には乖離がある。

 

この理由としては、いくつかの仮説が考えられる。

  1. レートはレーティングの単純平均だが、サーバ側でのバッチ処理で算出しており、最新のレート反映までにタイムラグがある。
  2. レーティング分布に表示されない(非公開設定の)レーティングが、レートに影響を与えている。
  3. レートの算出方法が、レートの単純平均ではなく、別の算出ロジックを用いている。

まず1の仮説だが、これは考えにくい。
なぜなら、当該ゲームの最低レーティングは9であり、反映にタイムラグがあったとしても9未満となることはあり得ないからだ。

2の仮説だが、これはあり得る。とはいえ、ユーザ側から非公開設定のレーティングを計り知ることは不可能なため、直接的な検証はできない。
ただ、反証的な方法にはなるが、全てのゲームが2の仮説以外の特定の法則(今回で言えば3の仮説)に従うようであれば、2の説は棄却しても問題ないだろう。

 

ということで、今回は3の仮説、すなわちレートの算出方法が単純平均ではない可能性を追ってみて、それが何なのかをデータから推測してみようと思う。

ちなみに、上記で挙げた3つ以外にも仮説を考えることはできるし(運営サイドがレーティングに関係なくレートを設定している、など)、実際は各仮説の複合型ということも考えられるが、今回は話がややこしくなるので扱わないこととする。

 

BGG Rating

仮説を設定してデータから推定する、などと大げさなことを書いたが、実際にはレートの算出方法は当たりがついている。
それが世界最大のボードゲーム情報サイト「BoardGameGeek」、通称BGGにおけるGeek Ratingである。

boardgamegeek.com

 

BGGには2種類のRating、Average RatingとGeek Ratingが存在する。

このうちAverage Ratingは文字通り平均評価、つまりユーザ評価の単純平均である。

一方のGeek Ratingは、アルゴリズムが完全には公開されていないものの、全ての各ゲームの評価に「ダミーの票」を加えてから平均値を算出する、という操作を行っていることが運営から示唆されている。
ダミーの票、とは1~10の中央値である5.5評価の票で、これを常に一定量加えることで、少数の評価のみが投票されているゲームがランキング上位に入ることや極端に悪い評価になることを防いでいる。(評価数の少ないゲームは5.5周辺に集まる)

ユーザによる評価数が増えるにしたがってダミーの影響は薄まるため、実際の平均値に近づいてゆき、ランキングの信頼性は(5.5からより遠い範囲で)向上していく。

このあたりの手法はベイズ統計学をベースとしたモデルになっているので、詳しいことが知りたい方は、大学で統計学を履修してみたりすると良いかもしれない。

boardgamegeek.com

(FAQ内に、Geek Ratingについての限定的な示唆がある)

 

なお、加えられているダミーの票数についてFAQ内では100票と言及されているが、フォーラムや外部サイトでは1000票などと記載しているところもあり、明確な数値はわからない。(その他の操作も行われているようで、厳密な数値を推定することが難しい)

 

データの検証

さて、ここからは、ボドゲーマのレートにおいてもGeek Ratingと類似のアルゴリズムを用いているか、検証を行ってみることにする。

まずは、ボドゲーマからレート7.5以上、レビュー数上位300件それぞれのゲームについて、レーティング分布と表示レートを抽出した。(対象ゲーム数:469)

それらについて、レートとレーティングの単純平均の差と、評価数を散布図にあらわしたのが以下である。

縦軸:レート - レーティング単純平均 横軸:評価数(対数)

……非常にはっきりとした傾向が読み取れる。

明らかに、評価数が少ないほどレートを押し下げる力が働いている。

今回、票数の少ないゲームデータはレートが高いものをピックしているため、もしダミーの票が各ゲームに一定数加えられていれば、票数の少ないものほど影響を大きく受けることになるので、この時点でダミー票仮説に対する信憑性が俄然大きくなった。

 

ここで実際のデータに対して、評価5.5のダミー票を1票加えてみる。
例えば冒頭の例で言えば、計算式は以下の通りになる。
単純平均:(10 × 9 + 9 × 1) ÷ 10 = 9.9
補正済み:(10 × 9 + 9 × 1 + 5.5 × 1) ÷ 11 = 9.5

縦軸:レート - (レーティング合計+評価5.5ダミー1票)平均 横軸:評価数(対数)

ダミー無しでは最大-1.7程度あった乖離が、一気に-1.1未満まで縮まった。

ここから、ダミーを2票、3票、4票と増やしていく。

縦軸:レート - (レーティング合計+評価5.5ダミー2票)平均 横軸:評価数(対数)

縦軸:レート - (レーティング合計+評価5.5ダミー3票)平均 横軸:評価数(対数)

縦軸:レート - (レーティング合計+評価5.5ダミー4票)平均 横軸:評価数(対数)

ダミーを4票まで加えた時点で、乖離がおおよそ-0.05~0.1の範囲に収束するようになった。

 

さらにダミーを5票に増やしてみる。

縦軸:レート - (レーティング合計+評価5.5ダミー5票)平均 横軸:評価数(対数)

このケースでは、逆に補正がかかりすぎる(レート>補正済みの値)ようになった。

 

ダミー4票、が最も近いように思えるが、乖離が0.5を超える(四捨五入しても表示レートと一致しない)ゲームが多数存在しており、これも若干の怪しさが残る。

ここでさらに、固定していたパラメータ「ダミー票の評価値」を変更してみる。
具体的には5.5→6に変更するとどうなるだろうか。

縦軸:レート - (レーティング合計+評価6ダミー5票)平均 横軸:評価数(対数)

全てのゲームで乖離幅が0.5未満に収まった!これは、かなり確度が高いのではないだろうか。

外れ値が1件も存在しない、というのは嬉しさよりも怖さが先になってしまうが、ここでは結論を急がず、この結果の確からしさを確認するため、ここで対象にしていないゲームのデータから妥当性を確認してみたい。

 

評価が6程度かそれ以下で、評価件数が少ないゲームのレーティング分布をピックアップした。あまり評価が高くないゲーム群のため、固有名は伏せる。

各ゲームのレートを計算してみると、評価6のダミー5票を追加するモデルでは、全て表示レートと一致ないし0.05未満の誤差に収まるのが確認できる。
一方、評価5.5のダミー4票追加のモデルでは、例えば4番目のゲームでは表示レートと0.29近い誤差が発生することがわかる。

 

結論

というわけで、今回の検証では

ボドゲーマのゲームレートは、実評価に『評価6のダミー票5票』を加えたうえで平均している

ということが推定できそうである。
上段に記載したゲーム以外でも何件か確認してみたが、全て誤差0.05未満(四捨五入すれば表示レートと一致)の範囲に収まった。

 

ひとまず目的は果たしたので、ここからは余談である。特に読む必要はない。

 

追加で話をするのであれば、このダミー票の評価値と数は妥当なのか、というテーマになって、これはそもそもこの記事を書くきっかけでもあるのだが、このあたりはBGGのところでも少し触れたベイズ統計の手法が絡んでくるため、単純ではない。
ゲーム、評価の全量データがあれば、ある程度適切なダミー票の評価・数は設定できるかもしれないが、レビュー・ゲーム数は増え続けるため定期的なモデルの修正が必要で、煩雑になる。
もしかすると、現在のダミー設定も、定期的なモデル修正が施されているのかもしれないが、継続してデータを追っていないので、今のところ真実は不明である。

 

更なる余談として、ボドゲーマ上でゲームを一覧表示した際、レート順やレビュー数順でソートすることができるのだが、この時ソート基準が同じゲームは、表示順が不定になるようだ。
(例:レート順にソートしたとき、レートがどちらも8.0のゲームAとゲームBは、ゲームA、ゲームBの順で表示される場合もあれば、ゲームB、ゲームAの順で表示される場合もある)
最終アクセスまたは更新順ということも考えられるが、正直よくわからないのでご存じの方がいれば教えていただけると幸いである。

 

付記

参考までに、Looker上で今回用いたデータの一部を公開しておく。

lookerstudio.google.com