見出し画像

データから自動で作ろう!Tier表【全文無料】【遊戯王】


前置き

皆さんこんにちは、趣味でマスターデュエルを嗜んでいるUNPOKOCHINPOと申します。

皆さんはTier表ってご存知ですか?

知りませんよね。
一般には、Tier表とは、ゲームなどにおいてキャラクターの強さや人気度合いといったものを階層分けしたテーブルを指します[1]。

遊戯王におけるTier表は、特定のテーマが環境を支配する能力を階層に分けて示した表と言えるでしょう(図1)。
※ Tier表の定義は、こちらで進めていきます。

本記事では、このTier表をデータに基づいて自動で作成する手法についてお話をしていきます。

図1 : 遊戯王におけるTier表

既存のTier表の課題

まずは、Tier表をデータに基づいて自動で作成しようと思った理由を述べます。
一言でいうと、

  • 既存のTier表に属人性があり、どの表を信頼すればいいのか分からない

からです。

基本的には各人が経験則で作成しているので、Tier表を信頼できるかどうかは、Tier表を作った人が信頼に値するかどうかに依存します。

また、仮にTier表を作った人物が信頼に値するような人(強さが保証されているような人)であっても、Tier表に反映された思想までは読み取れません。
もう少しわかりやすく言うと、「こういう考えでこのTier表が出来上がりました」と言われたとして、その「考え」を、ぱっと見でTier表だけから読み取るというのは、かなり難しいでしょう。

このようなTier表における属人性の問題を解消するために、本記事では以下の達成を目標に設定します。

  • データさえ集めることができれば、あとは自動的にTier表が出来上がる


Tier表作成時に考慮すべきこと

実際にTier表を作る手続きを説明する前に、Tier表に隠されている要素を明確にしておきましょう。

私は、Tier表に隠されている要素は以下の二つであると考えました。

  • 勝率

  • 使用率

これらはテーマごとの勝率や使用率を表しています。
テーマというのは、天盃龍、ティアラメンツ、ユベル、粛声などのデッキラベルを指します。

この時、勝率がTier表に含まれる潜在的な変数になっているのは言うまでもないでしょう。勝率は、テーマの強さに非常にかかわりの深い要素です。
この値が大きいほど、*基本的には*そのテーマが強いと言えます。

ただ、勝率だけで、そのテーマが環境を支配する能力を正しく評価できるでしょうか。
次のような例を考えてみてください。

まず、Tier表を作成したい人が、以下のような状況に遭遇しました(図2 ケース①)。

  • 転生炎獣デッキを、10人が使用し、その内6人が勝利した

  • 天盃龍デッキを、30人が使用し、その内18人が勝利した

この時、勝率だけでみると、いずれのテーマも 0.6 (60%) という値をとるため同等です。
しかし、天盃龍デッキは流行りもあって、プレイングの熟練度が低い状態で使用している人が多い割合になっているのではないでしょうか。
そのような状態であるにも関わらず、高い勝率を維持できている時点で、天盃龍というテーマは評価に値するでしょう。

何が言いたいかというと、Tier表の潜在的な変数には使用率も含まれているのではないかということです。

もう一つ、別の状況も考えてみます(図2 ケース②)。

  • 転生炎獣デッキを、10人が使用し、その内6人が勝利した

  • 天盃龍デッキを、30人が使用し、その内15人が勝利した

この場合、転生炎獣デッキは勝率が60%、天盃龍デッキは勝率が50%で、転生炎獣の方が高くなっています。
しかし、勝率の高い転生炎獣を、天盃龍よりもTier表の上位に位置させるかどうかは一考の余地があります。
むしろ、万人が使ってもある程度勝率を維持できている天盃龍の方が、Tier表の上位に位置すべきだと考える人もいるのではないでしょうか。

つまり、私は使用率が、勝率に肩を並べるほどに重要な変数なのではないかと考えています。

ということで、以降はこの二つの変数を、Tier表を作るうえで必ず考慮すべき変数であるという前提のもとで話を進めていきます。

図2 : 使用率と勝率はどちらが優位?

Tier表作成

ここからは、本格的にTier表を自動で作成する手順を説明していきます。

概要

