投稿者:SASソリューション担当

日本情報通信株式会社のSAS担当です。

SAS Visual Analytics on SAS Viyaに「自動分析」機能が存在していることはご存じでしょうか?

「自動分析」機能では予測(説明)したいターゲットに対して最も影響を与える要因を特定したり、そのターゲットを説明づけるための条件を文章で表現してくれたりと、とても便利な機能です。

今回はKaggleサイトで公開されているポケモンデータ(801匹)を使って、「伝説ポケモン」の特徴を「自動分析」機能を使って探索していきたいと思います。

Kaggleサイトはこちら

「伝説ポケモン」とは、ゲーム内の神話などに登場し特別な扱いをされているポケモンのことで、ゲーム内で1匹だけ入手可能なとても強力で珍しいポケモンです。

筆者は第1世代と言われる「赤緑青」しかやったことないのでミュウツーしか知らないのですが、特定の場所でしか捕まえられないレアポケモンで、捕まえた時点で即戦力になるくらい全ての戦闘能力が圧倒的に高いポケモンだった記憶があります。(あの手この手使っても捕まえられず、攻略本買ってあっさり捕まえた時はあっけないものでした)

なんとなく他のポケモンとの違いはありそうな気はしますが、実際に伝説ポケモンってどんな特徴があるの?という視点で定量的、定性的に表現していきたいと思います。


 目次
  1.データの準備
  2.データの探索
  3.自動分析
  4.まとめ

1.データの準備

まずは今回使用するデータを準備していきます。

今回はこちらのブログで紹介されている無料SASトライアル環境を使用していきます。使用するアプリケーションは「探索とビジュアル化」で、こちらはSAS Visual Analyticsの機能が提供されています。

①SAS Drive.png

まずはローカルにあるポケモンデータ(pokedex.csv)をSAS Visual Analytics on SAS Viyaに取り込んでいきます。

ローカルからインポート後、使用可能なデータソースからデータ数や列名など概要をみることができます。

②SAS 自動化説明.png

ポケモンは801匹で、14列のポケモンに関する情報がありました。列名はすべて英語で表記されていますが、日本語にすると上から「図鑑番号」、「名前」、「攻撃」、「防御」、「身長」、「HP」、「オスの割合」、「特殊攻撃」、「特殊防御」、「すばやさ」、「タイプ」、「体重」、「世代」、「伝説」でしょうか。

ポケモン図鑑に載っていそうなデータが揃っていますね。

気になるところをグラフで可視化していきましょう。

2.データの探索

まずは「伝説(is_legendary)」です。こちらが今回ターゲットとなる変数で、伝説ポケモンであるかそうでないかが0、1の値で表現されています。(下処理としてメジャーからカテゴリに変換しています。)

キャンバス上へドラッグ&ドロップし、自動チャートで棒グラフを作成します。

③SAS 自動化説明.png

伝説ポケモンは801匹中70匹いるようです。約9%が伝説ポケモンです。(伝説の割には割と多め)

次に「世代(generation)」です。こちらもキャンバス上へドラッグ&ドロップし、自動チャートでヒストグラムを作成します。(今回はメジャー変数なので、自動的にヒストグラムが作成されました。)

④SAS 自動化説明.png

「第7世代」までのポケモンデータでした。ちなみに第1世代は151匹ですね。(ラララ言えるかなぁ~のあれです)

次に「攻撃力」のようなポケモンの特性に関する数値データ同士の関係性を確認しておきます。使うのは「攻撃(attack)」、「防御(defense)」、「HP(hp)」、「特殊攻撃(sp_attack)」、「特殊防御(sp_defense)」、「すばやさ(speed)」です。メジャーセクションにあるこれらを同時に選択し、キャンバス上へドラッグ&ドロップ。自動チャートで相関行列を作成します。

⑤SAS 自動化説明.png

一番相関が高いのは「防御」と「特殊防御」、次いで「攻撃」と「特殊攻撃」でした。その他はそれほど相関は強くないですが、正の相関はあるようなので、どの能力もバランスよく高いということなのかもしれません。ただし「すばやさ」と「防御」は相関が無いようなので、それ限りではないですね。

ちなみに、これらの能力に関する値は「種族値」というもので、ポケモンの種類ごとの基準値のようなものらしく、実際にはポケモンのつよさは種族値以外にゲーム中の経験値などで決まるのですが、種族値も大切な1つのステータスになっているとのこと。

では最後にこの種族値が「伝説」別に違いがあるのか確認します。

6つの種族値(攻撃、防御、HP、特殊攻撃、特殊防御、すばやさ)「伝説」を使って箱ひげ図を作成します。先ほどまでと違って箱ひげ図は自動チャートではできないので、オブジェクトペインより箱ひげ図を選択して作成します。

⑲SAS 自動化説明.png

箱ひげ図をキャンバスにドラッグ&ドロップしたのち、データの役割からカテゴリに「伝説」、メジャーに「攻撃」「防御」「HP」特殊攻撃」「特殊防御」「すばやさ」を選択します。

