Your SlideShare is downloading. ×
0
AmebaにおけるRHadoopの活用事例

株式会社サイバーエージェント
アメーバ事業本部
Ameba  Technology  Laboratory
和田  計也
株式会社サイバーエージェント

本日の内容
•  AmebaサービスとAmeba  Technology  Laboratoryについて
•  ログ解析基盤Patriotについて
•  RHadoopを用いた分析事例について

2
Amebaサービスと
Ameba  Technology  Laboratory
について
株式会社サイバーエージェント

Ameba事業  ー  PC向けサービス

4
株式会社サイバーエージェント

Ameba事業  ー  スマートフォンプラットフォーム

5
株式会社サイバーエージェント

Ameba事業  ー  ソーシャルゲーム

6
株式会社サイバーエージェント

Ameba事業  ー  コミュニティサービス

7
株式会社サイバーエージェント

Ameba  Technology  Laboratoryについて
•  Amebaの大規模データを集約的に扱う組織
•  2011年4月に開設、現在約20名が所属

ログ解析

検索

データマイニング

大規...
ログ解析基盤Patriotについて
10

Amebaのログ解析基盤:Patriot
•  Amebaのサービス共通のログ解析基盤
•  Hadoopクラスタ上に構築
•  Hive/HBaseにデータを格納
•  Hiveを用いた集計
•  Flumeを用いたデータ収集

90...
株式会社サイバーエージェント

【Logサーバ】
ログの一時集約

ログ転送(SCP)
MySQLレプリ

システム構成
ログ整形
Hiveインポート

Ameba
サービス

ログのリアルタイム転送
(Flume)

HiveJobをキック
...
株式会社サイバーエージェント

Patriot利用実態

ゲームコンサル

データマイニング
エンジニア

WebView

サービス担当
エンジニア

システム
連携

ゲーム/コミュニティ
課金統括部門
プロデューサ
マーケティング部門

...
株式会社サイバーエージェント

これまでのPatriotとCDHの経緯
•  2010年
 7月:  Patriot初期リリース  (CDH3b)  

•  2011年
 3月:  CDH3u0にアップグレード

•  2012年
    5...
RHadoopを用いた分析事例の話
〜はじめに〜
〜RHadoopで大規模なRandomForest〜
〜RHadoopで全サービスを一気に分析〜
15

Rとは?
•  オープンソースでフリーソフトウェアの統計解析
向けプログラミング言語、及びその開発実行環境
•  最初の誕生は1993年
•  Version1.0は2000年
•  2013年11月現在Version 3.0.2

R...
16

R利用率の高まり http://r4stats.com/articles/popularity/
17

RHadoopとは?
n  RからHadoopを簡単に使うためのRライブラリ
n  rmr
これ
n  rhdfs
n  rhbase
n  plyrmr

n  Revolution Analytics社が開発
しているO...
18

何でRHadoopの話かというと

Cloudera社とRevolution  Analytics社はパートナーシップ
を結んでいるからです!
http://www.cloudera.com/content/cloudera/en/so...
RHadoopを用いた分析事例の話
〜はじめに〜
〜RHadoopで大規模なRandomForest〜
〜RHadoopで全サービスを一気に分析〜
20

RandomForestとは?
n  分類器の一つ
n  高速、大量変数可能、変数重要度算出可能、高分類能
n  ランダムにTreeモデルを多数生成
n  分類の場合は多数決
n  回帰の場合は平均値

http://opin...
21

大規模なデータをRandomForestしたい理由
n  プラットフォーマーとしての分析
n  ユーザ数が行数
n  全サービスのあらゆるアクションが説明変数
(列)になりうる
n  確率分布を仮定しなくて良い
n  web系...
株式会社サイバーエージェント

RHadoopを使ってHadoop上で動く
RandomForestを実装する(model構築編)
巨大trainデータ

分割データ
決定木
model 複数の
決定木
model
model を生成

データ...
株式会社サイバーエージェント

RHadoopを使ってHadoop上で動く
RandomForestを実装する(predict編) 複数の
巨大testデータ

分割(block)データ

mod
models
mod
els
els

データ...
株式会社サイバーエージェント

24

実例)全ゲームでの、あるアクションがその後のプ
ラットフォームでの継続行動に繋がりやすいか分析
#モデル構築用関数を読み込む
source(“R/scaleRandomForest.R”)
#アンバランス...
株式会社サイバーエージェント

25

実例)分析の実行例

randomForest関数のように使うとMap-Reduceが走る
株式会社サイバーエージェント

実例)上記例の結果
•  実測値と予測値のテーブル

←感度は49%
•  変数(ゲーム)重要度

ゲームC
ゲームA
ゲームB