まず、手順の概要を述べます。
Tier表は以下の手順で作成されます(図3)。

  1. データの収集

  2. スコアの作成

  3. デッキに階級を割り当てる

図3 : Tier表作成の全体像

1の手順では、必要な情報をマスターデュエルのDUEL LIVEから収集し、テーマごとに勝率・使用率を計算します。

2の手順では、勝率・使用率という2つの情報から、テーマごとに環境を支配する能力(環境支配力)を表す一つのスコアを作成します。
ここで、Tier表が1次元データであることに注意してください。Tier表は、環境支配力を1次元的に並べた表なので、勝率・使用率という2次元データを直接反映することができません。
ゆえに、これらの二つの情報を環境支配力という一つの変数に集約する必要があるのです。
どのように情報を集約するかというと、主成分分析という手法を用います。この手法については、後ほど詳しく説明します。
主成分分析によって変数を一つに集約できたら、その変数を元に各デッキの環境支配力をスコアとして算出します。

3の手順では、2の手順で算出したスコアをベースに、各テーマがTier1,2,3,…といった階級のどこに位置するのかを決定します。
スコアを割り振っただけだと、スコアの大小関係は把握できますが、似たような環境支配力を持つデッキを同じ階級として扱うことができません。
ゆえに、この手順が必要になります。
スコアをベースに階級を割り当てる操作は、クラスタリングという分析方法を用いることで実現していきます。


1. データの収集

この節では、データの収集について詳しく見ていきます。

【生データの収集】
最初に生データを収集していきます。データを収集する先は、マスターデュエルのDUEL LIVEです。

1回の対戦から収集するデータは以下の3つの情報になります。

  • PLAYER1のデッキテーマ名

  • PLAYER2のデッキテーマ名

  • どちらが勝利したか

これらの情報を200戦分取得します。

図4 : 取得する生データ

※ 注意
DUEL LIVEは、おそらく対戦時間が一定以上のもののみが表示されているため、若干正確性に欠けることを述べておきます。
すなわち、長期戦に強いデッキが過大評価されます。
とはいえ、環境からランダムにサンプルできるデータがこれしかないので、ここは妥協しましょう。

【データの整理】

先ほど取得した生データを、テーマごとに以下の二つの情報に集約します。

  • 勝率

  • 使用率

勝率は、そのテーマが対戦した数に占める、勝利した対戦数の割合です。
使用率は、そのテーマが、サンプルされた全てのデッキのうちのどのくらいの割合を占めるのかという割合です。

【データの可視化】

勝率と使用率を座標平面上に描画してみましょう。
数字だけからは見えない情報が見つかるかもしれません。

図5 : テーマごとの勝率・使用率の可視化

図5を見ると、やはり2025/01時点のマスターデュエル環境では、天盃龍が突出して使用されているのが確認できます。
次いで、ユベルやティアラメンツ、センチュリオン、烙印、ギミックパペットも使用率が高くなっています。

個人的な所感ですが、
使用率が異常に高いうえに、そこそこ勝率も保てている天盃龍は、ぱっと見でもTier1に分類できそうです。
また、ティアラメンツは勝率も使用率も高く、Tier表でも上の方になりそうな雰囲気を感じます。
ユベル、センチュリオン、烙印は思ったより勝率が出てませんが、使用率は高めなので、少し評価が難しいかもしれません。

使用率が低いその他のデッキに関しては、勝率が 100% や 0% などの異常値を取りやすいので、Tier表作成に当たっては、あまり勝率を過大評価しないようにしたいところです。


2. スコアの作成

それでは、勝率・使用率を一つのスコアに集約していきましょう。
このスコアの集約操作では、主成分分析を用いるので、まずは主成分分析について見ていきます。

【主成分分析】
主成分分析(PCA)とは、数多くの変数から少量の合成変数を生成して、データの動向を分析する手法です。
たくさんの変数を少ない変数に集約することができれば、データの動向を解釈しやすくなるといったメリットがあります。

例えば、図6は、横軸に数学のテストの点数を標準化(※)した値、縦軸に理科のテストの点数を標準化した値をプロットしたものです。
※ 標準化は、データの平均・分散を揃えるために行われる操作です [2]。

図6 : 数学と理科のテストの点数

