Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
機械学習を用いず数学でゲーム内の需要予測をする
Search
nessie
September 07, 2018
0
4k
機械学習を用いず数学でゲーム内の需要予測をする
9/7のbuilderscon 2018で使用したスライドになります
nessie
September 07, 2018
Tweet
Share
More Decks by nessie
See All by nessie
数学徒はどこへ行くのか
nessie
0
1.2k
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
The Cost Of JavaScript in 2023
addyosmani
46
7.1k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Navigating Team Friction
lara
183
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
4 Signs Your Business is Dying
shpigford
182
21k
RailsConf 2023
tenderlove
29
960
Producing Creativity
orderedlist
PRO
343
39k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
490
Transcript
機械学習を用いず 数学でゲーム内の 需要予測をする 2018/9/7 builderscon 2018 @nessie_sesein
機械学習を用いず 数学でゲーム内の 需要予測をする 2018/9/7 builderscon 2018 @nessie_sesein
機械学習を用いず 数学でゲーム内の 需要予測をする 2018/9/7 builderscon 2018 @nessie_sesein に対してアレルギー反応と か出ない人が集まっている という仮定の下で話をして
いきます この場にいる人は
数学とありますが、 高校レベルの数学を理解 していれば問題ありません 統計等の知識も不要です 前提知識
自己紹介 • 禰寝崇之(あだ名は「ねっしー」) • 東京工業大学大学院理工学研究科数学専攻 修 士課程修了 • 専門は解析的整数論、特に篩法を用いたPrime Gapsについて
• 新卒で面白法人カヤックに入社、ソーシャル ゲーム事業部でレベルデザイナーを経験した 後、事業部を横断して分析する『ねし部』を 設立して現在は分析業務がメイン • 趣味で絵を描いたり
話すこと 1.分析の重要性と問題 2.数学について 3.ゲーム内の需要予測
話すこと 1.分析の重要性と問題 2.数学について 3.ゲーム内の需要予測 心 構 え 的 な 話
実 践 的 な 話
話すこと 1.分析の重要性と問題 2.数学について 3.ゲーム内の需要予測
4つの分析 記述的分析 • 何が起こった のかの可視化 診断的分析 • なぜ起こったか を明らかにする 予測的分析
• これから何が 起こるかを予 測する 処方的分析 • 結果を最適化 するための手 段を導く Gartner “IT Glossary_ Predictive Analytics” http://www.gartner.com/it-glossary/predictive-analytics
4つの分析 記述的分析 • 何が起こった のかの可視化 診断的分析 • なぜ起こったか を明らかにする 予測的分析
• これから何が 起こるかを予 測する 処方的分析 • 結果を最適化 するための手 段を導く Gartner “IT Glossary_ Predictive Analytics” http://www.gartner.com/it-glossary/predictive-analytics 過去や現在 を知る 因果関係を 見つける 未来を知る 未来をコント ロールする
4つの分析 記述的分析 • 何が起こった のかの可視化 診断的分析 • なぜ起こったか を明らかにする 予測的分析
• これから何が 起こるかを予 測する 処方的分析 • 結果を最適化 するための手 段を導く Gartner “IT Glossary_ Predictive Analytics” http://www.gartner.com/it-glossary/predictive-analytics 過去や現在 を知る 因果関係を 見つける 未来を知る 未来をコント ロールする 分析の究極的目標は 未来を知ること!
未来がわかれば お金持ちになれる
現実的な話 分析は「数%の改善」のために地道 に数字と向き合うことが多い → 短期的には効果が見えづらいが、 この「数%」が長期的には効いてく る!
例えば 月に2%の成長をする → 1ヶ月後には1.02倍になる
例えば 月に2%の成長をする → 1ヶ月後には1.02倍になる ︙ → 1年後には1.0212≒1.43倍になる
例えば 月に2%の成長をする → 1ヶ月後には1.02倍になる ︙ → 1年後には1.0212≒1.43倍になる ︙ → 2年後には1.0224≒2.03倍になる
分析の重要性 •長期運用するサービスになればなる ほど、分析の重要性が増す •分析ブームを後押しするように、分 析のための様々なツール等が登場 • BIツールによる可視化 • 機械学習による未来予測 毎年叫ばれる
4つの分析 記述的分析 • 何が起こった のかの可視化 診断的分析 • なぜ起こったか を明らかにする 予測的分析
• これから何が 起こるかを予 測する 処方的分析 • 結果を最適化 するための手 段を導く Gartner “IT Glossary_ Predictive Analytics” http://www.gartner.com/it-glossary/predictive-analytics 過去や現在 を知る 因果関係を 見つける 未来を知る 未来をコント ロールする
4つの分析 記述的分析 • 何が起こった のかの可視化 診断的分析 • なぜ起こったか を明らかにする 予測的分析
• これから何が 起こるかを予 測する 処方的分析 • 結果を最適化 するための手 段を導く Gartner “IT Glossary_ Predictive Analytics” http://www.gartner.com/it-glossary/predictive-analytics 過去や現在 を知る 因果関係を 見つける 未来を知る 未来をコント ロールする BIツール 機械学習
4つの分析 記述的分析 • 何が起こった のかの可視化 診断的分析 • なぜ起こったか を明らかにする 予測的分析
• これから何が 起こるかを予 測する 処方的分析 • 結果を最適化 するための手 段を導く Gartner “IT Glossary_ Predictive Analytics” http://www.gartner.com/it-glossary/predictive-analytics 過去や現在 を知る 因果関係を 見つける 未来を知る 未来をコント ロールする BIツール 機械学習 あれ?? ここは?
分析の問題点 たとえ未来予測ができても、人間が 因果関係を履き違えると、適切なア クションが取れない 例:アイスの売上と溺死事故には相 関がある → 溺死を減らすためにアイスの不買 運動をするのは正しいのか?
分析の問題点 たとえ未来予測ができても、人間が 因果関係を履き違えると、適切なア クションが取れない 例:アイスの売上と溺死事故には相 関がある → 溺死を減らすためにアイスの不買 運動をするのは正しいのか? データは解釈まで
与えてくれない!!
Q.じゃあ正しくデータを 解釈できるようになるた めにはどうすればいい?
Q.じゃあ正しくデータを 解釈できるようになるた めにはどうすればいい? A.数学しようぜ
話すこと 1.分析の重要性と問題 2.数学について 3.ゲーム内の需要予測
定義 ここでの数学は基本的に純粋数学を 指すものとする (統計学や機械学習は応用数学) → 純粋数学の見方・考え方を理解し てもらうことが目標
純粋と応用の違い 純粋数学 道具そのものの性質を 知ることに興味がある 応用数学 道具を実際に使うこと に興味がある
世間の数学者に対する認識 •数字に強い •計算が得意
世間の数学者に対する認識 •数字に強い •計算が得意
参考 Basic Number Theory Andre Weil
純粋数学って何やってるの?
純粋数学って何やってるの? 問題解決 理論構築
純粋数学って何やってるの? •前提条件(公理系・定義)は何か? •そこから何が成り立つのか?を言語 化・記号化して紐解いていく •論理に飛躍があると死ぬ •「これ、成り立つんじゃないか なぁ」って思っても、それを証明す るまでは絶対に正しいと信じない → 認知バイアスに引っかからない
純粋数学って何やってるの? 数学的なジョーク(Wikipedia)
私は問題解決のプロ
私は問題解決のプロ
私は問題解決のプロ
私は問題解決のプロ
私は問題解決のプロ
私は問題解決のプロ すごい改善 している!!!
数学者がやっていること
数学者がやっていること なぜの追求 数値と言語の 行き来
このグラフはどう伸びる?
このグラフはどう伸びる?
このグラフはどう伸びる?
このグラフはどう伸びる? この条件だけ では答えられない
なぜの追求 赤いグラフを想像した人は「なぜ赤 いグラフを想像したのか?」と考え てみる
なぜの追求 赤いグラフを想像した人は「なぜ赤 いグラフを想像したのか?」と考え てみる → 曖昧な理由(主観的要素)を排除 し、客観的な正しさを求めるのが数 学の姿勢
なぜの追求 赤いグラフを想像した人は「なぜ赤 いグラフを想像したのか?」と考え てみる → 曖昧な理由(主観的要素)を排除 し、客観的な正しさを求めるのが数 学の姿勢 思考そのものにはどうしても 主観的要素が入ってしまう
↓ それを数値化することで 客観性を担保する
なぜの追求 赤いグラフを想像した人は「なぜ赤 いグラフを想像したのか?」と考え てみる → 曖昧な理由(主観的要素)を排除 し、客観的な正しさを求めるのが数 学の姿勢 思考そのものにはどうしても 主観的要素が入ってしまう
↓ それを数値化することで 客観性を担保する 数値と言語の行き来
分析に還元すると…… 正しく分析するには、いかにして主 観に基づく認知バイアスを取り除く かが重要 そのために常々「なぜの追求」と 「数値と言語の行き来」を意識する のが大切
話すこと 1.分析の重要性と問題 2.数学について 3.ゲーム内の需要予測
ソシャゲ運営あるある 「新規ガチャ、めっちゃ売れた ぞ!! これなら次、復刻したときも かなりの売上を期待できそうだぁあ ああああああああ!!!!」
ソシャゲ運営あるある 「新規ガチャ、めっちゃ売れた ぞ!! これなら次、復刻したときも かなりの売上を期待できそうだぁあ ああああああああ!!!!」 → 次の復刻 「あれ、全然売れてなくね?」
売上構成がこんなだったら…… 課金者上位 10% 残り 90% 課金者上位10%は全員 新規ガチャアイテムを カンストまで手に入れた 次の売上として期待できるのは •
残り90% • 新規層 であり、今回回した課金者上位 10%は復刻してももう回さない
需要予測をしたい! 以下、カヤックのソーシャルゲーム 『ぼくらの甲子園!ポケット』(以 下、ぼくポケ)で行った需要予測の 方法について説明します 間もなく4周年を迎える タイトルです
流れ 1. 前提条件とゴールの設定 2. データを眺める 3. 仮説作成 4. 仮説を数値に落とし込む 5.
例外処理・微調整
1. 前提条件とゴールの設定 ゴール 現在のデータから次回のガチャがど れくらい回るのかを予測する 前提 長期的な予測はしない(できない) 厳密解を求めようとしない
2. データを眺める ソーシャルゲームユーザーはかなり の数がいる → 統計的に、どれくらいのサンプル 数を見れば十分かは求められる
2. データを眺める ソーシャルゲームユーザーはかなり の数がいる → 統計的に、どれくらいのサンプル 数を見れば十分かは求められる → でも高々有限なんだし、見れる限 り見ればいいじゃん
3. 仮説作成 ここではドメイン知識(=ぼくポケ の知識)が重要になってくる 例えば、 •ガチャの仕組み •どんなユーザーがいるのか •どのガチャが人気なのか
ぼくポケのガチャ スキルレベルを上げること が目的 ★5が2個、★5と★3が合わ せて32個あればレベル6を作 ることができる さらに★5改シリーズだと64 個でレベル7を作ることが可 能 闘魂化して
こめる ★3 ガンナーバット【試作】 スキル「チェインショット」 レベル1 スロット空き3 ★5 ガンナーバット スキル「チェインショット」 レベル1 スロット空き5 ★ガンナーバット スキル「チェインショット」 レベル2 スロット空き4 CAP解放!
3. 仮説作成 • ガチャを回すユーザーは以下の2通りに分けられる • 一気にカンスト近くまで回す熱量の高いユーザー • 手持ちのゲーム通貨で無理せずスキルレベルを上げるユー ザー •
試合にたくさん参加するユーザーの方が熱量が高く、ガ チャをよく回す • ユーザーがガチャをやめるタイミングは手持ちのゲーム 内通貨がなくなったか、目標としていたスキルレベルに 達した瞬間 • カンストしたら以降はガチャを回さなくなる • ユーザーによってはレベル5で満足してそれ以降回さなく なる • 別の高レベルのアイテムを持っているのであれば、そも そも回さない etc..
4. 仮説を数値に落とし込む •ゴールと相関関係が強くありそうな ものから順番に処理し、擬似相関が あったり、割合で処理できそうなも のはどんどんまとめる → なるべく少ない要素で予測式を導 きたい
20万行あるデータいじると CPUの負荷がヤバイ
4. 仮説を数値に落とし込む • いきなりフィットすることはないので、 最初は最小値と最大値が合うような一 次式を組み立てる → 端点さえ合っていれば、中身はあとで いくらでも調整できる →
スキルレベル毎の所持人数をカウント して、それに重みをつけた一次式を調整 する
4. 仮説を数値に落とし込む 【上級者向け】 •あらかじめ特定のグルーピング分け (例えば人気のあるガチャグループ と、そうでないグループ)をして、 全体では相関はないけど、そのグ ループ内で相関が強く出る式を組み 立てても良い
4. 仮説を数値に落とし込む 【上級者向け】 •あらかじめ特定のグルーピング分け (例えば人気のあるガチャグループ と、そうでないグループ)をして、 全体では相関はないけど、そのグ ループ内で相関が強く出る式を組み 立てても良い →
グルーピングを数値で表現できれ ばif文が書ける!
5. 例外処理・微調整 土台となる式ができても、2,3割ぐら いは実際の値からかけ離れているこ とがほとんど
5. 例外処理・微調整 土台となる式ができても、2,3割ぐら いは実際の値からかけ離れているこ とがほとんど → どのデータがズレているのかひた すら観測する
5. 例外処理・微調整 土台となる式ができても、2,3割ぐら いは実際の値からかけ離れているこ とがほとんど → どのデータがズレているのかひた すら観測する → なぜズレているのかの言語化がで
きると、解決策が見つかることがほ とんど
5. 例外処理・微調整 例 データ数が少ないと特にデータがブ レやすい(少数の法則) → データが一定数に達しないものは、 そもそも予測の対象から外したり、 影響が小さくなるような関数を挟み 込む
流れ 1. 前提条件とゴールの設定 2. データを眺める 3. 仮説作成 4. 仮説を数値に落とし込む 5.
例外処理・微調整
流れ 1. 前提条件とゴールの設定 2. データを眺める 3. 仮説作成 4. 仮説を数値に落とし込む 5.
例外処理・微調整 ゴールと相関のある数字を見つけて 例外をひたすら潰していく作業
人気の法則がわかる 改シリーズ(CAP解放)を出すとき、 需要予測ができるようになったおか げで「スキルレベルが4以上を所持し ているユーザー」を増やせば売上に 大きく影響を与えることがわかった
人気の法則がわかる ガンナーシリーズ 改を出す前に該当ユーザーを増やす 施策(事前のガチャで★5出現率上げ る)を実施
人気の法則がわかる ガンナーシリーズ 改を出す前に該当ユーザーを増やす 施策(事前のガチャで★5出現率上げ る)を実施 → 改登場時の売上が初登場の売上の 144% まで成長!
欠点
欠点 自分以外誰も 管理できない
機械学習はどうなの?
機械学習はどうなの? 挑戦しました!!
機械学習はどうなの? 挑戦しました!! 全然うまくいきません でした!!!
なぜうまくいかない? •元々のデータベースが機械学習を想 定して作られていない → 特に、未来の予測をしたいのに時 系列データを十分に取ってこられな いのが致命的
なぜうまくいかない? •ユーザーはそれなりにいるけど、ア イテムのシリーズ単位でガチャを回 したユーザーに絞ってしまうと、機 械学習するほど十分なデータがない •データの前処理(つまりは例外処 理)を先にやらないといけない
状況に応じて使い分ける 理論で詰める 機械学習 データが多い DBが機械学習用 に整っている 前処理がしやすい データが少ない DBが整ってない データの分類が難
しい
まとめ •理論を詰めて需要予測を行うと機械 学習とは違って未来を最適化するア クションが見えやすい •データが少なくてもいける •どうしても時間が経つと予測がズレ てしまうが、原因は比較的見つけや すい
なぜの追求 数値と言語の 行き来
ご静聴ありがとうございました