9/7のbuilderscon 2018で使用したスライドになります
機械学習を用いず数学でゲーム内の需要予測をする2018/9/7 builderscon 2018@nessie_sesein
View Slide
機械学習を用いず数学でゲーム内の需要予測をする2018/9/7 builderscon 2018@nessie_seseinに対してアレルギー反応とか出ない人が集まっているという仮定の下で話をしていきますこの場にいる人は
数学とありますが、高校レベルの数学を理解していれば問題ありません統計等の知識も不要です前提知識
自己紹介• 禰寝崇之(あだ名は「ねっしー」)• 東京工業大学大学院理工学研究科数学専攻 修士課程修了• 専門は解析的整数論、特に篩法を用いたPrimeGapsについて• 新卒で面白法人カヤックに入社、ソーシャルゲーム事業部でレベルデザイナーを経験した後、事業部を横断して分析する『ねし部』を設立して現在は分析業務がメイン• 趣味で絵を描いたり
話すこと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過去や現在を知る因果関係を見つける未来を知る未来をコントロールするBIツール機械学習
4つの分析記述的分析• 何が起こったのかの可視化診断的分析• なぜ起こったかを明らかにする予測的分析• これから何が起こるかを予測する処方的分析• 結果を最適化するための手段を導くGartner “IT Glossary_ Predictive Analytics”http://www.gartner.com/it-glossary/predictive-analytics過去や現在を知る因果関係を見つける未来を知る未来をコントロールするBIツール機械学習あれ??ここは?
分析の問題点たとえ未来予測ができても、人間が因果関係を履き違えると、適切なアクションが取れない例:アイスの売上と溺死事故には相関がある→ 溺死を減らすためにアイスの不買運動をするのは正しいのか?
分析の問題点たとえ未来予測ができても、人間が因果関係を履き違えると、適切なアクションが取れない例:アイスの売上と溺死事故には相関がある→ 溺死を減らすためにアイスの不買運動をするのは正しいのか?データは解釈まで与えてくれない!!
Q.じゃあ正しくデータを解釈できるようになるためにはどうすればいい?
Q.じゃあ正しくデータを解釈できるようになるためにはどうすればいい?A.数学しようぜ
定義ここでの数学は基本的に純粋数学を指すものとする(統計学や機械学習は応用数学)→ 純粋数学の見方・考え方を理解してもらうことが目標
純粋と応用の違い純粋数学道具そのものの性質を知ることに興味がある応用数学道具を実際に使うことに興味がある
世間の数学者に対する認識•数字に強い•計算が得意
参考BasicNumberTheoryAndre Weil
純粋数学って何やってるの?
純粋数学って何やってるの?問題解決理論構築
純粋数学って何やってるの?•前提条件(公理系・定義)は何か?•そこから何が成り立つのか?を言語化・記号化して紐解いていく•論理に飛躍があると死ぬ•「これ、成り立つんじゃないかなぁ」って思っても、それを証明するまでは絶対に正しいと信じない→ 認知バイアスに引っかからない
純粋数学って何やってるの?数学的なジョーク(Wikipedia)
私は問題解決のプロ
私は問題解決のプロすごい改善している!!!
数学者がやっていること
数学者がやっていることなぜの追求数値と言語の行き来
このグラフはどう伸びる?
このグラフはどう伸びる?この条件だけでは答えられない
なぜの追求赤いグラフを想像した人は「なぜ赤いグラフを想像したのか?」と考えてみる
なぜの追求赤いグラフを想像した人は「なぜ赤いグラフを想像したのか?」と考えてみる→ 曖昧な理由(主観的要素)を排除し、客観的な正しさを求めるのが数学の姿勢
なぜの追求赤いグラフを想像した人は「なぜ赤いグラフを想像したのか?」と考えてみる→ 曖昧な理由(主観的要素)を排除し、客観的な正しさを求めるのが数学の姿勢思考そのものにはどうしても主観的要素が入ってしまう↓それを数値化することで客観性を担保する
なぜの追求赤いグラフを想像した人は「なぜ赤いグラフを想像したのか?」と考えてみる→ 曖昧な理由(主観的要素)を排除し、客観的な正しさを求めるのが数学の姿勢思考そのものにはどうしても主観的要素が入ってしまう↓それを数値化することで客観性を担保する数値と言語の行き来
分析に還元すると……正しく分析するには、いかにして主観に基づく認知バイアスを取り除くかが重要そのために常々「なぜの追求」と「数値と言語の行き来」を意識するのが大切
ソシャゲ運営あるある「新規ガチャ、めっちゃ売れたぞ!! これなら次、復刻したときもかなりの売上を期待できそうだぁあああああああああ!!!!」
ソシャゲ運営あるある「新規ガチャ、めっちゃ売れたぞ!! これなら次、復刻したときもかなりの売上を期待できそうだぁあああああああああ!!!!」→ 次の復刻「あれ、全然売れてなくね?」
売上構成がこんなだったら……課金者上位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. 例外処理・微調整ゴールと相関のある数字を見つけて例外をひたすら潰していく作業
人気の法則がわかる改シリーズ(CAP解放)を出すとき、需要予測ができるようになったおかげで「スキルレベルが4以上を所持しているユーザー」を増やせば売上に大きく影響を与えることがわかった
人気の法則がわかるガンナーシリーズ改を出す前に該当ユーザーを増やす施策(事前のガチャで★5出現率上げる)を実施
人気の法則がわかるガンナーシリーズ改を出す前に該当ユーザーを増やす施策(事前のガチャで★5出現率上げる)を実施→ 改登場時の売上が初登場の売上の144%まで成長!
欠点
欠点自分以外誰も管理できない
機械学習はどうなの?
機械学習はどうなの?挑戦しました!!
機械学習はどうなの?挑戦しました!!全然うまくいきませんでした!!!
なぜうまくいかない?•元々のデータベースが機械学習を想定して作られていない→ 特に、未来の予測をしたいのに時系列データを十分に取ってこられないのが致命的
なぜうまくいかない?•ユーザーはそれなりにいるけど、アイテムのシリーズ単位でガチャを回したユーザーに絞ってしまうと、機械学習するほど十分なデータがない•データの前処理(つまりは例外処理)を先にやらないといけない
状況に応じて使い分ける理論で詰める 機械学習データが多いDBが機械学習用に整っている前処理がしやすいデータが少ないDBが整ってないデータの分類が難しい
まとめ•理論を詰めて需要予測を行うと機械学習とは違って未来を最適化するアクションが見えやすい•データが少なくてもいける•どうしても時間が経つと予測がズレてしまうが、原因は比較的見つけやすい
なぜの追求数値と言語の行き来
ご静聴ありがとうございました