26
RHadoopを用いた分析事例の話
〜はじめに〜
〜RHadoopで大規模なRandomForest〜
〜RHadoopで全サービスを一気に分析〜
株式会社サイバーエージェント

RHadoopで全サービスを⼀一気通貫分析
•  イメージ図

分析
結果

1つの
game

Rで
分析

28
株式会社サイバーエージェント

RHadoopで全サービスを⼀一気通貫分析
•  Map-Reduceのイメージ図
game毎のデータ
分結
析果
R
の
関
数

分結
析果
分結
析果

Map
keyがgame名で
valueが各種データ...
株式会社サイバーエージェント

30

Rの分析例例
•  あるゲームのKPIを、カードゲームのメインアクション
から予測するモデルを作る
•  バトル数
•  クエスト数
•  進化数
•  強化数
•  イベント参加有無
予測自体が目的では...
株式会社サイバーエージェント

作成したRの分析関数
イベント参加者/不参加者で
 (線形|非線形)単回帰
 KPI  =  関数(バトル)
 KPI  =  関数(クエスト)
 KPI  =  関数(強化)
 KPI  =  関数(進化)

...
株式会社サイバーエージェント

実例例)作成した分析関数の実⾏行行結果例例
①model構築関数__
mzd_nls(formula=KPI~., data)

②plot関数__plot(mzd_mdl)

③table関数__table(m...
株式会社サイバーエージェント

33

実例例)作成した分析関数の実⾏行行結果例例
④predict関数__predict(mzd_mdl, newdata)
⑤print_formula関数__print_formula(mzd_mdl)
$...
株式会社サイバーエージェント

RHadoopで全サービスを⼀一気通貫分析
•  Map-Reduceのイメージ図
game毎のデータ

これができた
分結
析果

R
の
関
数

分結
析果
分結
析果

Map
keyがgame名で
va...
株式会社サイバーエージェント

hdlapply関数の作成
•  目的
•  前述の分析関数をHadoopクラスタを使って
全サービス一気に適用するため
•  入力
•  list形式のRデータ

•  使い方
•  Rのlapplyと一緒
h...
株式会社サイバーエージェント

36

RHadoopで全サービスを⼀一気通貫分析
•  Map-Reduceのイメージ図
game毎のデータ

これの仕組みができた
分結
析果

R
の
関
数

分結
析果
分結
析果

Map
keyがg...
株式会社サイバーエージェント

37

実例例)分析関数をhadoopクラスタで        
並列列実⾏行行
lapplyのように使うとMap-Reduceが走る
株式会社サイバーエージェント

RHadoopで全サービスを⼀一気通貫分析
•  Map-Reduceのイメージ図
game毎のデータ
分結
析果
R
の
関
数

分結
析果
分結
析果

Map
keyがgame名で
valueが各種データ...
株式会社サイバーエージェント

実例例)サクっとmodel構築した結果はShinyで魅せる

ゲームを
選んで

KPI
メイン
アクション
値を入れて

イベント
種別
選んで

39
40

まとめ
•  RHadoopライブラリを使って以下のことを実現した
•  ScalableRandomForest関数により、Amebaプラットフォーム
全体での分析が可能になった
•  hdlapply関数により、分析関数を用意すれば...
ご清聴ありがとうございました。
Upcoming SlideShare
Loading in...5
×

20131107 cwt2013-wdkz

