Codexaの記事を参考にゲームソフトの売行きをVARISTAで予測してみた


今回は、ゲームソフトの売れ行きを予測するモデルをVARISTAで生成してみたいと思います。
下記のCodexaの記事を参考にしてVARISTAで予測モデルの構築までやってみました。
記事ではAWS SageMakerを使っていますがVARISTAでやってみます。

[ゲームソフトの売行きをXGBoostで予測してみた【Amazon SageMaker ノートブック＋モデル訓練＋モデルホスティングまで】](https://www.codexa.net/amazon-sagamaker-xgboost-game-sales-predictions/)

ただ、若干データの整形でコードを書く必要があったので、そこだけGoogle Colabratoryで行っています。
（一応、　Pythonはかじったくらいの知識レベルです。）

# 所要時間
実際の操作は10分程度
学習はレベル１で１、２分、レベル３で１．５時間程度

# 発生する費用
VARISTAのFreeアカウントであれば無料

# データのダウンロード

Kaggleの下記ページからダウンロードします。
[Video Game Sales with Ratings](https://www.kaggle.com/rush4ratio/video-game-sales-with-ratings/data)

#Kaggleに記載されていたデータの説明
このデータセットはMetacriticのスクレイピングでしたものです。
残念ながら、Metacriticはプラットフォームのサブセットをカバーしているだけなので、集計データが不足しています。
また、一部のゲームにおいて、以下で説明する変数に欠損があります。

Critic_score - Metacriticのスタッフが集計した批評家スコアです。
Critic_count - Critic_score（批評家スコア）の算出に使用した批評家の数。
User_score - Metacriticの購読者によるスコア
Usercount - ユーザースコアを投票したユーザーの数
Developer - ゲーム開発会社
Rating - ESRBの評価

と言うわけで、結構**欠損があったり全てのゲームの販売データではないという点だけご留意ください。**

# データの加工

今回は、参考にした記事の通り若干データの加工をします。
販売数100万件以上をヒットとして定義しているので、100万件以上をYes、それ以外はNoとして新しく列を追加します。

ローカルに環境を作るのがあまり好きではないので、Google Colaboratoryでこんなコードをを書いてデータを加工します。

[Colaboratory - Google Colab](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)

```python
import pandas as pd
filename = './sample_data/kaggle/Video_Games_Sales_as_at_22_Dec_2016.csv'
data = pd.read_csv(filename)                               
# ターゲットを設定
# Global_Salesで1（100万本）以上の売上を基準としてyを作成
data['y'] = 'no'
data.iloc[data['Global_Sales'] > 1, 'y'] = 'yes
pd.set_option('display.max_rows', 20)
#データを表示
data
#加工したデータを新しいCSVとして保存
data.to_csv('sample_data/kaggle/Add_y_Column_Video_Games_Sales.csv')
```

一番右の列に**y**が追加されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/29fa5357-3f08-27a7-8a30-d2792b7ce449.png)

上記コードを実行すると、「Add_y_Column_Video_Games_Sales.csv」というファイルが生成されますので、そちらをダウンロードします。

#VARISTAにデータのアップロード

[VARISTAはこちら](https://www.varista.ai/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/7d342eb5-c71e-1194-1d8a-d956ed9ee613.png)


VARISTAで新しいプロジェクトを作成して、作成した**Add_y_Column_Video_Games_Sales.csv**をアップロードします。
今回、予測する列は**y**を選択します。

#データの確認

データの概要はこのようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/1d38c62f-e71b-ff93-9f75-b53d1f175f4f.png)

リリース本数は2008-2010がピークのようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/2fc5c43b-433c-08e9-2e44-c17a85c58ec5.png)

プラットフォームはPS2, DSが多く、その次にPS3が来ています。
スマホは含まれていないようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/f8123474-1959-e325-6dc5-0009ca43fd19.png)

ジャンルの分布はこのようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/cd107f2a-1c03-bcee-97bf-c0467cb6ce8f.png)

Publishしている本数はEAがトップのようです。
日本のゲーム会社が多く入っているのは嬉しい限りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/e0e31457-fb95-5f02-f2e5-4a7a2aa4f6f3.png)

