「ポケモン レジェンズ Z-A」の新要素をAIで予測してみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/6093ef88-a352-a33b-bca6-6d8c43d9237d.png)
　今回は、2024年2月27日の「Pokémon Day」で発表されたポケモンシリーズの最新作「ポケモン レジェンズ Z-A」（以降、Z-Aと略）の新要素を、AIの下位分野の機械学習で予測しましたので、その結果と方法について解説します。

0．目次
　1．予測を行う背景
　2．使用データ
　3．予測に伴う前提条件
　4．データの可視化
　5．データの加工
　6．特徴量の選択
　7．予測モデルの構築
　8．予測結果
　9．予測結果を受けての考察
　10．最後に

1．予測を行う背景
　今回の対象となるゲームタイトルに触れる前に、少しポケモンのゲームについておさらいをしておきます。ポケモンのゲームタイトルは大きく分けると3種類に分類できると思います。
![画像_ゲームタイトル種類.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/12a79e75-3551-516f-b5b3-2080ceb86a3f.png)
　今回触れるのは、ポケモンの原点である「ポケットモンスター」シリーズです。基本的には、この本編で新作が発売されることで新しいポケモンが一気に追加されます。「ポケットモンスター」シリーズには俗に「世代」という概念があり、マイナーチェンジ作品またはダウンロードコンテンツを除く本編新作が発売されるごとに「1世代、2世代、、、」と世代がカウントアップします。また、スピンオフでは、主に過去の本編作品のリメイクを分類しており、最近では上図に記載のような「Let's Go!」シリーズや「Pokémon LEGENDS」シリーズのようにゲーム内のストーリー的にリメイクとは違うものの過去作品と舞台を同じくする作品が登場しています。

　今回の新作であるZ-Aが「Pokémon LEGENDS」シリーズ第2作目であり、6世代を舞台としているということで、本編で6世代以降、毎世代でポケモンバトルに大きな影響を与えた追加要素を確認しておきます。

・6世代（XY,ORAS）：
　メガシンカ・・・特定のポケモンに限定してバトル時にさらに進化する
・7世代（SM,USUM）：
　Zワザ・・・持たせた道具のタイプの強力な技をバトルに1度だけ使える
・8世代（剣盾）：
　ダイマックス・・・3ターンの間巨大化でHPが増加し強力な技を使える
　キョダイマックス・・・特定のポケモンだけ特異な姿でダイマックスし、専用の技を使える
・9世代（SV）：
　テラスタル・・・固有タイプの変更が行え、タイプ相性を覆すことができる

　先日（2024年2月27日）のPokémon Dayで公開された映像では、メガシンカのロゴも登場しており、Z-Aでも必ず関係してくると考えられます。メガシンカは特定のキャラクターにしか実装されていないため、Z-Aの発売を機に、既存のキャラクターから「追加のメガシンカが来るのではないか」と考えられます。従って、それがどのポケモンなのかをAIに予測してもらおうと思います。

2．使用データ
Kaggleデータセット「The Complete Pokemon Dataset」
https://www.kaggle.com/datasets/rounakbanik/pokemon
■データ内容
・レコード数：801（1世代～7世代：フシギダネ～マギアナ、フォルム違いによる複数レコードは無）
・カラム（加工後）：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/5304838b-a931-36f2-2363-89cff19e1019.png)
（▲全60カラム）
　もとは伝説ポケモンかどうかを予測する（大体1世代あたり10%以下）ことを想定して用意されているデータセットのようなので、母数全体に占める正例の割合が今回の目的となるメガシンカするレコードの割合と近いと思いそのまま採用することにしました。他に予測に影響を与えそうな項目として、進化段階（何回目の進化か）、リージョンフォーム（世代違いによる新たな姿の追加）の有無など追加フォルム・要素があったかどうかを追加してみました。

3．予測に伴う前提条件
⓪使用ツール
・プログラミング言語は「Python」を使用し、環境は「Visual Studio Code」を使用しています。
・ライブラリについては、numpy、pandas、matplotlib、seaborn、sklearnなどの基本的なものを使用しています。
※この記事では、ソースコードの掲載はほとんどありません。

