【データ分析】予測コンペに挑戦してみました【スプラトゥーン2】

はじめに

 コグラフのデータチームがコンペに取り組んだ様子は別記事で書いていただいたので、本記事ではもう少し具体的に、本コンペで取り組んだことを振り返りながら「予測コンペをどういう流れで進めていくのか」を説明していきたいと思います。

「コンペには興味あるけど、具体的にどんなことをするの・・・?」
「何をどういう風に進めればいいの・・・?」


と思っている方は、この記事を参考にぜひご自身でもやってみて下さい。

 また、今回説明する予測コンペの流れは、実際のデータ分析業務での流れとも共通しています。そのため、これを理解すれば実業務もスムーズにこなせるようになると思います。業務未経験でデータ分析に興味がある方にも、ぜひ読んでいただけると嬉しいです。

実施概要

 今回取り組んだコンペの概要です。

媒体
https://prob.space/

題材
https://prob.space/competitions/game_winner

内容
スプラトゥーン2(オンライン対戦ゲーム)の勝敗を予測するコンペ

利用する主なデータ
・対戦モード
・対戦ステージ
・ユーザの使用ブキ
・ユーザのレベル
等々...

データの詳細は、ぜひ上記URLからコンペの概要を確認して、実際に見てみて下さい。

本記事について

 コンペに参加してデータを取得してからやることは、大きく以下の3つのステップに分かれます。

1. EDA
  データをよく見てみる
2. 仮説検討
  データから考えてみる
3. 実装、検証
  考えたことを検証する

 上記3つのステップを何度も繰り返していくのがコンペの基本の流れになります。
今回の記事では、各ステップについて実際にやった事と照らし合わせながら順に説明していきます。

それでは、やっていきます。

コンペの全体的な流れ

1. EDA 
 データを手に入れたらまず初めにやるべきことが、「ExploratoryDataAnalysis(探索的データ分析)」(略してEDA)です。 

与えられたデータをもとに、どの様な特徴があるか、他の変数とどの様な関わりがあるかなどを「探索的」に把握していきます。
 とはいえ、やりすぎても時間が無くなってしまうので、その辺りはスケジュールとも相談です。

 ちなみに今回のコンペでは、以下のような最低限の傾向を確認するのに留めました。
・各列の欠損率やカテゴリ列ごとの種類数の確認
・数値列ごとの基本統計量の確認
・使用されているブキの比率
・チームごとのレベルの合計と勝率の関係性
等々...

 また、pandas-profilingを使うと上記のような特徴や傾向の把握が一気にできるのでおススメです。
EDAをやるためには、Pythonを使ったエンジニアリング技術が必要となりますが、これはそういった技術が無い方でも簡単に扱うことができます。

2. 仮説、特徴量検討
 EDAを実施して今回扱うデータについて把握出来たら、次はその知見を基にどの様な条件が目的変数の予測精度を向上させるかについての仮説を検討していきます。
 ここで検討する仮説を基にして、予測に使う機械学習モデルや、そのモデルで使う特徴量を作成していく為、とても重要なステップです。

 今回のコンペの目的変数(予測する内容)はどちらのチームが勝利するかなので、~という条件が、チームの勝敗に影響を及ぼすという仮説を検討していくことになります。

 今回はスプラトゥーンを実際にプレイした経験があった為、EDAによって得たデータの知見と、ドメイン知識も活用して以下のような仮説を検討しました。

今回検討した仮説
・モード毎にモデルを作成したら予測精度が上がるのではないか
・チームごとのチャージャー、シューターの人数差があると勝率に影響して くるのではないか
・面積の広いステージはより塗りブキが勝ちやすい傾向にあるのではないか
・曜日、時間帯を特徴量として追加したら、予測精度が上がるのではないか

等々...

次はいよいよ実装、検証です。

3. 実装、検証
 前のステップで立てた仮説を、特徴量として加工した上で予測モデルに組み込んで(実装)、予測精度が実際に向上するかどうかを検証していきます。

今回はチームで作業を進めていたので、他のメンバーにも共有できるよう、以下のようなスプレッドシートを作成しました。

キャプチャ

 上記結果をもとに、実装した新たな変数は予測結果に影響を及ぼす(予測精度を向上させる)ものだったか、そうでなかったらそれは何故か、もっと別の表現方法が無いか...など更に検討していきます。

 以上、実装、検証までのステップが終了したら、再度EDAに戻って新たな関係性を探したり、初めの検証結果をもとにした新たな仮説を検討したり...
上記を繰り返してドンドン新しいモデルを作って行きます。

今回の結果

 上記ステップを何度も繰り返し、コンペの最終結果は・・・

銅メダルを獲得することが出来ました!!
(順位:
93位 最終スコア:0.552388)

感想

 上でも述べたように、題材がスプラトゥーンということで、実際に自分にプレイ経験があり、ドメイン知識のあるものだったので仮説を検討しやすく、また、その仮説を実際にデータで検証して、正解率という目に見える形でフィードバックが得られるのがとても楽しく、穏やかな気持ちで取り組むことが出来ました。

 また、コンペに取り組むことのメリットとして、上記のような実際のデータ分析の流れを実践できることに加え、コンペに参加している他のユーザと、どの様に取り組んでいるか、どんな問題が発生しそうかなど話し合うことも出来ます。
 このため、データ分析やってみたい!という方はコンペに参加することで自分の手を動かす勉強にもなり、他の経験者の方々がどのような方針で進めているのかを知る、知識を増やす機会にもなります。

 この記事で興味を持っていただけたら是非、皆さんも予測コンペに挑戦してみてください。

この記事が気に入ったらサポートをしてみませんか?