⑳SAS 自動化説明.png

オプションペインでグラフの見た目(箱の向きを横向き、外れ値表示、平均値表示)を変更して完成!

㉑SAS 自動化説明.png

普通のポケモンは中央値は70前後ですが、伝説ポケモンは100前後と数値が高く、普通ポケモンに比べて能力が高いことが伺えます。中にはHPが200越えの強者もいますね。

それほど種族値の説明力が強いということであれば、ポケモンの強さを総合的に評価する値を持った変数を作っておくと良さそうです。データペインから「新しいデータアイテム」-「計算アイテム」を選択し、計算式を設定します。

⑦SAS 自動化説明.png

計算式は以下のように6つの種族値の合計値とし、「種族値」という新しい変数を作成します。

⑨SAS 自動化説明.png

分布を見てみます。

⑱SAS 自動化説明.png

0~800の値で分布が描かれました(なんとなく2つの山が見えるのが気になる...)。尚、ミュウツーは「780」で全ポケモンの最高値でした。さすが初代伝説ポケモン、作者の思いが伝わります。

では、これらの変数を使って伝説ポケモンたる由縁「自動分析」の機能を使用して探索していきます。

3.自動分析

データペインより「伝説」を右クリックし、「説明」-「新しいページで説明」をクリック。すると、⑪SAS 自動化説明.png

新しいページにターゲット変数である「伝説」に関する分析レポートが自動で表示されました。
たったこれだけ。簡単ですねぇ~。

⑫SAS 自動化説明.png

画面の解説をしていきます。画面は大きく5つの表現がされています。

1)まず右上にある0、1ボタン。これは注目したいイベントに切り替えるためのボタンで、今回は「伝説ポケモン」の特徴を探索するので「1」に合わせておきます。

2)その左には「is_legendaryの特徴は何ですか?」と書かれており、内容は、『全てのポケモンの内、「伝説ポケモン」は8.74%(70/801)存在し、関連する因子は「種族値」、「オスの割合(percentage_male)」、「攻撃(sp_attack)」である。』とのこと。この分析のサマリ情報が表記されています。

3)その下にある棒グラフは、ターゲット変数に対する変数の関連度合い(相対的な大きさ)を表現しており、視覚的にとらえることができます。

⑭SAS 自動化説明.png

先ほどの説明にも書かれているように、一番関連性が大きいのは「種族値」なのですが、次いで「オスの割合」も同じくらい関連性が大きいようです。

4)その右にあるのは(3)で選択した変数(上の写真だと「種族値」を選択中)の普通ポケモン(0)、伝説ポケモン(1)別のヒストグラム(もしくは棒グラフ)を表示しています。

⑯SAS 自動化説明.png

「種族値」については伝説ポケモンの場合、普通ポケモンに比べて数値が大きい傾向にあります。「オスの割合」については伝説ポケモンの場合、欠損、に多くのデータが集まっていることが分かります。

尚、「オスの割合」とはその名の通りオスの割合のこと。第2世代以降ポケモンにオスメスが追加され、ポケモンによってオスメスの割合が異なるようです。また、性別不明なポケモンも存在し、欠損はそのことを示していると思われます。

5)最後、左下にあるのグラフは伝説ポケモンの確率が高くなる(低くなる)グループが文章で表現されています。

⑰SAS 自動化説明.png

一番確率の高いグループは『「種族値」が569以上で「オスの割合」が0、100または欠損』であり、94.37%(71匹中67匹)がそのグループに属するようです。かなり高い的中率ですね~。

このように「自動分析」の機能を使うことで、様々な観点で伝説ポケモンの特徴を捉えることができます。結果、伝説ポケモンは「種族値」が高く、かつ性別不明(もしくは異性がいない)という特徴があることが分かりました。やはり伝説ポケモンは能力が高くて謎めいたポケモンなんですねぇ~。(ポケモン図鑑のミュウツーも性別不明となっています。)

4.まとめ

ポケモンが好きな方からするとそりゃそうだ、という結果になったのかもしれませんが、ポケモン無知な筆者からすると、オスの割合が上位に食い込んでいたのが意外な結果でした。

また、この結果を違う観点でみるとすると、例えば伝説ポケモングループに属された普通ポケモンは誰かを見てみても面白そうです。

先ほど上げたグループ(「種族値」が569以上で「オスの割合」が0、100または欠損)で見てみると、普通ポケモンの4匹が伝説ポケモングループと判断されていました。

伝説ポケモングループに属された普通ポケモン
name type generation height_m percentage_male weight_kg 種族値
Metagross steel 3 1.6 . 550 700.00
Gallade psychic 4 1.6 100 52 618.00
Kangaskhan normal 1 2.2 0 80 590.00
Silvally normal 7 2.3 . 100.5 570

きっとこのポケモンはゲームの中でも伝説ポケモンに次いで希少なポケモンとして扱われているのではないでしょうか。(詳しい方がいたら聞いてみたいものです。)

ご覧いただきありがとうございました。