①trainデータとtestデータの分け方
　「ポケットモンスター」シリーズでは、世代を増すごとにポケモンが100体近く追加されるため、1作品内での全ポケモンの登場ができなくなっています。この点を踏まえて今回は、「Pokémon LEGENDS」第1作目の「Pokémon LEGENDS アルセウス」（以降、LAと略）の登場ポケモンを参考にしてデータを分けたいと思います。
　まず、LAと同じ（厳密には違う）舞台の4世代の作品「ダイヤモンド・パール・プラチナ（以降、DPtと略）」とLAのポケモン図鑑を比較しどの程度違いがあるか確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/6dcc69aa-97e7-e8e4-e29c-3276d7b55304.png)
　確認してみると、追加されたポケモンは追加進化・リージョンフォーム等を除くと、パラス族、タマザラシ族が純粋に追加されたポケモンでした。一方で、除外されたポケモンは、ポケモン数19、族数で8でした。こちらは特定の法則性を見ることはできませんが、強いて言えば、「ルビー・サファイヤ・エメラルド（3世代）」で登場するポケモンが多いということでしょうか。これについてはDPtとの関連性はあまりないので、今回の線引きには応用できなさそうです。つまるところ、基本的にはDPtのポケモン図鑑（シンオウ図鑑）登録のポケモンとLAのポケモン図鑑（ヒスイ図鑑）登録のポケモンとでは、母数に対する大きな差異はないと考えることができ、今回のテスト用データはZ-Aと同じ舞台の6世代の作品「X・Y」のポケモン図鑑（セントラルカロス図鑑、コーストカロス図鑑、マウンテンカロス図鑑）をベースにしたいと思います。
 
・trainデータ：testデータ以外のレコード。レコード数418。
・testデータ：すでにメガシンカが確認されている族を除いたカロス図鑑登録のポケモンのレコード。レコード数383。

②複数フォルムのあるポケモンの扱い
　今回は、1ポケモン1レコードとします。そのため、複数フォルムのあるポケモンについては、最もベーシックと考えられるフォルムの情報を採用します。
 
例1）ナッシー：通常のすがた/アローラのすがた→通常のすがた
例2）ミノマダム：くさきのミノ/すなちのミノ/ゴミのミノ→くさきのミノ

③追加ポケモンの想定
　「ポケットモンスター」シリーズには俗に「御三家」と呼ばれる最初にもらえる3匹のポケモンが各世代にいますが、リメイク作品については原作の本編作品とキャラクターが同じです。しかし、LAについては同じ舞台の本編とは違うキャラクター3匹を御三家として抜擢しています。そのため、LA同様に今回も御三家の入れ替えが想定されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/8eaa8bd8-55bf-e34b-c6bf-15d3c8a6fae1.png)
　また、最近の作品の傾向であるリージョンフォームの追加等も考えられ、カロス図鑑には登録されていないポケモンが追加されることが想定されます。しかし、リージョンフォーム等に関する法則性を特定することは難しいので、今回はそれらの想定は一切考慮せず、既存ポケモンのみをメガシンカ可能性の対象として考えます。

 4．データの可視化
　まずは、trainデータのメガシンカの数を確認します。
（▼メガシンカ可能数）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/bd592e86-ce21-3f9c-ba00-c113def8dad5.png)
　メガシンカ可能なポケモンはtrainデータ内で1割程度と見て取れます。
（x軸の数値がメガシンカ可能種類の数を表しています。）

　次に、trainデータとtestデータの均衡を確認します。
（▼世代別の集計）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/a26a1eb5-69e6-6b7c-ebe2-9a5db98d0b30.png)
（▼進化系別の集計）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/9dc886b6-3586-9378-0e7b-0cc9bf008d8d.png)
（▼最終形態の集計）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/7296525b-6fb6-0ebc-8658-36fded89b3b6.png)
　世代については、6・7世代に大きく偏りがありますが、それ以外は大きく偏っているというほどではなさそうです。進化系・最終形態に関してはおおむね均衡がとれているように見えます。

　次に、メガシンカと各指標の関係性を見てみます。
（▼メガシンカ別の世代の集計）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/20d09e60-0e29-ef51-c1f2-c13074acadc4.png)
（▼メガシンカ別の種族値（各ポケモンの固有ステータス）合計の集計）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/cd180dab-c50e-67ff-55ef-f6ddd245c88e.png)
（▼メガシンカ別の1つ目のタイプの集計）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/820e9965-e0dc-b304-d0bc-dc12baca8491.png)
（▼メガシンカ別の追加要素（リージョンフォームなど）の集計）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/7beb32a5-8eb6-1a4a-a2eb-70447785f94b.png)