肝心のヒットしたかどうかについては、2,057 / 16,719本となかなかの狭き門です。
私も以前スマホゲーム開発をしていましたがミリオンヒットは資本力があるか運ゲーという印象でした。ましてや、こちらのデータはコンシューマー機なので大変ですね。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/48d1d864-3bc6-e161-d0df-013d7756c52f.png)

#相関を見る

yes (黄色)：ミリオンヒット以上
no (水色)：ミリオンヒット未達

Platformは、[NES](https://ja.wikipedia.org/wiki/Nintendo_Entertainment_System)と[GB](https://ja.wikipedia.org/wiki/%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%9C%E3%83%BC%E3%82%A4)がミリオンヒット率が高いです。
これらのゲーム機が流行っていた時代は他にそこまで選択肢がなかったからでしょうか。。？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/deb476da-cf2e-1ba8-ae86-731860a0ccc4.png)

Publisher / Developer
どうしても日本人なのでNintendoやSquareEnixなどに目が行ってしまいますが、このデータに載っている開発した全てのタイトルがミリオンヒットというのはすごいですね。
このグラフから勝手に想像しますが、任天堂は企画開発が得意で、他社が開発したゲームの販売はあまり得意ではないのかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/698ad574-39db-4936-fc11-1999b5b33c1b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/4720b76f-8c06-6292-13c3-faa6052a5c9a.png)

PublisherとDeveloperの違いは、Publisherはゲームを販売提供する企業で、Developerはゲームを開発する企業です。
DeveloperがPublisherを兼ねていることもあります。

Critic_score & Critic_count
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/ca35f58d-a314-fe42-91a4-db4eb9944f2f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/b170299c-a6c9-0051-aea0-061414894066.png)


User_score
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/ca1b21f9-4fae-c661-d1e1-b79fe2a33804.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/acaae99f-1e8d-d786-a4e2-aacf60bf56c6.png)


#学習

学習は**レベル３**で行いました。
細かいパラメータの設定は、タイタニック以降こんな感じでやっています。
レベル1学習は数分で完了しますが、さすがにこの設定にすると探索するパラメタの数がおおいのか１時間ちょいかかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/3e32ee3f-5ef2-7173-aae2-2673a6ac1f72.png)

あと、データセットから予測列に直接関係してしまう列（Unnamed0, NA_Sales, EU_Sales, JP_Sales, Other_Sales, Global_Sales）はオフにして学習しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/89352c6c-b315-3e8e-52bb-474723d94278.png)


#結果の確認

スコアを確認するとこのような感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/b042b479-b1a0-5393-5e56-18c9612faa57.png)

混同行列は、こんな感じで表示されています。103件を検証のテストデータとして利用して、82件は的中して、21件はヒットしないと予測したようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/5281a180-7f45-2c4d-5f47-20a2d02cd66e.png)

あと、今回は学習データに偏りがあったと怒られまいたね。
こればかりは、アンダーサンプリングなどをしてデータ量を調整するしかないですが、実際にやってどうなるか試したいところです。
また時間をつくって試してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/771091dc-de6a-a363-83ed-2fab99d340a7.png)

Yes / Noと判断する値も自動調整してくれるようです。
このケースでは、0.222を超えているとYESと判断するようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15496/c9ebf56a-a849-cadb-5724-107f2c845906.png)

実際にテストデータがないので、本来であれば学習データからピックアップして作成しますが、
今回は簡易的にみてみたので、VARISTAが自動で分割したデータを使って検証してみました。

もし、この記事を読んでVARISTA使ってみようと思った人は是非以下のリンクからお願いします！
私にもあなたにも7$のクレジットがたまります！m(_ _)m

[https://console.varista.ai/welcome/jamaica-draft-coach-cup-blend](https://console.varista.ai/welcome/jamaica-draft-coach-cup-blend)

---
参考記事
[ゲームソフトの売行きをXGBoostで予測してみた【Amazon SageMaker ノートブック＋モデル訓練＋モデルホスティングまで】](https://www.codexa.net/amazon-sagamaker-xgboost-game-sales-predictions/)