Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テレビゲームの売上分析と回帰・分類モデル作成 / Analyze sales of video...

hamham
September 18, 2019

テレビゲームの売上分析と回帰・分類モデル作成 / Analyze sales of video games and create regression and classification in machine learning

東大の松尾研究室が主催しているデータサイエンティスト育成講座に参加しました。
最終日のプレゼンで使ったスライドです。

・関連書籍
東京大学のデータサイエンティスト育成講座
https://amzn.to/3xTgijV

・利用したKaggleのデータセット
https://www.kaggle.com/gregorut/videogamesales/

・試行錯誤したノートブック
https://github.com/hamham1004/vgsales

・関連のQiita記事
機械学習初心者がテレビゲームの売上データセットを使って回帰モデル・分類モデルを作成してみた
https://qiita.com/hamham/items/eb1a1f276631bb9334aa

hamham

September 18, 2019
Tweet

More Decks by hamham

Other Decks in Technology

Transcript

  1. 1 ◼いまやってる業務 ⚫ 大手通信会社の基盤系プロジェクトを担当 ⚫ コールセンターの音声認識とか、決済システムの基盤増強とか、ショップの販促システムとか ◼機械学習の経験 ⚫ 業務では一切なし ⚫

    半年前にCourseraのMachine Learning講座を受けたり、書籍を読んだりしたので興味はあった ⚫ 高校数学はほぼ忘れている。大学数学は勉強した記憶すらない ◼Pythonでのコーディング経験 ⚫ 業務では一切なし ⚫ 今回の研修を受けることが決まって少し勉強したレベル ⚫ コーディングは苦手意識あり(この講座を受ける前は結構不安だった) はじめに
  2. 2 ◼ データセットの選び方 ⚫ 業務に関わるところで使えそうなデータセットを検討したが見当たらず ⚫ 自分が興味が持てそう、かつ扱いやすそうなデータセットを選ぼう → テレビゲームのデータセットに決定 ◼

    テレビゲームの売上データセット ⚫ Kaggleからダウンロード ⚫ https://www.kaggle.com/gregorut/videogamesales/ ⚫ 1980年から2016年に発売されたテレビゲームが売上順に並んでいる ⚫ 16598タイトル、11カラム(タイトル、対象ハード、発売年、ジャンル、メーカー、地域ごとの売上本数など) 今回使ったデータセット ・グローバル売上1位はWii Sportsで8300万本。2位がファミコンのマリオブラザーズで4000万本。 ・なんと売上Top15を任天堂が独占!! ・16位はKinect Adventures!(日本ではほぼ売れてない) ・17位がGTA5(PS3版)だが、他のハードのものを合算すると5600万本で2位相当になる
  3. 3 ◼やりたいこと ⚫ 回帰モデルを作って評価する • 海外販売本数、メーカー、ジャンルなどの説明変数から、「日本における販売本数」を予測する ⚫ 分類モデルを作って評価する • 各地の販売本数、ジャンル、ハードなどの説明変数から、「任天堂が発売したゲーム」を当てる

    ◼使った環境 ⚫ Google Colaboratoryを使用 →環境構築不要で好きなだけ使えて便利! ◼最初にやったこと ⚫ PandasのDataFrameにCSVを読み込み ⚫ データの確認(head()、describe()、corr()、info()など・・・) ⚫ データの前処理 • N/Aの除外(16598→16291タイトルに) • 対象を日本で発売されたものに限定(16291→6084タイトルに) • 発売年を年代でまとめる(”2003”だったら”2000s”といったカテゴリ値に) 目標と実践方法
  4. 5 ◼ 試したこと ⚫ one-hotエンコード • ジャンルは12個だからまだいいけど、販売メーカーは303個・・・(モデル作るには多すぎかも) ⚫ モデル作成 •

    全てを説明変数として使って重回帰(ボロボロ) • 説明変数を相関が0.1以上のもの15個程度に絞る(北米売上とか、任天堂とか、スクエニとか、RPGとか) • テスト分割サイズを変えてみる(0.2とか0.3とか) • 決定木やリッジ回帰も試す(リッジ回帰がR2スコア高めだが、重回帰とそれほど差がない) ◼ 評価 ⚫ 最終的に重回帰でモデル作成して評価 日本における販売本数予測(回帰モデル) RMSEは0.3501と低くてまずまず 決定係数はイマイチ
  5. 6 ◼ 試したこと ⚫ 分析 • 任天堂のゲームタイトル比率を確認。約1割。 ⚫ one-hotエンコードしてモデル作成 ⚫

    Confusion MatrixとF1スコアで確認 ⚫ 元データの絞り込み • 任天堂タイトルは、任天堂ハードでしか出てないはずので、データを絞り込み • これにより、全タイトル数6084→2192まで絞られ、任天堂タイトル比率が約3割になった ◼ 評価 ⚫ ロジスティック回帰でモデル作成して評価 任天堂が発売したゲームを当てる(分類モデル) 正解率は0.9以上で意外とよい F1値悪い。全体的にTrue-Negativeが多いデー タだから正答率高いだけだった・・ 正解率はやや低下 F1値は多少上がった
  6. 7 ◼ Amazon Machine Learningとは? ⚫ S3にデータセットを入れて、AWSのコンソールからGUIポチポチでモデル作成&評価をしてくれるサービス ◼ 日本における販売本数予測(回帰モデル) ◼

    任天堂が発売したゲームを当てる(分類モデル) ◼ 結論 ⚫ ほぼノンチューニングでもかなり精度よい! →パラメータいじればもっとよくなるはず (おまけ)Amazon Machine Learningを試してみた RMSEは0.3762とかなり低くよい値。 分布も真ん中によっていてかなりよさそう F1スコアは0.878とかなりよい値
  7. 8 ◼ 感想 ⚫ 面白かった。Competitionに取り組んでるときは熱中してしまった。 ⚫ 数学・統計の詳しい部分はよくわからないけど、ライブラリ使ってデータの可視化やモデル作成はできるようになってよかった。 ⚫ ちょっとした加工やグラフ作ったりはやっぱりExcelが便利 •

    今回はExcel使わない縛りでがんばった ◼ 今後取り組みたいこと ⚫ Python・Numpy・Pandasをもう少し素早く扱えるようになりたい • データの加工処理を都度ググりながらやってるので・・・ ⚫ 自然言語処理とかやってみたい • 今回だと「タイトルに”mario”や”pokemon”が入ってれば売れやすい」とか使えそう ◼ 試行錯誤したノートブック ⚫ ダウンロードは以下から ⚫ https://github.com/hamham1004/vgsales さいごに