・世代については、当然ながら実装が開始した6世代までのポケモンにメガシンカが確認できます。とはいえ、5・6世代にはほとんどメガシンカはいません。そのため、trainデータの傾向だけで考えれば、メガシンカは1～4世代で追加される可能性があると考えることができます。
・種族値合計については、600族（種族値合計が600のポケモンの総称）周辺にメガシンカが集まっているようです。対戦環境では600族の活躍がめざましいので、メガシンカが追加されることでゲームバランスに大きく影響することとなります。そのため、ユーザーは600族のメガシンカ追加に期待していると考えられます。
・タイプについては、この可視化ではあまり特徴的なことを言えなさそうです。深掘りの甲斐はありそうですが、今回は一旦そのままにしておきます。
・メガシンカ以外の追加要素については、傾向を見ようにもデータが少ない印象です（他で追加要素が来ていないポケモンが優遇されると読んでの可視化でしたが微妙だったとように思いました）。

5．データの加工
　今回は、カテゴリ変数の加工を行いました。

①カウントエンコーディング
※カウントエンコーディングとは：文字列について、データ全体での出現回数に置き換える加工方法。
・分類（○○ポケモン）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/b5a6fe06-ba71-c488-34b6-cb5e388b8ee3.png)
・特性
特性は3列に分かれているので、3列を合わせて出現回数を計算します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/89945b19-631f-e1a6-13c1-b6cdd048d186.png)

②ラベルエンコーディング
・同族（同じ進化系列ごとに、たねポケモンの名前が格納されている）
左右差・上下差がないため、One-Hotエンコーディングの方がふさわしいかもしれませんが、カラム数が多くなることを防ぐために今回はラベルエンコーディングにしました。

6．特徴量の選択
　今回は以下を特徴量として選択しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/5abcbeac-05a1-f6b5-72da-2a3aba7c388a.png)
（▲全28カラム）
　削除したのは、主にはタイプに関する情報（タイプ、タイプ相性）です。理由としては、単にカラム数が最も多かったためです。試しに全カラムでランダムフォレストを回してみてもこの後の結果と大差がなかったため、今回は削除しました。
参考までに、ヒートマップとVIFを可視化しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/eb0dad0c-316b-5533-c195-9b60d6f157f6.png)

7．予測モデルの構築と評価
　今回は複数のアルゴリズムを使用し、1つ以上の予測結果があったものを載せておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/883741b3-6f43-e70e-ad5e-63991a17d2d9.png)
　ここでは、5つのモデルの精度と寄与度をみておきます。
※見方としては、モデルスコア・交差検証については最小が0、最大が1の範囲でモデルの精度をスコアリングしています。寄与度についても精度と基本的には同じですが、ロジスティクス回帰については範囲を-1から1までとり、絶対値が1に近いほど寄与が大きく、0に近いほど寄与が小さいと考えます。

・精度としては、交差検証を行うことで低い結果となっていたり、すべての結果が異様に高く、信頼できるか不確かであったりといった印象です。
・寄与度については、バトルへの影響が少ない基本情報（緑）やバトルへの影響が最も大きい能力値の情報（黄）が多く寄与している傾向が見られました。

　従って、モデルの精度はいまいちですが、とりあえず早く結果が見たいので、モデル構築についてはこれで切り上げます。

8．予測結果
　お待たせしました。それでは、機械学習モデルによって予測されたメガシンカするポケモンを発表します。今回、モデルを5つ用意したので、モデル別に予測結果を見てみたいきたいと思います。

モデル①ロジスティクス回帰（モデルスコア0.89 交差検証平均0.18 最大寄与「同族」）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/fd90ef45-91ac-7d8f-e0f8-dd18c9f1231e.png)
　ロジスティクス回帰は、比較的番号が若いポケモンが多い印象です。また、「ハンテール」「サクラビス」は「パールル」から分岐で進化する2匹なのですが、並列の進化先がすべて含まれている点は他のモデルにない特徴だったようです。

