Top Banner
最先端のデータ解析/Apache Sparkを 利用したレコメンドエンジン開発 サンプルデータの解析からビッグデータの解析へ~ GMOインターネット株式会社 次世代システム研究室 アーキテクト GMOアドパートナーズ株式会社 グループCTO室 アーキテクト 野田 純一
24

GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

Jan 23, 2018

Download

Engineering

Junichi Noda
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発

サンプルデータの解析からビッグデータの解析へ~

GMOインターネット株式会社 次世代システム研究室 アーキテクト GMOアドパートナーズ株式会社 グループCTO室 アーキテクト 野田 純一

Page 2: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

1

2

3

アジェンダ

次世代システム研究室について

自己紹介

レコメンドエンジンの開発について

2

Page 3: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

3

次世代システム研究室ついて

次世代システム研究室はお客様の笑顔のため、No.1 サービスを目指し、GMO インターネットグループの重要なプロジェクトの成功を技術面でサポートする部署です。 R&Dだけの部署ではありません。

Page 4: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

4

作ってきたサービス

Page 5: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

5

ベトナムラボと協力してサービスを開発

Page 6: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

6

次世代システム研究室の研究開発期末に次世代システム研究室の研究発表会を実施。研究内容は業務に関すること、今後業務に活かせそうな最新技術。 !• Apple Watch vs Android Wear • HBase×Impalaで作るアドテク「GMOプライベートDMP」 • リーンスタートアップ、アジャイル開発導入事例

最近の研究資料 http://recruit.gmo.jp/engineer/jisedai/topics/

Page 7: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

7

社外での活動(2015年)時期 イベント名 内容6月 HBase Meetup Tokyo

Summer 2015「GMO Private DMP」の開発で得たHadoop関連のノウハウを発表

8月 dots. ビッグデータオールスターズ

社内での研究成果を外部のイベントでも共有

10月 Software Design 2015年11月号 記事掲載

Hadoop関連開発にConoHaを使った場合のクラスタ構成やノウハウを掲載

12月 Embulk Meetup Tokyo #2 次世代システム研究室ブログの内容が好評だったので勉強会でも発表

次世代システム室ブログ http://recruit.gmo.jp/engineer/jisedai/blog/

Page 8: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

1

2

3

アジェンダ

次世代システム研究室について

自己紹介

レコメンドエンジンの開発について

8

Page 9: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

9

自己紹介 経歴所属GMOインターネット株式会社 次世代システム研究室 アーキテクト GMOアドパートナーズ株式会社 グループCTO室 アーキテクト

前職

2014 ~

株式会社ディー・エヌ・エー ソーシャルゲームのフレームワーク開発(WEB向け、アプリ向け)

GMOインターネット入社 GMO NIKKO社の「GMOプライベートDMP」の開発に関わる レコメンドウィジェット「TAXEL」の開発中

Page 10: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

10

最近やっていること 「Sparkが熱い」Software Design 2015年11月号 に執筆記事掲載。 ConoHaを使ったHadoopクラスタの構成事例とSpark SQLを使ったデータ処理の実例を記述。

2015年11月 10日 Cloudera World Tokyo 2015でLT登壇 !ClouderaはHadoopディストリビューションのメジャーなベンダー。Apache Sparkを使ったプログラムについて紹介。

Page 11: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

1

2

3

アジェンダ

次世代システム研究室について

自己紹介

レコメンドエンジンの開発について

11

Page 12: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

12

推薦記事

広告

リコメンドウィジェット

Page 13: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

13

リコメンドウィジェット関連用語用語 解説

回遊率 回遊率とは特定のサイトを訪れた訪問者が、そのサイト内の各ページをどれ位見て回ったかという判断指標です。訪問ページ別の直帰率やリンク元ドメイン別直帰率、重要ページ到達率、ユーザごとの平均PV(Page View)などの数値をもとに回遊の程度は判断されています。

SSP RTBの広告掲載(メディア)側システム ブラウザの広告枠に

対して一番入札額の高い(効果の高い)DSPを決定する。

ネイティブアド 広告をWEB画面やスマフォになじませる手法。

Page 14: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

14

ネイティブアドの種類インフィード型 Facebookのフィード広告、Twitterのプ

