20160906 bq sushi

33
BigQueryRでの機械学習による 350万ユーザの行動分析と 可視化スピードの大幅改善 2016/09/06 BQ sushi @プリンスパークタワー東京

Upload: tetsuro-ito

Post on 19-Jan-2017

269 views

Category:

Data & Analytics


0 download

TRANSCRIPT

BigQueryとRでの機械学習による

350万ユーザの行動分析と

可視化スピードの大幅改善

2016/09/06 BQ sushi@プリンスパークタワー東京

自己紹介

所属:株式会社マネーフォワード PFM本部

名前:伊藤 徹郎 (@tetsuroito)

仕事:企画や分析など (プレミアムサービス担当)

言語:RやSQL

好きなアルゴリズム:SVM (RBFカーネル)

一言:マネーフォワードをDLして、もしよければ

  プレミアムサービスも使っていただけるとうれしいです。

マネーフォワード紹介自動でグラフ化、ラクして節約!

350万人が選んだ

自動家計簿・資産管理サービス

マネーフォワード

マネーフォワード紹介

マネーフォワード紹介

アジェンダ

・BigQueryを導入の背景

・BigQueryを用いた350万人の行動分析

・Rと機械学習を使った可視化の高速化

アジェンダ

・BigQueryを導入の背景

・BigQueryを用いた350万人の行動分析

・Rと機械学習を使った可視化の高速化

BigQuery導入背景

BigQuery導入前

担当者

サービス利用ログをMySQLに保存、利用時も専用端末からMySQL利用

MySQL

BigQuery導入背景

BigQuery導入前

担当者

当初は良かったが、サービス成長とともにボトルネックとなる

分析にはつらい...

ボトルネック

MySQL

BigQuery導入背景

BigQuery導入後

BigQueryにデータを入れることで利用コストが格段に下がりました

担当者

dailyバッチで転送

MySQL

導入時に悩んだこと

・BigQueryに入れるデータをどうするか

・どういうテーブル構成にするか

・運用フローをどうするか

・コストはどのくらいかかるか

Github issueで起票 → PRレビュー → CISOと複数メンバーで議論

BigQueryに入れるデータをどうするか

Github issueで起票 → PRレビュー → CISOと複数メンバーで議論

BigQueryに入れるデータをどうするか

LGTM

BigQueryにimport!

どういうテーブル構成にするか

現状のDBの定義を踏襲し、

データ量の多いものは月ごとに区切ってテーブル化

運用フローをどうするか

・Slackに専用チャンネルを作って関連話題は集約

・転送完了通知もSlackで通知

・アカウント追加は適宜実施 (用途次第でアカウント追加)

・esaに基本的な使い方やクエリリファレンスを記載

・実行前に処理量をチェックしてから実行する

など

コストはどのくらいかかるか

事前に見積もりを実施

あらかじめ予算を決め、それをスコープに実施

ちょっと困ったこと

・Timestampを入れるとUTCに変換されて入る

→ 事前に +9 hourしてhoge_JSTカラムを作成し回避

回避策はとっているので、困っていませんが、この仕様どうにかならないでしょうか?

アジェンダ

・BigQueryを導入の背景

・BigQueryを用いた350万人の行動分析

・Rと機械学習を使った可視化の高速化

BigQueryを用いた350万人の行動分析

・新機能リリース後の効果検証

例、家計診断機能・どのくらい利用されているか

・どんな人に利用されているか

・他にどんな機能を使っているか

・利用環境による違いはないか

・改善箇所はどこか

などの詳細な分析が可能になりました

BigQueryを用いた350万人の行動分析

・Window関数を用いたパス解析row_number関数やRank関数を利用してユーザーの行動パスを解析

パス解析の結果から初日アクションへの施策立案へと繋がった事例です

BigQueryを用いた350万人の行動分析

その他にも・・・

・ロイヤリティユーザーの行動解析

・端末別の機能パフォーマンス調査

・ユーザー状態別のアクセス分析

・長期間のCSログ調査

などの従来は取り組めていなかった分析が可能になりました

アジェンダ

・BigQueryを導入の背景

・BigQueryを用いた350万人の行動分析

・Rと機械学習を使った可視化の高速化

Rと機械学習を使った可視化の高速化

担当者

dailyバッチで転送

統計解析機械学習可視化

MySQL

RにBigQueryを読み込ませる

Rには様々なパッケージが存在します。その中にbigrqueryパッケージがあります。

作者はR界の神と呼ばれる人です

Rへのデータロードの仕方

bigrqueryパッケージの他にクエリを抽出するためにhttpuvパッケージも必要です

httpuvパッケージのquery_exec関数にプロジェクト名と引き出したいクエリを

記述してRにデータをにロードします。

* 抽出時のデータ型には注意しましょう (デフォルトはstring型)

Rを使った可視化事例

Hadleyのggplot2パッケージを使って、自社の時間・曜日別の行動を可視化しました

使用例:

新機能をリリースした時

どの曜日のどの時間帯に告知

するかを左記を見てあたりを

つけました

Rを使った機械学習事例

rpartパッケージを使って、ユーザーのリテンションを分析しました

[問題設定] どういうユーザーが継続して使ってくれるのか知りたい

[特定方法] 実際にリテンションしているユーザーからその行動要因を特定する

[タスク設定] ユーザーの行動ログを月次で集計して分類モデルを作る

[アルゴリズム設定] 要因分解メインなので、理解しやすい決定木を使おう

こんな一人ブレストをしました

数時間後...

パラメータチューニングしながらほしいアウトプットがすぐに得られました

使用例:

リテンションに効く要件を

満たすようにコミュニケーション設

計をして施策を実施

BigQuery ビフォーアフター

[Before] [After]

欲しい調査クエリのアウトプットが

数時間後に得られた

欲しい調査クエリから

Rで可視化してみて、

一人ブレストをしたのち、

機械学習モデルを作って結果を得

圧倒的な改善が実現!!

機械学習の取り組みはまだ始まったばかり

環境は整ったので、

たくさんあるデータから価値あるアルゴリズムを検証して、

より世の中に価値のあるモデルを作っていきたい

そう、考えています。

We’re Hiring

詳細はマネーフォワード採用ページ、もしくはWantedlyページをご確認ください。

■マネーフォワード採用ページ https://recruit.moneyforward.com/■Wantedly          https://www.wantedly.com/companies/moneyforward/projects

マネーフォワードでは、一緒に働く仲間を募集しています。

特にAndroidエンジニア機械学習エンジニア

Thank you!ご清聴ありがとうございました