モデル②KNN（モデルスコア0.95 交差検証平均0.50 最大寄与「孵化歩数」）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/7c55f48a-ea72-f4b3-4be4-cc5d19d75fb5.png)
　KNNは、他のモデルよりも番号のばらけ方がまばらで現実味のある予測だと感じました。ただ、「タマンタ」は「マンタイン」の進化前、「コジョフー」は「コジョンド」の進化前なので、予測結果に含まれたポケモンの進化前も一緒に含まれてしまっています。メガシンカは現状の法則性では最終形態のポケモンにしか確認されていないため、この点をどう捉えるかは考える要素になります。

モデル③ナイーブ・ベイズ（モデルスコア0.92 交差検証平均0.74 最大寄与「A」）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/d4c65529-3b40-8d1e-463e-9a9a7e49f134.png)
　ナイーブ・ベイズは、最も予測数が多く、内容も5つのモデルの中ではユーザーがいちばん喜ぶような組み合わせなのではないでしょうか。というのも、人気の高いポケモンが多く含まれているためです。特に、このモデルの予測結果の特徴だと「サンダース」「ブースター」「エーフィ」「リーフィア」「グレイシア」は「イーブイ」から分岐進化する8匹のうちの5匹です。「イーブイ」族（俗称ブイズ）は世代を跨いでの追加進化が過去に3回行われ、最後に追加されたのが、第6世代の「ニンフィア」でした。今回の予測を行うゲームの舞台も第6世代であるため、ここにきてついにブイズにも更なる追加要素が期待できる結果となっています。

モデル④決定木（モデルスコア1.00 交差検証平均0.97 最大寄与「S」）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/38404dfe-7f98-8bc4-103f-6f8032e61764.png)
　決定木は、KNN同様、進化前が予測結果に含まれています。特に、「ミニリュウ」「ハクリュー」「カイリュー」の「ミニリュウ」族については他のモデルでも予測している傾向があり、決定木については同族をすべて予測していることから、「ミニリュウ」族がメガシンカの法則性を最も満たしているのではないかと伺えます。また、このモデルの予測結果では「フラエッテ」～「メレシー」までが第6世代のポケモンですが、他のモデルの結果に比べると数がかなり多いです。現状メガシンカできるポケモンに第6世代の個体はいないため、このモデルでは世代の影響が特に少ないのかもしれません。

モデル⑤ランダムフォレスト（モデルスコア1.00 交差検証平均0.90 最大寄与「種族値合計」）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/2d6658af-e1a9-1fc8-e80b-7507ca8310fd.png)
　ランダムフォレストは2体しか予測しませんでした。しかし、その2体が「カイリュー」と「ゲッコウガ」と見過ごせない結果です。なぜかというと、「カイリュー」は現在の「ポケットモンスター」シリーズ最新作である「ポケットモンスタースカーレット・バイオレット」の対戦環境で最上位クラスの強さを誇るポケモンです。また、「ゲッコウガ」は第6世代の御三家の1体で、各世代の御三家の中でも特に公式の優遇を受けているポケモンです。そのため、ユーザー人気も非常に高いポケモンとなっています。

　いかがだったでしょうか。どのモデルも非常に面白い予測結果だったと思います。それでは、これらの予測結果について考察を行っていきたいと思います。

9．予測結果を受けての考察
　5つのモデルに共通している予測の傾向は、
 
a.）第1世代（No.0151まで）のポケモンをある程度含む
b.）種族値に関する指標の寄与している割合が高い（相関係数：0.8, 0.6, 0.6, 0.5, 0.6, 0.6, 0.5）
c.）進化前が予測されているとき、同族の最終形態も必ず予測されている
d.）追加進化・追加要素のあるポケモンが1体以上含まれる

この4点であると思います。

　a.）については、学習用データでメガシンカすることのできるポケモンが多い世代だからと考えることができます。一方で最もメガシンカが多い世代である第3世代（No.0252～No.0386）については、ある程度予測されているモデルと1体も予測されていないモデルに二分されました。その理由としては、世代以外の特徴量でメガシンカするポケモンの特徴に合うポケモンがテスト用データに存在しなかったためと考えられ、逆に考えると、メガシンカしそうなポケモンは既に出きっていて、もうメガシンカの期待のできるポケモンが残っていないと考えることができます。
（▼世代別のメガシンカポケモン一覧）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/8ee20277-91d0-c5d8-2e50-fb675675675e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/2de599a4-b20b-8d72-1898-845bc84d7b29.png)
※ここでは、「ゲンシカイキ」もメガシンカとしてまとめています。

