$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
lambdaの連鎖で作るRecommendEngine
Search
gree_tech
PRO
July 08, 2019
Technology
0
130
lambdaの連鎖で作るRecommendEngine
「Cloud Native Meetup Tokyo #8 」で発表された資料です。
https://cloudnative.connpass.com/event/130892/
gree_tech
PRO
July 08, 2019
Tweet
Share
More Decks by gree_tech
See All by gree_tech
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
160
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
110
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
120
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
94
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
120
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
130
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
140
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
170
Jamstack でリニューアルするグリーグループのメディア
gree_tech
PRO
2
340
Other Decks in Technology
See All in Technology
徹底解説!Microsoft 365 Copilot の拡張機能 / Complete guide to Microsoft 365 Copilot extensions
karamem0
1
1.4k
クルマのサブスクを Next.jsで内製化した経験とその1年後
kintotechdev
2
400
ゆるSRE勉強会 #8 組織的にSREが始まる中で意識したこと
abnoumaru
1
690
累計2500万着電を支える大規模 電話自動応答サービスのアーキテクチャ / Architecture of a Large-Scale Automated Phone Response Service Supporting 25 Million Cumulative Calls
ymachida
8
4.1k
Mastering Quickfix
daisuzu
2
470
AWS認定試験の長文問題を早く解くコツ
keke1234ke
0
120
日本全国・都市3D化プロジェクト「PLATEAU」とデータ変換OSS「PLATEAU GIS Converter」の公開
nokonoko1203
2
260
次のコンテナセキュリティの時代 - User Namespace With a Pod / CloudNative Days Winter 2024
pfn
PRO
4
400
総会員数1,500万人のレストランWeb予約サービスにおけるRustの活用
kymmt90
3
2.6k
大規模トラフィックを支える ゲームバックエンドの課題と構成の変遷 ~安定したゲーム体験を実現するために~
colopl
0
640
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
ayumu838
0
1.7k
レガシーシステムへのDatadog APM導入奮闘記
mtakeya4062
0
130
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Designing the Hi-DPI Web
ddemaree
280
34k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Side Projects
sachag
452
42k
Designing for Performance
lara
604
68k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Gamification - CAS2011
davidbonilla
80
5k
Code Reviewing Like a Champion
maltzj
520
39k
RailsConf 2023
tenderlove
29
910
Typedesign – Prime Four
hannesfritz
40
2.4k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Thoughts on Productivity
jonyablonski
67
4.3k
Transcript
lambdaの連鎖で作る Recommend Engine
Masahiro Higuchi / 樋口雅拓 • グリーグループのリミア株式会社で、LIMIA という住まい領域のメディアを 作っています。ゲーム会社ですが、最近はメディアに力を入れています。 • 機械学習のエンジニアですが、iOS,
Android,JSなどもやっている何でも屋 です。4歳の娘のパパ。twitter: @mahiguch1 • https://limia.jp/ • https://arine.jp/ • https://aumo.jp/ • https://www.mine-3m.com/mine/
LIMIAとは? • メディアサービス • 記事一覧を表示し、タップすると記事 詳細を閲覧できる。 • AWS:90%、GCP:10%。 • PHP/EC2
→ Go/ECS移行中 ユーザに最適なコンテンツを推薦する事 で、回遊性を向上させたい! → Recommend Engine(推薦システム)を 作ろう。
どうやってRecommendするのか • ユーザを10個ぐらいのセグメントに分類 • セグメント毎にCTRを計算 • 記事の投稿日時で補正したCTRが高い順にリストに掲載 → せっかく今から作るんだから、インスタンスを立てずに行こう!
ユーザモデル作成 ユーザが記事を閲覧すると、その情報が Kinesis に流れます。Lambdaで受け取り、直近10件の閲 覧履歴をDynamoDBに保存します。その変更を DynamoDB Streamに流し、Lambdaで受け取っ て記事のベクトルの平均をユーザベクトルとして DynamoDBに書き込みます。
ユーザ分類 ユーザの閲覧履歴は、 Kinesis経由でS3にも保 存されます。EMRでそれを読み込み、 k-means++で10セグメントに分割し、分割結果を BigQueryに書き込みます。BigQueryでセグメン ト毎の直近2時間のCTRを計算し、S3に書き戻し ます。それをDynamoDBに書きます。EMRでの 計算で出来るセグメントの中心ベクトルとアイデ アのベクトルも同様に
Dynamoに書き出します。 アイデアベクトル生成は 1日1回だと遅いので、 改善したい。
配信 ユーザが記事一覧を表示しようとすると、 Recommend Engineに問い合わせます。 Recommend Engineはユーザの直近10件の記事閲 覧履歴から所属するセグメントを選び、そのセグメント のユーザの直近2時間のCTRが高いものを表示しま す。ただし、古い記事ほど減点し、ユーザの前回ログ イン以降に投稿された記事は加点します。
Recommend Engineはgolangで書いて、 ECS/Fargateで動かしています。
システム構成図 パラメータ一覧 • ユーザベクトル生成は、即時。 • アイデアベクトル生成は、毎日。 • 辞書は2年前のwikipediaベース。 • CTRの計算は直近2時間。
• 推薦対象は、全記事。 • セグメントは10個。 これらについて、A/Bテストを行い、最適値を 探す。1Round 1週間として、6月末までに5回 行う。
まとめ • Recommend Engineは簡単に作れる。 • 今の所は既存編成ロジックより良い結果が出ている。 • システム的にはアイデアベクトル生成をリアルタイムで行いたい。しかし、 S3にある5GBの辞書 を読み込む必要があるため、
Lambdaで実行時に読み込むとコスト的にやばい。何か良いアイ デアがあれば教えて欲しい。 ありがとうございました。懇親会でぜひ声をかけてください!