このような2次元のデータを1次元に集約したい場合、どのようにして代表的な一変数に集約すればよいのでしょうか。

結論から言うと、各データ点を正射影[3]した点の分散が一番大きくなるような1次元の軸を見つければよいということになります。

なぜ、分散が一番大きくなるようにするかというと、「分散が大きい」ということが、「データの差異を保存できている」ということになるからです。
すなわち、「データのばらつきという名のデータ特有の情報」を残した状態で次元を削減できるからです。

図において、黒い矢印が書かれていますが、これは失われた分散に該当すると言えるでしょう。そのため、この黒い矢印を全体的に小さくするようなイメージで軸が決定されます。

このように分散が最大になるように決定された軸を表す変数を、特に第一主成分と呼びます。
式としては、元の各変数を定数倍した和で表現されます。

図7 : 第一主成分の式

また、勘のいい方は「第一主成分があるということは、第二主成分もあるのかな?」と思ったのではないでしょうか。
あります。

第二主成分は、第一主成分で説明できない分散を最大限に説明するような軸を表す変数です。

図8 : 第二主成分も含むプロット

第一主成分ほど元のデータの特徴を残してはいませんが、第一主成分で説明できない分散を説明しているため、場合によっては、重要な解釈をできる可能性があります。

図9 : 第二主成分の式

2次元においては、これ以上第一主成分や第二主成分に直交する軸は存在しないので、第三主成分以降は存在しませんが、元のデータがもっと高次元であれば、第三主成分以降も存在することになります。

【主成分の解釈】

ところで、この主成分はどのような意味を持つのでしょうか?
主成分自体は、元の変数を分散が大きくなるように合成しただけの新たな変数というだけなので、意味の解釈は各人が行うことになります。

例えば、先ほどの数学と理科のデータにおける主成分の解釈を考えてみましょう。

まず、第一主成分(赤色の軸)についてですが、数学のスコアが大きくなると値が大きくなることが確認できます。
理科のスコアが大きくなった場合にも、値が大きくなることが確認できます。
よって、*私は*、この第一主成分を理論の得意度合いを表す変数であると解釈しました。

次に、第二主成分(緑色の軸)についてですが、数学のスコアが大きくなると値が小さくなることが確認できます。
理科のスコアが大きくなった場合には、値が大きくなることが確認できます。
よって、*私は*、この第二主成分を暗記の得意度合いを表す変数であると解釈しました。

【本記事における主成分分析】
ここまで主成分分析に関して、一般的にある程度正しいとされることを説明してきたつもりです。
しかし、本記事では、主成分分析を少々トリッキーに使用していきます

上記でも述べたように、主成分分析は主成分で分散をどの程度説明できるかを重要視します。
要するに、第一主成分が一番分散を説明できるのだから、第一主成分を差し置いて第二主成分を重視する、ということは基本的にはないのです。

にもかかわらず、本記事では、必要があれば第二主成分を、第一主成分よりも重視する立場を取ります。

なぜそんなことをするのかを説明します。

図8の再掲

こちらの図において、

  • 赤色の第一主成分が理論の得意度合い

  • 緑色の第二主成分が暗記の得意度合い

を表していると解釈していました。

ここで、このデータを分析している人が「理論系科目における暗記能力の解析」を目的としていた場合、第一主成分と第二主成分のどちらを重視するべきなのでしょうか。

明確に第二主成分なのではないでしょうか。

このように、データを解析する人の目標が明確に定まっている場合には、第二主成分を重視する立場も私はありえると考えました。

これを念頭に以降の文章を読み進めていただけると、理解しやすくなるのではないかと思います。

【スコアの作成】

それでは主成分分析を行って、勝率と使用率から環境支配力を表すスコアを生成していきましょう。
まず、勝率と使用率のデータに対して、主成分分析を行った結果を図10に示します。

図10 : 遊戯王データに主成分分析を行った結果

第一主成分、第二主成分は、それぞれ以下の式で表されます。

  • $${z_1 = \frac{1}{\sqrt{2}} \{z(使用率)-z(勝率)\}}$$

  • $${z_2 = \frac{1}{\sqrt{2}} \{z(使用率)+z(勝率)\}}$$

