SlideShare a Scribd company logo
Submit Search
Upload
lambdaの連鎖で作るRecommendEngine
Report
Share
gree_tech
gree_tech
Follow
•
1 like
•
764 views
1
of
9
lambdaの連鎖で作るRecommendEngine
•
1 like
•
764 views
Report
Share
Download Now
Download to read offline
Engineering
「Cloud Native Meetup Tokyo #8 」で発表された資料です。 https://cloudnative.connpass.com/event/130892/
Read more
gree_tech
gree_tech
Follow
Recommended
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
725 views
•
36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
229 views
•
13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
1K views
•
18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
1.9K views
•
84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
347 views
•
116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
682 views
•
31 slides
More Related Content
More from gree_tech
海外展開と負荷試験 by
海外展開と負荷試験
gree_tech
593 views
•
53 slides
翻訳QAでのテスト自動化の取り組み by
翻訳QAでのテスト自動化の取り組み
gree_tech
305 views
•
20 slides
組み込み開発のテストとゲーム開発のテストの違い by
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
572 views
•
17 slides
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
209 views
•
13 slides
データエンジニアとアナリストチーム兼務になった件について by
データエンジニアとアナリストチーム兼務になった件について
gree_tech
308 views
•
46 slides
シェアドサービスとしてのデータテクノロジー by
シェアドサービスとしてのデータテクノロジー
gree_tech
432 views
•
38 slides
More from gree_tech
(20)
海外展開と負荷試験 by gree_tech
海外展開と負荷試験
gree_tech
•
593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み
gree_tech
•
305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
•
572 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
•
209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件について
gree_tech
•
308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジー
gree_tech
•
432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech
•
1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
•
1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
•
693 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
•
2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech
•
396 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
•
751 views
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方- by gree_tech
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
gree_tech
•
445 views
REALITY iOSアプリを支える開発効率化 by gree_tech
REALITY iOSアプリを支える開発効率化
gree_tech
•
1.1K views
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜 by gree_tech
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
gree_tech
•
3K views
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜 by gree_tech
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
gree_tech
•
2.7K views
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について by gree_tech
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
gree_tech
•
4K views
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン by gree_tech
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
gree_tech
•
2.7K views
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について by gree_tech
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
gree_tech
•
2.3K views
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D by gree_tech
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
gree_tech
•
2.2K views
lambdaの連鎖で作るRecommendEngine
1.
lambdaの連鎖で作る Recommend Engine
2.
Masahiro Higuchi /
樋口雅拓 ● グリーグループのリミア株式会社で、LIMIA という住まい領域のメディアを 作っています。ゲーム会社ですが、最近はメディアに力を入れています。 ● 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何でも屋 です。4歳の娘のパパ。twitter: @mahiguch1 ● https://limia.jp/ ● https://arine.jp/ ● https://aumo.jp/ ● https://www.mine-3m.com/mine/
3.
LIMIAとは? ● メディアサービス ● 記事一覧を表示し、タップすると記事 詳細を閲覧できる。 ●
AWS:90%、GCP:10%。 ● PHP/EC2 → Go/ECS移行中 ユーザに最適なコンテンツを推薦する事 で、回遊性を向上させたい! → Recommend Engine(推薦システム)を 作ろう。
4.
どうやってRecommendするのか ● ユーザを10個ぐらいのセグメントに分類 ● セグメント毎にCTRを計算 ●
記事の投稿日時で補正したCTRが高い順にリストに掲載 → せっかく今から作るんだから、インスタンスを立てずに行こう!
5.
ユーザモデル作成 ユーザが記事を閲覧すると、その情報が Kinesis に流れます。Lambdaで受け取り、直近10件の閲 覧履歴をDynamoDBに保存します。その変更を DynamoDB Streamに流し、Lambdaで受け取っ て記事のベクトルの平均をユーザベクトルとして DynamoDBに書き込みます。
6.
ユーザ分類 ユーザの閲覧履歴は、 Kinesis経由でS3にも保 存されます。EMRでそれを読み込み、 k-means++で10セグメントに分割し、分割結果を BigQueryに書き込みます。BigQueryでセグメン ト毎の直近2時間のCTRを計算し、S3に書き戻し ます。それをDynamoDBに書きます。EMRでの 計算で出来るセグメントの中心ベクトルとアイデ アのベクトルも同様に Dynamoに書き出します。 アイデアベクトル生成は
1日1回だと遅いので、 改善したい。
7.
配信 ユーザが記事一覧を表示しようとすると、 Recommend Engineに問い合わせます。 Recommend Engineはユーザの直近10件の記事閲 覧履歴から所属するセグメントを選び、そのセグメント のユーザの直近2時間のCTRが高いものを表示しま す。ただし、古い記事ほど減点し、ユーザの前回ログ イン以降に投稿された記事は加点します。 Recommend
Engineはgolangで書いて、 ECS/Fargateで動かしています。
8.
システム構成図 パラメータ一覧 ● ユーザベクトル生成は、即時。 ● アイデアベクトル生成は、毎日。 ●
辞書は2年前のwikipediaベース。 ● CTRの計算は直近2時間。 ● 推薦対象は、全記事。 ● セグメントは10個。 これらについて、A/Bテストを行い、最適値を 探す。1Round 1週間として、6月末までに5回 行う。
9.
まとめ ● Recommend Engineは簡単に作れる。 ●
今の所は既存編成ロジックより良い結果が出ている。 ● システム的にはアイデアベクトル生成をリアルタイムで行いたい。しかし、 S3にある5GBの辞書 を読み込む必要があるため、 Lambdaで実行時に読み込むとコスト的にやばい。何か良いアイ デアがあれば教えて欲しい。 ありがとうございました。懇親会でぜひ声をかけてください!