Ichijoji Sagarimatsu

統計モデリング 生態学のデータ解析・麻雀の解析など

鳳凰卓東南戦の真の安定段位をベイズ推定

本記事は、以下のWebアプリに関する補足記事となります。

tenhou-antei.netlify.app

本Webアプリの開発に関しては、理論面の他、パラメータの設定など、
一方通行さんのブログ記事 【麻雀】安定段位をベイズ推定する|一方通行
を参考にさせていただきました。

ここでは、概念的な説明と、結果の解釈などについて説明します。

ベイズ推定の利点

本Webアプリで実装しているベイズ推定は、天鳳における実力の推定に非常に相性が良いと考えています。

その理由は、ベイズ推定ではデータとして用いるプレイヤーの成績の他に、「事前情報」を統計的に正しく利用できるためです

ベイズ的な手法を用いない場合、推定には手元のデータを用いるしかありません。
その場合、500戦の安定段位が13段の人の真の実力段位は、「13段がもっともありそうだ」と推定されます。

しかし、鳳凰卓の人であれば、安定13段は流石に上振れだろうと感じると思います。
長期安定段位は高くても10段前後が限界であり、11段を超える人はほぼいないと考えられます。

このような事前情報を、ベイズ統計であれば適切に反映させることができます。

ベイズ推定の仕組み

ベイズ統計では、
①事前確率(事前情報)を与える
②データを与える
③データが事前確率を更新し、事後確率(推定結果)を返す

の流れで推定が行われます。

ベイズ推定のイメージ

実際に、今回の解析の流れを図示して例示します。

①事前情報とは、鳳凰卓プレイヤーの着順分布に関する事前の信念を指します。長期でトップ率35%やラス率15%はいないだろうといったことです。実際には着順分布について仮定を敷いていますが、安定段位の指標に置き換えて考えても構いません。
以下の図が今回与えている安定段位に関する事前分布です。
事前分布の95%区間は5.58 ~ 8.72段となっています。これは、任意のプレイヤーAを選んだ時、Aの実力段位は95%の確率で5.58段 ~ 8.72段の間にあり、可能性としては7段周辺のことが多いかもしれない、と予想している状態です。実力段位が9段を超えている可能性も1%程度残されています。
この事前分布の妥当性については後で検討します。

②データとしてプレイヤーAの1000戦の成績[270-260-240-230](安定8.43段)を与えます。

③事前確率は更新され、事後確率を返します。以下が更新された事後分布です(事前分布と重ね合わせています)。事後分布の95%区間は6.70 ~ 8.99段になりました。

ベイズ統計では、サンプルサイズによる影響は「不確実性」として適切に評価されます

与えるデータが多いほど、事前確率は大きく更新され、推定結果の確実性が増します。
与えるデータが少なければ、事前情報からの更新は少なく、事後確率は事前確率と大きくは変わりません。

※ここで言う「確実性」や「不確実性」は、事後分布の幅(95%推定区間の広さなど)について言及したものであり、推定結果が「正しくない」という意味ではありません。


したがって、よく「500戦程度の安定段位はアテにならない」などと言われますが、本手法を用いることで、「どれだけアテにならない」のか定量的に評価できます。


なお、本解析では実力が一定であるという仮定のもと推定を行っています。

実際には実力が向上することも考えられるため、恣意的でさえなければ全成績を入力する必要はないと考えています
鬼打ち勢の方は直近数千戦の結果を入力することも推奨します。
その分データが少なくなるため、推定結果の不確実性が増すことは避けられませんが、「現在の実力」の推定が可能と考えます。

結果の解釈

以上を実装するに当たって問題となるのは、どのような事前分布を与えるかです。

ただ、その話題に移る前に、結果の解釈についての補足説明をしたいと思います。

例として[1400-1400-1400-1300] の成績を入力した結果

推定中央値

推定中央値に関する解釈は、ザックリ言えば、

解釈① 実力としてもっともありそうな安定段位

になります。
ただし、この解釈は語弊を招くかもしれません。
というのも、「相対的にそのあたりの確率密度が高い」だけであり、それ以外の可能性(それより低い可能性も高い可能性も)大いにあるからです。
ですので、ここでは別の表現による解釈を紹介したいと思います。