$${z(x)}$$は、$${x}$$を標準化した値を表しています。

各主成分がどのような意味を持つか解釈してみましょう。
まず、第一主成分は「そのテーマを使用するプレイヤーに占める未熟なプレイヤーの割合」に関連する変数であると*私は*解釈しました。すなわち、そのテーマを使用するプレイヤーのプレイングスキルに関連する変数であると言えます。
このような解釈は、以下の二つの事実に基づく考察から得られます。

  1. 第一主成分は、使用率が増加するとそれに伴って増加する

  2. 第一主成分は、勝率が減少するとそれに伴って増加する

使用率が増加するほど、そのテーマを使用するプレイヤーに占める未熟なプレイヤーの数は増加すると考えられます。
また、勝率が低いという状況の一因は未熟なプレイヤーの存在であると考えられます。
ゆえに、「使用率の増加」と「勝率の減少」に伴って増加する第一主成分を、「未熟なプレイヤーの割合に関連する」と解釈するのはさほど不自然ではないと思います。

次に、第二主成分は環境を支配する能力であると*私は*解釈しました。
このような解釈は、以下の二つの事実に基づく考察から得られます。

  1. 第二主成分は、使用率が増加するとそれに伴って増加する

  2. 第二主成分は、勝率が増加するとそれに伴って増加する

使用率が増加するほど、そのテーマと環境で遭遇する確率は上昇すると考えられます。
また、勝率が高いという状況は、テーマ自体が地で高いパワーを持っていることに起因すると考えられます。
ゆえに、「使用率の増加」と「勝率の増加」に伴って増加する第二主成分を、「環境を支配する能力」であると解釈するのはさほど不自然ではないと思います。


では、この第一主成分と第二主成分、どちらが今回のTier表作成に適しているでしょうか。
Tier表は、環境支配力をベースに作成されるので、明確に第二主成分です。
ということで、スコアは第二主成分から計算することに決めましょう。

【スコアの計算】

  • $${z_2 = \frac{1}{\sqrt{2}} \{z(使用率)+z(勝率)\}}$$

ということで、第二主成分に各デッキの使用率と勝率を代入してスコアを計算しましょう。

図11 : スコアの計算結果

天盃龍が突出して高いスコアになっています。また、ユベルやティアラメンツも他のテーマを突き放して高いスコアを叩き出しています。
一応、1次元データとして直線上に描いてみましょう。
概ね図12のようになると思います(この図だけ手作りなので、ざっくりした位置関係です)。

図12 : スコアの位置関係

あとは、このスコアをベースに各デッキテーマがTier表のどの位置に配置されるべきかを考えればよいだけです。


3. デッキに階級を割り当てる

この節では、算出したスコアをベースに各テーマがTier1,2,3,…といった階級のどこに位置するのかを決定します。
スコアの大小関係は既に把握できますが、現状は似たような環境支配力を持つデッキを同じ階級として扱うことができません。
そこでクラスタリングという分析方法を用いることで、類似した環境支配力を持つデッキたちを一つのグループにまとめていきます。

【クラスタリング】
クラスタリングは、データを「似た者同士で構成されるクラスターと呼ばれるグループ」に分ける分析手法です。
クラスタリングでは、各データ間の距離に基づいて、各データがどのクラスターに所属するかを決定します。
クラスタリングをした後のイメージとしては、図13のように、ある程度近いものは同じクラスターに入り、一定以上遠いものは別のクラスターに属するという形になります。

図13 : クラスタリングの結果イメージ

【デッキを階級に分ける】
今回は階層クラスタリングによって、類似したスコアを持つデッキを同じグループに所属させることを目指します。
階層クラスタリングではデンドログラムという図を使ってクラスタリングを行うので、デンドログラムの作り方からみていきましょう。
図14にデンドログラムが示されています。

図14 : デンドログラム

この図がどのように作られているのかを説明していきます。ざっくりいうと以下のような手順でデンドログラムは完成します。

  1. 距離が近いテーマ・クラスター同士を順にくっつけて新しいクラスターを作成する

  2. くっつける時は縦軸の高さの部分に距離の情報を残しておく

  3. 1-2をクラスターが一つになるまで繰り返す