ロモートツイートなど検索連動型広告型 Yahoo、Google、Bingレコメンドウィジェット型 アウトブレイン、popIn、loglyなど

プロモートリスティング型 「ぐるなび」や「食べログ」の検索連動型広告、サービスの利用体験とシームレスにデザインされた広告

ネイティブ要素を持つインアド型

広告のデザインはメディアと親和性が高くないがコンテンの親和性が高いもの

カスタム型 上記にあてはまらない手法。(もちろん広告はメディアにあわせる)

参考: 日経BPムック「最新マーケティングの教科書2016」

Page 15: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

15

推薦記事表示までのフロー

Page 16: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

16

リコメンド記事の作成フロー

Page 17: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

17

Apache Sparkについて

オープンソースの並列分散処理基板 インメモリー処理 HadoopのMapReduceとは別アプローチ(DAG)での並列分散処理基板を行う APIを利用できる言語はScala, Java, Python, R クラスタ上での処理を前提としており、YARN, Mesos, Spark Standaloneが選択できる

Page 18: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

18

Spark SQLの活用(データの集約)

[hive@slave_node1]$ spark-shell --master yarn-client!import org.apache.spark.sql.hive.HiveContext !val hiveCtx = new HiveContext(sc)!val rows = hiveCtx.sql("select uid, url from access_log_data”)!val rdd = rows.distinct.rdd !val pairs = rdd.map( u => (u{0}.asInstanceOf[String], u{1}.asInstanceOf[String])) !val group = pairs.groupByKey()!group.take(10)

クラスタで処理Hiveテーブル使うため

HiveQL重複行を削除

map形式に変換 (ユーザID => ページURL)ユーザIDをキーにデータを集約する

Page 19: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

19

Spark MLlibの活用 (相関ルール)

相関ルール「パンとバターの同時購入者の90%はミルクも購入する」というような関係性を算出する。算出処理の引数に confidence(確信度)、support(支持度)などの指標を与えてその数値以上の関係性を導き出す。 !例だとpage1を見てる人にはpage2を推薦(その逆も)、page4を見てる人にはpage5を推薦する(その逆も)・・といった記事ベースのリコメンドを行う。

Page 20: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

20

import org.apache.spark.{SparkConf, SparkContext}!import org.apache.spark.rdd.RDD!import org.apache.spark.mllib.fpm.AssociationRules!import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset!!object ArSample {! def main(args: Array[String]): Unit = {!! val conf = new SparkConf().setAppName("Ar Application")! conf.setMaster("local[*]")! val sc = new SparkContext(conf)!! val freqItemsets = sc.parallelize(Seq(! new FreqItemset(Array("http://maru/page1"), 20L),! new FreqItemset(Array("http://maru/page2"), 20L),! new FreqItemset(Array("http://maru/page3"), 20L),! new FreqItemset(Array("http://maru/page4"), 20L),! new FreqItemset(Array("http://maru/page5"), 20L),

例なのでデータを増幅する  FreqItemset(データパターン, 頻度)

例としてローカルで起動(本来はクラスタ)

Page 21: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

21

new FreqItemset(Array("http://maru/page1", "http://maru/page2"), 19L),! new FreqItemset(Array("http://maru/page4", "http://maru/page5"), 18L)! ));!! val ar = new AssociationRules()! .setMinConfidence(0.6)! val results = ar.run(freqItemsets)!! results.collect().foreach { rule =>! println("[" + rule.antecedent.mkString(",")! + "=>"! + rule.consequent.mkString(",") + "]," + rule.confidence)! }!! sc.stop! }!}!

相関ルールのクラスを作成

Confidence(確信度)の指標を与える

Page 22: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

22

開発環境構成(ConoHaで構成)マシン名 CPU メモリgateway 2コア 1GBci_ambari 4コア 4GBmaster_node 6コア 8GBslave_node 6コア 8GB dev-web 2コア 1GBdev-ap 3コア 2GB dev-batch 3コア

ay2GB

Page 23: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

23

GMOインターネット グループの強み開発に必要なサーバーインフラをグループ内で調達可能。 Hadoopクラスタの調達、サーバー構成の調整がしやすい。

Page 24: GEEK ACADEMY REAL Vol.2. 「最先端のデータ解析/Apache Sparkを利用したレコメンドエンジン開発」

24

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

あんず&このは LINEスタンプ発売中