解釈② あなたの長期安定段位は50%の確率で[推定中央値]以上になる

こちらの方が、より正確というか、語弊を招かないかと思います。
言い換えれば、あなたが新しく天鳳アカウントを作り、同じ実力のままプレイしなおした時、長期(この場合は数千戦と考えて構いません)安定段位は50%の確率で [推定中央値] を超える、という意味になります。

95%推定区間

事前分布と入力データから割り出された
あなたの真の実力段位が95%の範囲で含まれる区間 を意味します。

上側2.5%点と下側2.5%点から割り出される数値になりますので、
推定区間の下限値に関しては「97.5%以上の確率であなたの真の実力段位は [下限] 以上である」と言えます。

したがって、これが7段を超えている人は、
紛れも無い鳳凰、あるいは 統計的に有意な鳳凰 と言うことができます。
これはなかなか誇れることではないかと思います。

鳳凰の猛者的なやつ

私が独自に決めた分類に従って表示しています。
95%区間の下限値、中央値や打数などを勘案したものになります。
あくまでも私がザックリ決めた分類なので、必ずしも正確な実力を示すものではありません
95%区間の下限値などを参照しているので、打数の影響も大きいでしょう
(たとえば打数が数百戦だと "豆鳳" 認定確率は高いと思われます)。
つまり遊び心なので、あまり真に受けず楽しんでもらえればと思います。

事前情報に関する設定

実装に関して具体的にどのような事前分布(事前情報)を与えたかを説明します。
これに関しても、 【麻雀】安定段位をベイズ推定する|一方通行 に明瞭な説明がありますが、ここでも説明します。

事前確率に関しては、ディリクレ分布と呼ばれる確率分布のパラメータ  \alpha を指定することで制御しています。

ディリクレ分布というのは、よく「サイコロの出目の出やすさ」を決める確率分布と説明され、ここでは着順分布を決める確率分布になります。

 \alphaには、一方通行さんに倣い \alpha=200を指定しました。
これが具体的にどのような事前情報かというと、本条件でシミュレートされるプレイヤーの真の安定段位の分布が先ほどの図になります(再掲)。

7段をピークとして、上位1%の人間で実力安定9.07段、上位0.1%の人間で実力安定9.85段となっています。

実際に鳳凰卓東南戦を2000戦以上プレイしたプレイヤー1087人(2024年3月時点)の安定段位の分布(出典:男冥利さん http://otokomyouri.com/toppage.aspx)を図示すると以下になります。

鳳凰卓を2000戦以上打てている時点である程度強い人が多いといった背景も考えられるため、平均が7以上になっていたり、下が切れているような分布になっていますが、上限は概ね一致しており、事前分布としては上々かと思われます。

(正確には、上の水色のヒストグラムは事前分布からシミュレートされた実力段位の分布であり、黄緑のヒストグラム実際に2000戦プレイした結果の分布なので、水色の実力の人たちが2000戦プレイすると結果の分散はより大きくなりそうですが、ここでは大体OKということにしたいと思います)

まとめると、事前分布としてディリクレ分布のパラメータには \alpha = 200を指定しました。
これは「95%のプレイヤーの実力が5.6段〜8.7段に収まり、上位1%の実力が9段以上」と指定していると考えてもらえればと思います。

さいごに

いかがでしたでしょうか。
面白いと思ってもらえたり、自信・やる気につながってもらえれば嬉しいです。

途中にも書きましたが、個人差はあれど、麻雀も実力は向上するものだと思います
なので、本解析で満足のいく結果が得られなくても、今後上手く打つことを意識して、ある程度の打数を重ねた時、今の自分の実力のチェックに本サービスを利用してもらえればと思います。

また、「95%推定区間が広すぎてほとんど何もわかんないじゃん!」と思った人は、自分のしているゲームはそういうゲームであることを認識してもらいつつ、打数も増やして確実性の高い結果を得てもらえればと思います。

個人的には天鳳が一番面白い麻雀ゲームだと思っています。

皆が運の有識者になってくれることを願いつつ、楽しく遊んでいけたらと思います。