SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
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で実行時に読み込むとコスト的にやばい。何か良いアイ
デアがあれば教えて欲しい。
ありがとうございました。懇親会でぜひ声をかけてください!

Mais conteúdo relacionado

Mais de gree_tech

海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験gree_tech
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組みgree_tech
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違いgree_tech
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介gree_tech
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてgree_tech
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーgree_tech
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-gree_tech
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話gree_tech
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)gree_tech
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行gree_tech
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜gree_tech
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)gree_tech
 
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-gree_tech
 
REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化gree_tech
 
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜gree_tech
 
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜gree_tech
 
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容についてバーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容についてgree_tech
 
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインREALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインgree_tech
 
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」についてさまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」についてgree_tech
 
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2DVTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2Dgree_tech
 

Mais de gree_tech (20)

海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
 
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
 
REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化
 
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
 
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
 
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容についてバーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
 
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインREALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
 
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」についてさまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
 
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2DVTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
 

lambdaの連鎖で作るRecommendEngine