Your SlideShare is downloading. ×
20131107 cwt2013-wdkz
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

20131107 cwt2013-wdkz

446
views

Published on


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

No Downloads
Views
Total Views
446
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. AmebaにおけるRHadoopの活用事例 株式会社サイバーエージェント アメーバ事業本部 Ameba  Technology  Laboratory 和田  計也
  • 2. 株式会社サイバーエージェント 本日の内容 •  AmebaサービスとAmeba  Technology  Laboratoryについて •  ログ解析基盤Patriotについて •  RHadoopを用いた分析事例について 2
  • 3. Amebaサービスと Ameba  Technology  Laboratory について
  • 4. 株式会社サイバーエージェント Ameba事業  ー  PC向けサービス 4
  • 5. 株式会社サイバーエージェント Ameba事業  ー  スマートフォンプラットフォーム 5
  • 6. 株式会社サイバーエージェント Ameba事業  ー  ソーシャルゲーム 6
  • 7. 株式会社サイバーエージェント Ameba事業  ー  コミュニティサービス 7
  • 8. 株式会社サイバーエージェント Ameba  Technology  Laboratoryについて •  Amebaの大規模データを集約的に扱う組織 •  2011年4月に開設、現在約20名が所属 ログ解析 検索 データマイニング 大規模 分散処理 (ログ解析基盤) 推薦 フィルタリング 8
  • 9. ログ解析基盤Patriotについて
  • 10. 10 Amebaのログ解析基盤:Patriot •  Amebaのサービス共通のログ解析基盤 •  Hadoopクラスタ上に構築 •  Hive/HBaseにデータを格納 •  Hiveを用いた集計 •  Flumeを用いたデータ収集 90,000lines/sec 1TB/day 11,000jobs/day
  • 11. 株式会社サイバーエージェント 【Logサーバ】 ログの一時集約 ログ転送(SCP) MySQLレプリ システム構成 ログ整形 Hiveインポート Ameba サービス ログのリアルタイム転送 (Flume) HiveJobをキック 【Batchサーバ】 ワークフロー スケジューラ 集計サマリをPut (HBase) Hadoop クラスタ サマリView、 アドホックHiveクエリ (自作WebUI) 【外部連携サーバ】 サマリーデータ取得 Hiveクエリ実行 ジョブステータス取得 11
  • 12. 株式会社サイバーエージェント Patriot利用実態 ゲームコンサル データマイニング エンジニア WebView サービス担当 エンジニア システム 連携 ゲーム/コミュニティ 課金統括部門 プロデューサ マーケティング部門 アドホッククエリ 12
  • 13. 株式会社サイバーエージェント これまでのPatriotとCDHの経緯 •  2010年  7月:  Patriot初期リリース  (CDH3b)   •  2011年  3月:  CDH3u0にアップグレード •  2012年    5月:  スマートフォンプラットフォーム向けPatriotの構築  (CDH3u3) •  2013年    7月:  PatriotのDC移設、CDHアップグレード(CDH4.3) 13
  • 14. RHadoopを用いた分析事例の話 〜はじめに〜 〜RHadoopで大規模なRandomForest〜 〜RHadoopで全サービスを一気に分析〜
  • 15. 15 Rとは? •  オープンソースでフリーソフトウェアの統計解析 向けプログラミング言語、及びその開発実行環境 •  最初の誕生は1993年 •  Version1.0は2000年 •  2013年11月現在Version 3.0.2 Ross Ihaka Robert Gentleman
  • 16. 16 R利用率の高まり http://r4stats.com/articles/popularity/
  • 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 何でRHadoopの話かというと Cloudera社とRevolution  Analytics社はパートナーシップ を結んでいるからです! http://www.cloudera.com/content/cloudera/en/solutions/partner/Revolution-analytics.html
  • 19. RHadoopを用いた分析事例の話 〜はじめに〜 〜RHadoopで大規模なRandomForest〜 〜RHadoopで全サービスを一気に分析〜
  • 20. 20 RandomForestとは? n  分類器の一つ n  高速、大量変数可能、変数重要度算出可能、高分類能 n  ランダムにTreeモデルを多数生成 n  分類の場合は多数決 n  回帰の場合は平均値 http://opinions5.blogspot.jp/2013/08/random-forest-confidence.html
  • 21. 21 大規模なデータをRandomForestしたい理由 n  プラットフォーマーとしての分析 n  ユーザ数が行数 n  全サービスのあらゆるアクションが説明変数 (列)になりうる n  確率分布を仮定しなくて良い n  web系のログとかソシャゲのログとかちょい ちょい冪乗則‎ n  MahoutのDecisionForest、大規模データ使えなかっ た….
  • 22. 株式会社サイバーエージェント RHadoopを使ってHadoop上で動く RandomForestを実装する(model構築編) 巨大trainデータ 分割データ 決定木 model 複数の 決定木 model model を生成 データセット model ・ ・ ・ Map ・ ・ ・ ・ ・ ・ Reduce 22
  • 23. 株式会社サイバーエージェント RHadoopを使ってHadoop上で動く RandomForestを実装する(predict編) 複数の 巨大testデータ 分割(block)データ mod models mod els els データセット ・ ・ ・ Map Reduce 予測結果 の多数決 23
  • 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 実例)分析の実行例 randomForest関数のように使うとMap-Reduceが走る
  • 26. 株式会社サイバーエージェント 実例)上記例の結果 •  実測値と予測値のテーブル ←感度は49% •  変数(ゲーム)重要度 ゲームC ゲームA ゲームB 26
  • 27. RHadoopを用いた分析事例の話 〜はじめに〜 〜RHadoopで大規模なRandomForest〜 〜RHadoopで全サービスを一気に分析〜
  • 28. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  イメージ図 分析 結果 1つの game Rで 分析 28
  • 29. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce 29
  • 30. 株式会社サイバーエージェント 30 Rの分析例例 •  あるゲームのKPIを、カードゲームのメインアクション から予測するモデルを作る •  バトル数 •  クエスト数 •  進化数 •  強化数 •  イベント参加有無 予測自体が目的ではなく、どのアクションを増やし たらどのくらいゲームのKPI が改善するかを知るこ とが主目的
  • 31. 株式会社サイバーエージェント 作成したRの分析関数 イベント参加者/不参加者で  (線形|非線形)単回帰  KPI  =  関数(バトル)  KPI  =  関数(クエスト)  KPI  =  関数(強化)  KPI  =  関数(進化) —―  線形関数 —―  指数関数  そして、モデル平均化  KPI(参加)  =     0.25×重み×関数(バトル)                                                      +  0.25×重み×関数(クエスト)                                  +  0.25×重み×関数(強化)                                                    +  0.25×重み×関数(進化)  KPI  =  KPI(参加)  +  KPI(不参加) 31
  • 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 実例例)作成した分析関数の実⾏行行結果例例 ④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. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ これができた 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce 34
  • 35. 株式会社サイバーエージェント hdlapply関数の作成 •  目的 •  前述の分析関数をHadoopクラスタを使って 全サービス一気に適用するため •  入力 •  list形式のRデータ •  使い方 •  Rのlapplyと一緒 hdlapply(X, FUN, …) 35
  • 36. 株式会社サイバーエージェント 36 RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ これの仕組みができた 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce
  • 37. 株式会社サイバーエージェント 37 実例例)分析関数をhadoopクラスタで         並列列実⾏行行 lapplyのように使うとMap-Reduceが走る
  • 38. 株式会社サイバーエージェント RHadoopで全サービスを⼀一気通貫分析 •  Map-Reduceのイメージ図 game毎のデータ 分結 析果 R の 関 数 分結 析果 分結 析果 Map keyがgame名で valueが各種データ Reduce これが できた 38
  • 39. 株式会社サイバーエージェント 実例例)サクっとmodel構築した結果はShinyで魅せる ゲームを 選んで KPI メイン アクション 値を入れて イベント 種別 選んで 39
  • 40. 40 まとめ •  RHadoopライブラリを使って以下のことを実現した •  ScalableRandomForest関数により、Amebaプラットフォーム 全体での分析が可能になった •  hdlapply関数により、分析関数を用意すれば全サービス一 斉に同一関数を用いた分析を行うことが可能になった
  • 41. ご清聴ありがとうございました。

×