481

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
481
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "20131107 cwt2013-wdkz"

  1. 1. AmebaにおけるRHadoopの活用事例 株式会社サイバーエージェント アメーバ事業本部 Ameba  Technology  Laboratory 和田  計也
  2. 2. 株式会社サイバーエージェント 本日の内容 •  AmebaサービスとAmeba  Technology  Laboratoryについて •  ログ解析基盤Patriotについて •  RHadoopを用いた分析事例について 2
  3. 3. Amebaサービスと Ameba  Technology  Laboratory について
  4. 4. 株式会社サイバーエージェント Ameba事業  ー  PC向けサービス 4
  5. 5. 株式会社サイバーエージェント Ameba事業  ー  スマートフォンプラットフォーム 5
  6. 6. 株式会社サイバーエージェント Ameba事業  ー  ソーシャルゲーム 6
  7. 7. 株式会社サイバーエージェント Ameba事業  ー  コミュニティサービス 7
  8. 8. 株式会社サイバーエージェント Ameba  Technology  Laboratoryについて •  Amebaの大規模データを集約的に扱う組織 •  2011年4月に開設、現在約20名が所属 ログ解析 検索 データマイニング 大規模 分散処理 (ログ解析基盤) 推薦 フィルタリング 8
  9. 9. ログ解析基盤Patriotについて
  10. 10. 10 Amebaのログ解析基盤:Patriot •  Amebaのサービス共通のログ解析基盤 •  Hadoopクラスタ上に構築 •  Hive/HBaseにデータを格納 •  Hiveを用いた集計 •  Flumeを用いたデータ収集 90,000lines/sec 1TB/day 11,000jobs/day
  11. 11. 株式会社サイバーエージェント 【Logサーバ】 ログの一時集約 ログ転送(SCP) MySQLレプリ システム構成 ログ整形 Hiveインポート Ameba サービス ログのリアルタイム転送 (Flume) HiveJobをキック 【Batchサーバ】 ワークフロー スケジューラ 集計サマリをPut (HBase) Hadoop クラスタ サマリView、 アドホックHiveクエリ (自作WebUI) 【外部連携サーバ】 サマリーデータ取得 Hiveクエリ実行 ジョブステータス取得 11
  12. 12. 株式会社サイバーエージェント Patriot利用実態 ゲームコンサル データマイニング エンジニア WebView サービス担当 エンジニア システム 連携 ゲーム/コミュニティ 課金統括部門 プロデューサ マーケティング部門 アドホッククエリ 12
  13. 13. 株式会社サイバーエージェント これまでのPatriotとCDHの経緯 •  2010年  7月:  Patriot初期リリース  (CDH3b)   •  2011年  3月:  CDH3u0にアップグレード •  2012年    5月:  スマートフォンプラットフォーム向けPatriotの構築  (CDH3u3) •  2013年    7月:  PatriotのDC移設、CDHアップグレード(CDH4.3) 13
  14. 14. RHadoopを用いた分析事例の話 〜はじめに〜 〜RHadoopで大規模なRandomForest〜 〜RHadoopで全サービスを一気に分析〜
  15. 15. 15 Rとは? •  オープンソースでフリーソフトウェアの統計解析 向けプログラミング言語、及びその開発実行環境 •  最初の誕生は1993年 •  Version1.0は2000年 •  2013年11月現在Version 3.0.2 Ross Ihaka Robert Gentleman
  16. 16. 16 R利用率の高まり http://r4stats.com/articles/popularity/
  17. 17. 17 RHadoopとは? n  RからHadoopを簡単に使うためのRライブラリ n  rmr これ n  rhdfs n  rhbase n  plyrmr n  Revolution Analytics社が開発 しているOSS n  https://github.com/RevolutionAnalytics/RHadoop/wiki
  18. 18. 18 何でRHadoopの話かというと Cloudera社とRevolution  Analytics社はパートナーシップ を結んでいるからです! http://www.cloudera.com/content/cloudera/en/solutions/partner/Revolution-analytics.html
  19. 19. RHadoopを用いた分析事例の話 〜はじめに〜 〜RHadoopで大規模なRandomForest〜 〜RHadoopで全サービスを一気に分析〜
  20. 20. 20 RandomForestとは? n  分類器の一つ n  高速、大量変数可能、変数重要度算出可能、高分類能 n  ランダムにTreeモデルを多数生成 n  分類の場合は多数決 n  回帰の場合は平均値 http://opinions5.blogspot.jp/2013/08/random-forest-confidence.html
  21. 21. 21 大規模なデータをRandomForestしたい理由 n  プラットフォーマーとしての分析 n  ユーザ数が行数 n  全サービスのあらゆるアクションが説明変数 (列)になりうる n  確率分布を仮定しなくて良い n  web系のログとかソシャゲのログとかちょい ちょい冪乗則‎ n  MahoutのDecisionForest、大規模データ使えなかっ た….
  22. 22. 株式会社サイバーエージェント RHadoopを使ってHadoop上で動く RandomForestを実装する(model構築編) 巨大trainデータ 分割データ 決定木 model 複数の 決定木 model model を生成 データセット model ・ ・ ・ Map ・ ・ ・ ・ ・ ・ Reduce 22
  23. 23. 株式会社サイバーエージェント RHadoopを使ってHadoop上で動く RandomForestを実装する(predict編) 複数の 巨大testデータ 分割(block)データ mod models mod els els データセット ・ ・ ・ Map Reduce 予測結果 の多数決 23
  24. 24. 株式会社サイバーエージェント 24 実例)全ゲームでの、あるアクションがその後のプ ラットフォームでの継続行動に繋がりやすいか分析 #モデル構築用関数を読み込む source(“R/scaleRandomForest.R”) #アンバランスデータをweightで調整してモデル化 srf_midub <- scaleRandomForest(formula=doAction ~., data=train.data) #モデルをhdfsからローカルにコピー srfmdl_midub <- from.dfs(srf_midub$model_output) #変数重要度算出関数を読み込む source("R/scaleVarImportance.R") #変数重要度算出して上位10件をプロット plot.scaleVarImportance(model=srfmdl_midub, cl.tbl=cl.tbl, sel.y=1:10) #予測用関数を読み込む source("R/predict.scaleRandomForest.R") #予測結果を取得 colnames(test.data) <- cl.tbl[,2] prd.res <- predict.scaleRandomForest(model=srfmdl_midub$val, data=test.data, devide="none", modeln=500, is.rawReturn=F) #予測結果を表示 table(test.data$doPurchase, prd.res)
  25. 25. 株式会社サイバーエージェント 25 実例)分析の実行例 randomForest関数のように使うとMap-Reduceが走る
  26. 26. 株式会社サイバーエージェント 実例)上記例の結果 •  実測値と予測値のテーブル ←感度は49% •  変数(ゲーム)重要度 ゲームC ゲームA ゲームB 26
  27. 27. RHadoopを用いた分析事例の話 〜はじめに〜 〜RHadoopで大規模なRandomForest〜 〜RHadoopで全サービスを一気に分析〜
  28. 28. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  イメージ図 分析 結果 1つの game Rで 分析 28
  29. 29. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce 29
  30. 30. 株式会社サイバーエージェント 30 Rの分析例例 •  あるゲームのKPIを、カードゲームのメインアクション から予測するモデルを作る •  バトル数 •  クエスト数 •  進化数 •  強化数 •  イベント参加有無 予測自体が目的ではなく、どのアクションを増やし たらどのくらいゲームのKPI が改善するかを知るこ とが主目的
  31. 31. 株式会社サイバーエージェント 作成したRの分析関数 イベント参加者/不参加者で  (線形|非線形)単回帰  KPI  =  関数(バトル)  KPI  =  関数(クエスト)  KPI  =  関数(強化)  KPI  =  関数(進化) —―  線形関数 —―  指数関数  そして、モデル平均化  KPI(参加)  =     0.25×重み×関数(バトル)                                                      +  0.25×重み×関数(クエスト)                                  +  0.25×重み×関数(強化)                                                    +  0.25×重み×関数(進化)  KPI  =  KPI(参加)  +  KPI(不参加) 31
  32. 32. 株式会社サイバーエージェント 実例例)作成した分析関数の実⾏行行結果例例 ①model構築関数__ mzd_nls(formula=KPI~., data) ②plot関数__plot(mzd_mdl) ③table関数__table(mzd_mdl) $guild value predict 2013-07-25 10.763097 10.168675 2013-08-16 100.60917 95.07407 2013-08-17 83.62791 96.37409 2013-09-22 12.298155 11.106690 2013-09-23 11.937966 13.163799 2013-09-24 11.428777 11.458499 $guildraid value predict 2013-09-24 11.428777 11.103995 2013-09-25 14.544114 11.850527 2013-09-26 10.306084 11.090633 2013-09-27 90.49583 89.18554 2013-09-28 10.026573 11.022452 2013-09-29 81.58785 103.74744 $raid value predict 2013-07-02 103.63821 75.67362 2013-07-03 89.26541 74.97935 32
  33. 33. 株式会社サイバーエージェント 33 実例例)作成した分析関数の実⾏行行結果例例 ④predict関数__predict(mzd_mdl, newdata) ⑤print_formula関数__print_formula(mzd_mdl) $etc $etc$on $etc$on$quest_avg $etc$on$quest_avg$formula [1] "y ~ a * exp(b * x)" $etc$on$upgrade_avg $etc$on$upgrade_avg$formula [1] "y ~ a * exp(b * x)" $etc$on$quest_avg$coef a b 60.267125203 0.008223505 $etc$on$upgrade_avg$coef a b 1.4530336 0.7347296 ・ ・ ・ ・ ・ ・
  34. 34. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ これができた 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce 34
  35. 35. 株式会社サイバーエージェント hdlapply関数の作成 •  目的 •  前述の分析関数をHadoopクラスタを使って 全サービス一気に適用するため •  入力 •  list形式のRデータ •  使い方 •  Rのlapplyと一緒 hdlapply(X, FUN, …) 35
  36. 36. 株式会社サイバーエージェント 36 RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ これの仕組みができた 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce
  37. 37. 株式会社サイバーエージェント 37 実例例)分析関数をhadoopクラスタで         並列列実⾏行行 lapplyのように使うとMap-Reduceが走る
  38. 38. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce これが できた 38
  39. 39. 株式会社サイバーエージェント 実例例)サクっとmodel構築した結果はShinyで魅せる ゲームを 選んで KPI メイン アクション 値を入れて イベント 種別 選んで 39
  40. 40. 40 まとめ •  RHadoopライブラリを使って以下のことを実現した •  ScalableRandomForest関数により、Amebaプラットフォーム 全体での分析が可能になった •  hdlapply関数により、分析関数を用意すれば全サービス一 斉に同一関数を用いた分析を行うことが可能になった
  41. 41. ご清聴ありがとうございました。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×