統計情報からサポートチャンピオンのクラスタリングと有利不利のグラフを作成してみた

結論


統計をコネコネして最終的に今回得られた結果がこれ。
ただし情報元のサンプル数が少ないため、より正しい図を書くためにはサンプルの拡大が必要(でもお金と時間がかかるので尻込みしている)。
また統計解析の結果は見るものによって大きく解釈が異なるので、単一の解には程遠いし今の段階ではなんらかのヒントを示しているだけの段階。
平たく言うと、現段階の図はあまり真に受けないでください。

発端

slackで以下のtweetが回ってきたのがきっかけ。

観点として非常に面白いと思った(あと絵が素晴らしい!)。一方で統計的な勝敗情報(winrate)によりこのグラフを書いてみるとどうなるかと思った。
そこで、ゲームの勝敗結果のデータを使って上と同じようなグラフを作ってみることにした。

前提条件

同じタイプである、と分類できるほどタイプが似通っているチャンピオンは各チャンピオンに対するwinrateも似通ってくるはずである、という前提のもとクラスタ分析を行う。

例:
LeonaとBraumが同タイプのチャンピオンならば、Poke系Supportに対してはwinrateが低くInitiate系Supportに対してはwinrateが高い、といった同じ傾向のwinrateを示すはず。

入力(情報ソース)

Champion.ggのサポートチャンピオンのマッチアップ勝率
本当はRiotのAPIを直接叩いて一から統計データを構築するべきだが時間もお金もないのである程度集計されているchampion.ggを使用

出力(目指すアウトプット)

サポートチャンピオンのクラスタリング
似ているチャンピオンをはっきりさせ、どういった群のチャンピオンたちに対して有利/不利であるかを可視化する。

過程

1. champion.ggのページをスクレイピング、マッチアップ表を作成

コードは bigwheel/scrape-championgg-support-matchup
出来上がった表をgoogle spreadsheetに貼ったのがこれ https://docs.google.com/spreadsheets/d/1RmWnlCjvBqQvZIqdaANBEDo8vcIoUabL6Gt1LAvBQ4U/edit?usp=sharing

2. クラスター分析を使って各チャンプの勝率表からチャンピオンタイプを腑分け

データは出ているのであとは数学的手法で分類するだけ。こういった処理をクラスター分析というらしい。
クラスター分析にもいくつか手法があるらしいが、今回は一番シンプルそうな階層的クラスター分析を行う。

2.1 勝率テーブルから直接ユークリッド距離を算出して階層的クラスター分析

ツリーの近いところのものほど似ている(はず)という分析。
それほど悪くない分析かもしれないが、うまく言っているようにも見えない(特にLeonaとZyraが隣り合っていたりするところは明らかに直感に反する)。
もっともこれは想定内。勝率をそのままユークリッド距離の算出に利用しているため全体勝率が同じ程度のものは必然近くなってしまう(LeonaとZyraは勝率11位と12位で隣り合っている)。

全体勝率はそのときどきの他ロールのメタ(例えば他レーンでtankがはやっていないなら必然supportではtankを使うと勝ちやすくなる)やアイテムの強弱に影響されるため、
クラスター分析では全体勝率の影響を排除したい(各チャンピオンのタイプ分けという目的に対してノイズになるため)。

2.2 個別の勝率から全体勝率を差し引いたのち、直接ユークリッド距離を算出して階層的クラスター分析


こちらは結構想定通りのグラフが出てきている。
特にBraum, Nautilus, Leona, Alistarが同じ塊になっているところなどはドンピシャといっていい。
ただ、まだ少し直感に反するところがあるので(threshとsonaが隣り合っているところなど)もう少し分析手法を試行錯誤してみる。

個別勝率から全体勝率を差し引いたことで全体勝率の影響を弱めることには成功したはずだが、もうちょっと統計学的にまともな手法があったはず。
たしか偏差,標準偏差,分散とかがそれらに用いられた気がする・・・・。

2.3 勝率の偏差値を出したのち、直接ユークリッド距離を算出して階層的クラスター分析

よくなったような悪くなったような。分散で割ることによりサンプル数が少なくてピーキーな勝率になっていたtahm kenchがtankクラスタに吸収されたのは良くなった点だが、
Brand/Vel'kozの殺意100%クラスタの隣にsorakaがいるのは間違っている気がする。

ただ、これ以上により高い精度で分析するには現在データ元のサンプル数が少ないため(チャンピオン同士によっては100回も当たってないデータがある)、
クラスタリングの試行はこれぐらいにして、次はこれらのクラスタリングの解釈とそれぞれの相性関係を考察する。

クラスタ結果考察


上記の樹形図をだいたい5.4ぐらいの高さでぶった切って、以下のようにチャンピオンたちを分類する。

  1. バーストメイジA(バーストA)
    • Annie
    • Zyra
  2. ピール寄りユーティリティ(ピール弱)
    • Lulu
    • Taric
  3. その他(その他)
    • Lux
    • Sona
    • Thresh
    • Blitzcrank
    • Karma
    • Nami
  4. ピールガチ勢(ピール強)
    • Zilean
    • Morgana
    • Bard
    • Janna
  5. バーストメイジB(バーストB)
    • Soraka
    • Brand
    • Velkoz
  6. CCタンク(CCタンク)

これらのクラスタごとにwinrateの偏差値の平均値を取った表がこちら

さらにこれから強弱関係が際立っているもののみを抽出した有向グラフがこれ。
矢印の元のクラスタは矢印の先のクラスタに対して優位に立っているという意味。

ここから図に起こしたらこんな感じ
https://drive.google.com/file/d/0Bx1bwUKdICdQT2EzQVl2VWdyUkU/view?usp=sharing


参考資料

基本的に各ページを斜め読みしかしていないので、正しい知識を付けたいのなら直接各ページへ飛んで読んだほうがよい。
(余談だけど、このような素晴らしい資料がネット上に転がっているなんてすごい時代になったもんだなあ)