　b.）については、ヒートマップやFeatureImportanceからわかるように、種族値が予測に大きく貢献しているようです。各モデルの予測結果についても、ロジスティクス回帰を除き、種族値合計600以上のポケモンが1体以上含まれています。
（▼メガシンカポケモンの種族値の傾向）赤枠：種族値合計が600、青枠：種族値合計が600超の伝説ポケモン、紫枠：種族値合計が600の伝説ポケモン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/cfd4349d-4565-d7cd-afb7-8f38060f7581.png)
上図のように、特に種族値合計600（俗称600族）のポケモンがほとんどのモデルの結果に含まれています。600族は1世代に1～2体程度しか存在しておらず、ポケモンが限られているため、テスト用データでは特に「カイリュー」に対象が集まったと考えられます。

　c.）については、「同族」が大きく寄与していることが関係ありそうです。「同族」は、進化系列が同じポケモンにその系列のたねポケモンの名前を格納しており、ラベルエンコーディングで加工しています。考えられることとしては、No.順に番号を振っているため、学習用データでメガシンカが確認されているポケモンの番号の近隣の番号のポケモンが予測されやすい結果となったのではないかということです。この考察が有力であるとすれば、加工方法は見直した方がよさそうです。

　d.）については、追加進化・追加要素のあったポケモンにもメガシンカの実績があることから、予測に影響したようです。寄与度としてはどのモデルでもスコアがほぼ0であるため、追加進化・追加要素があるポケモンには上記3点（a.）,b.）,c.））の要素に該当していると考えられます。
（▼メガシンカポケモンの追加進化・追加要素）黄枠：追加進化、緑枠：追加要素、黒枠：追加進化・追加要素
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/8aea95b2-cf35-a6a8-7e98-5befebc294a2.png)

　以上のことから、メガシンカポケモンを予測する手がかりとして有力な要素をまとめると、

・既存メガシンカポケモンと種族値合計が近い
・既存メガシンカポケモンの法則性に最も当てはまっているのは「カイリュー」、次点で「ゴローニャ」「キングドラ」「テッカニン」「ダイノーズ」「ドサイドン」「オノノクス」「ゲッコウガ」「メレシー」

ということになります。

10．最後に
　今回は、既存メガシンカポケモンの傾向から「Pokémon LEGENDS Z-A」のメガシンカポケモンを予測するモデルを作ってみました。予測内容について個人的には面白い結果となったと感じています。特に、ナイーブ・ベイズでブイズが多く予測されたことや、ランダムフォレストで最強ポケモンと超人気ポケモンの2体のみが予測されたことが印象的です。
　ところで、御三家の中で唯一「ゲッコウガ」のみが予測に引っかかったことについてですが、これは「ゲッコウガ」のみに追加された「キズナヘンゲ」というメガシンカに近い要素が影響していると考えられます。今回取得したKaggleのデータセットでは、メガシンカやリージョンフォームなど種族値に変化があるポケモンは種族値合計が大きいまたは実装の新しい方を採用されていることが確認されています。
（▼メガシンカ可能ポケモンのデータセット一部抜粋）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/0e9882b6-c0fa-7f21-0ff6-6e3e19962924.png)
（▼追加要素のあるポケモンのデータセット一部抜粋）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756676/488b8a3d-32d1-84c9-22bc-45d77575cbee.png)
そのため、原種のステータスでの傾向把握が完全には行えていないことが今回の反省となります。また、内定ポケモンが未公開の状況でテスト用データを準備したわけですが、第7世代以降のポケモンについての予測を最初から除外している点もモデル構築の課題となったと思います。

　今回の取り組みについて反応が良ければ、原種のステータスにデータセットを修正した場合の予測も行いたいと思います。
　また、私はデータ分析をまだ勉強中の身であり、分析手法に未熟な点や誤った点があったかと思いますので、「こんな方法をとってはどうか」などご意見をいただけると嬉しいです。

最後までご覧いただき、ありがとうございました。