GTOの体系化を1から考える - 3 ~Blinds Restealing編~
なぜBlinds Resteal vs BTN CCを勉強するか
- 頻出かつポットが大きくなりやすいから
- 正しくプレイできないと、損失が大きくなりやすいから
- 多くのプレイヤーはサンクコストを嫌い、アグレッシブにCBを打ちすぎるから
- レンジが広い場合の3betポットを勉強すれば、レンジが狭い場合に応用できそうだから
どのように体系化するか
今回は、フロップをトップダウン的な分類で分けることをしません。トップダウン的な手法というのは、A-high, K-highボード、Pairedボード等に分類する手法のことを指します。
ではどのようにするのか?戦略をベクトル化して、各戦略ベクトルの類似度を用いて「似たような戦略をまとめる」という手段を試みます。

用意
- BB 3bet vs BTN flat 3betのレンジを定義
- Game Treeに用いたノードは、bet size: 33%, 66%, 125%、raise size: 3x, 50%を設定
- piosubsetの238typeのものを使用して集合分析
類似度の定量化
今回は戦略ベクトルの類似度を測る指標としてコサイン距離を用いました。簡単に説明すると、と
というベクトルがあるとき、このベクトルが似ていれば、似ているほどコサイン距離は1に近づき、似ていなければ-1に近づきます。(ベクトル同士のの角度が0度に近ければ1に近くなる)
要するに戦略ベクトルと
のコサイン距離が1に近ければ、この二つのフロップに対する戦略は同じようなものと考えることができます。
結果1: コサイン類似度

縦横は238のフロップ、グラフの値はコサイン距離です。対角成分が真っ黒なのは同じベクトル同士のコサイン距離なので、自明に1になるからです。
この表は、グラフの隣接行列として扱うことができるので、それを使って似ている戦略をまとめていきます。何をもってフロップの特徴が似ているかを調査するために、コサイン距離に閾値を設けて、この隣接行列を定義しなおします。
例えば、閾値を0.9に設定して、隣接行列を定義しなおすと以下のようになります。なんとなくすっきりしました。

この隣接行列をグラフ表現すると、

こんな感じ。
グラフ表現すると何が嬉しいのか
ノードとノードの繋がりの関係は「戦略が似ているもの」です。要するに、ノード間にリンクがあるものは戦略が似ているものとして関係を持っていることになります。戦略が似ている者同士はリンクでつながれているはずなので、グラフ内の密になっている塊は、同じような戦略を持つフロップ群と解釈することができます。その塊を引っこ抜いてくることでGTOの体系化を目指そう、というモチベーションです。
Girman-Newmanアルゴリズムというものを用いて、上のグラフからコミュニティを検出してみました。

閾値が0.9のときグラフ全体は7個のコミュニティ、4個の独立したノード(リンクを持たないノード)に分けられました。
この結果が妥当であれば、Blinds restealingのシチュエーションでは11個の戦略を知っておけば、簡易的なGTOとして体系化できると考えられます。
Leftover
まず、閾値を変えるとグラフの構造が変わるので、検出されるコミュニティ数も変化します。なので、ちょうどよい閾値を探す必要があります。

閾値が0.9以上のとき、コミュニティの数は指数関数的に増えていきます。これは、リンクが減少して、独立したノードが増えてしまうためです。0.3~0.4の傾向については調査中。
次に、引っこ抜いたコミュニティの戦略がちゃんと体系化できるものかを調査する必要があります。検出されたコミュニティのフロップ群が「妥当」かどうかを検証する指標が必要です。
謝辞
集合分析の計算を回すにあたりmaspy_starsさんに協力していただきました。