例えば、高さの低いところを見てみましょう。
転生(転生炎獣)とメタビ(メタビート)が一番低い部分でくっついています。
これは、距離(スコア間の差)的に転生とメタビが最も近かったため、手順1で早々にくっついていることを表しています。
次に、ギミパペ(ギミックパペット)と烙印も近い距離にいるので、低い部分でくっついています。
ここで、くっつけるときの高さ(縦軸の値)が、2テーマ間の距離になっていることに注意してください。

次に、RR(レイドラプターズ)と [転生, メタビ] のクラスターがくっついています。
くっつくのは単一のテーマ同士だけとは限らず、単一のテーマとクラスター、クラスターとクラスター、といった場合もあります。

このようにして近い順番にどんどん高さを上げながらテーマやクラスター同士がくっついていき、最終的に一番上まで行くと全てのテーマがくっついて、超巨大な一つのクラスターが形成されます(図14では、見やすさのために1番上までは示していませんが、1番上まで行くと一つにつながっています)。
これで、デンドログラムは完成になります。


さて、ここからはデンドログラムをベースにクラスターを複数個に分割しなければなりません。
というのも、デンドログラムを作った時点では超巨大なクラスターが一つ存在するだけで、全部のテーマが同じクラスターに所属してしまっているからです。

ではどうすればよいのでしょうか?
答えは、デンドログラムをハサミでカットしてあげることです。

図15 : ハサミでカット!!

作りたいクラスターの数を適当に設定するなどし、よさげな高さでデンドログラムをカットします。

カットしたところから下の部分を見てください。
[天盃龍], [ユベル], [ティアラ], [RR, 転生, メタビ], [センチュリオン, ギミパペ, 烙印]
がそれぞれクラスターをなしています。
すなわち、カットした下において繋がっている者同士が同じクラスターに所属するとみればよいのです。

これにより、似た者同士のグループが出来上がったということになります。

図16 : 完成したクラスター

【クラスターに順序を付ける】
ここまででほとんどTier表は完成したも同然です。
後は仕上げに入ります。
クラスタリングは似た者同士を同じグループに所属させることはできますが、グループ同士の優劣はつけることができません。
そこでクラスターに順番を付ける必要があります。
ですが、何のことはありません。すでに環境支配力に関するスコアは算出済みなので、そのスコアが大きい順にクラスターを並べ替えればよいだけです。

図17 : クラスターに順序付け

あとは、表にまとめてあげればTier表の完成です。

図18 : 念願の自動でできたTier表

まとめ

簡単な多変量解析の手法を用いてTier表を自動で作る方法を示しました。これにより、データさえあればデッキの環境支配力を自動で評価できるということになります。
ただし、あくまでこの手法自体も"私の考え"に基づいていることを完全には否定できません。
それでも、データを入手して同じ手続きを踏めば誰でも同じTier表を作れるという部分で、属人性を解消するという目的は達成できたと思っています。
つまり、Tier表の作り方をアルゴリズム化できたことに価値があるのではないかと考えています。

皆さんにはこの手法をより精緻なものに発展させ、正確な環境分析につなげていっていただければよいなと思っています。
今後の理論の発展を願って、この記事を締めたいと思います。


Pythonを使える方のみになってしまいますが、
コードは公開中 → UNPOKOCHINPO/TierTable
(素人コードなので、ご承知おき下さい)。

マスターデュエルだけをするYoutubeチャンネルをやっているので、よければ遊びに来てね。
稀に、この記事みたいな理論を投稿するよ。基本はマスターデュエルをして遊ぶだけ。

また、この記事を気に入ってくれて、かつお金に余裕がある方は、お茶代およびマスターデュエル課金代をください。僕が幸せになります。続きはないです。


カード画像の著作権:
©スタジオ・ダイス/集英社・テレビ東京・KONAMI
©スタジオ・ダイス/集英社・テレビ東京・KONAMI ©Konami Digital Entertainment
サムネイル画像:
かわいいフリー素材集 いらすとや
背景素材を無料ダウンロード|背景フリー画像 BEIZ images
フリー素材 イラストが全て無料でダウンロード|商用可【素材っち】

ここから先は

0字

¥ 200

この記事が気に入ったらチップで応援してみませんか?