Databricksを活用してDELISH KITCHENのレシピレコメンドを開発した話
by
Naoki Furuhama
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Databricksを活用してDELISH KITCHENの レシピレコメンドを開発した話 2024/04/05 データ基盤だけじゃない! 意外と知らないDatabricks活用方法LT @Naoki_Furuhama
Slide 2
Slide 2 text
Copyright © 2015 every, Inc. All rights reserved. 2 自己紹介 株式会社エブリー 開発本部 CTO室 Data&AI データサイエンティスト 古濵 尚樹(Naoki Furuhama) 2022年 香川大学工学研究科 修了 2022年 株式会社エブリー 入社 現在3年目。入社後は、新規事業のデータ基盤構築や、 Databricksを用いた ETLパイプラインの開発に従事。現在は、 DELISH KITCHENのレシピレコメン ドの開発をメインで担当している。
Slide 3
Slide 3 text
3 Copyright © 2015 every, Inc. All rights reserved. 会社概要 会社名 設立 株式会社エブリー 東京都港区六本木 3-2-1 住友不動産六本木グランドタワー 38F 133.3億円 所在地 2015年9月1日(6月決算) 累計調達 主要株主 KDDI、伊藤忠食品、加藤産業、旭食品、セイノーホー ルディングス、味の素、 DCMベンチャーズ、グロービス・ キャピタル・パートナーズ、 WiL、DBJキャピタル、 SMBCベンチャーキャピタル、 SBIインベストメント他 エブリーは 3つの領域で日本最大級のメディアを運営! 生活に寄り添ったサービスを提供しています。 株式会社エブリー 開発部 X @every_engineer 株式会社エブリー 広報 X @every_pr
Slide 4
Slide 4 text
4 Copyright © 2015 every, Inc. All rights reserved. DELISH KITCHENについて ■ 日本最大級のレシピ動画サービス ■ 「おいしい楽しい「食事」と「健康」をすべての人に」をミッションに毎日配信 ■ SNS/APP/WEBを通じて専門家監修の50,000本以上のレシピ動画を提供
Slide 5
Slide 5 text
5 Copyright © 2015 every, Inc. All rights reserved. 今日する話 ● DELISH KITCHENにおけるレシピレコメンドの概要 ● Databricksを活用したレシピレコメンドの実装 ○ ルールベース→機械学習(ML) 今日しない話 ● データ基盤の詳細 ● MLやレコメンドに関する詳しい説明 今日する話 / しない話
Slide 6
Slide 6 text
Copyright © 2015 every, Inc. All rights reserved. 6 メダリオンアーキテクチャを採用したデータ基盤 https://www.databricks.com/jp/glossary/medallion-architecture
Slide 7
Slide 7 text
Copyright © 2015 every, Inc. All rights reserved. 7 メダリオンアーキテクチャを採用したデータ基盤 https://www.databricks.com/jp/glossary/medallion-architecture
Slide 8
Slide 8 text
レシピレコメンド概要
Slide 9
Slide 9 text
9 Copyright © 2015 every, Inc. All rights reserved. 背景 ■ 日本最大級のレシピ動画サービス ■ 「おいしい楽しい「食事」と「健康」をすべての人に」をミッションに毎日配信 ■ SNS/APP/WEBを通じて 専門家監修の50,000本以上のレシピ動画 を提供 ユーザ数・レシピ数の増加とともに ユーザ自らが好みのレシピを見つけることが困難 DELISH KITCHENではユーザの嗜好に寄り添った アプリのパーソナライズに向けた開発をしています レシピのレコメンド開発を担当
Slide 10
Slide 10 text
10 Copyright © 2015 every, Inc. All rights reserved. レコメンドの対象面 ホーム 動画 レシピ詳細
Slide 11
Slide 11 text
11 Copyright © 2015 every, Inc. All rights reserved. レシピレコメンドの全体構成 全体構成 delta lakeにあるイベントログをデータソースとして、レコメンドするためのロジックを 集計する そのレコメンド結果をdelta lakeに保存 レコメンド結果をDelish ServerのRedisにデプロイし、アプリのリクエストに対して Serverがレシピを返す
Slide 12
Slide 12 text
12 Copyright © 2015 every, Inc. All rights reserved. レシピレコメンドの既存ロジック データソース アプリのイベントログ ロジックはルールベースで集計 検索経由の視聴ログをもとに集計 動画の視聴秒数が多いレシピ上位k件をレコメンド
Slide 13
Slide 13 text
13 Copyright © 2015 every, Inc. All rights reserved. 既存ロジックの課題 動画を視聴をしないユーザもいる。 ユーザの目的が動画の視聴することではなく、レシピを探しているため。 このようなユーザには材料などが見れるレシピ詳細の表示ログをもとにレコメンドしたい。 動画を視聴したからと言って興味があるレシピとは限らない 複数のイベントログを組み合わせたい場合、ルールが複雑化 レコメンドの精度を上げるためにルールが複雑化していくのは目に見えている。 今回のケースで言えば、検索経由の視聴ログとレシピ詳細の表示ログを組み合わせたい など。
Slide 14
Slide 14 text
14 Copyright © 2015 every, Inc. All rights reserved. 新規ロジック - 候補生成とリランキングによるアプローチ 候補生成 大規模なユーザ x アイテムの組み合わせを全て扱わず、 ユーザ一人当たりに対してレコメンド対象となる候補を生成 する リランキング ユーザの嗜好に合ったレシピをレコメンドするために、候 補を並び替える https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45530.pdf 候補生成とリランキングの2つのステージにわ けてレコメンドする手法 候補生成 → spark.sqlで集計 リランキング → ML
Slide 15
Slide 15 text
候補生成とリランキングの実装
Slide 16
Slide 16 text
16 Copyright © 2015 every, Inc. All rights reserved. 候補生成とリランキングの全体像
Slide 17
Slide 17 text
17 Copyright © 2015 every, Inc. All rights reserved. リランキング(学習) 正解ラベル ● 翌日以降の動画の視聴有無 ○ 0 or 1 学習 ● LightGBMで二値分類問題を解くタスク ● 実験およびリランキングモデルはmlflowで 管理 既存ロジック 新規ロジック
Slide 18
Slide 18 text
18 Copyright © 2015 every, Inc. All rights reserved. リランキング(候補と特徴量) 候補 ● 候補をfull outer joinして候補群を作成 ○ 検索経由の視聴 ○ レシピ詳細の表示 ● 候補群のuser x recipeからレコメンド 検索経由 の視聴 レシピ詳細の 表示 候補群 ユーザ行動 特徴量 full outer join レシピの栄養素 特徴量 特徴量 候補群 特徴量 ● 候補群と各特徴量をleft joinして特徴量 を作成 ● ユーザ行動 ○ 視聴秒数、タップログ等 ● レシピの栄養素 ○ カロリー、たんぱく質、脂質、糖質等 left join
Slide 19
Slide 19 text
19 Copyright © 2015 every, Inc. All rights reserved. 候補生成 候補生成の仕組みをmodule化 ● 使い回しやすい 2-stage recommender systemの デザインパター ンを考えて実装した話 Databricksのpython fileで切り出し ● Candidateクラス ● QueryGeneratorクラス ● Evaluatorクラス
Slide 20
Slide 20 text
20 Copyright © 2015 every, Inc. All rights reserved. 候補生成 候補生成モジュールに実装されている候補一覧 を、delta lakeに保存 候補生成 ● queryをQueryGeneratorから取得 ● spark.sql(query)を実行 評価 ● 生成した候補と正解データを元に評価 ● precision@k, recall@k, map@k等
Slide 21
Slide 21 text
21 Copyright © 2015 every, Inc. All rights reserved. リランキング(予測) 予測 ● 最新の候補群と特徴量から動画の視聴する確率を 予測 ● 確率の高いレシピの上位k件をレコメンド
Slide 22
Slide 22 text
22 Copyright © 2015 every, Inc. All rights reserved. A/Bテスト 評価指標 ● クリック率 control ● 既存ロジック(視聴秒数で降順に並び替え) test1 ● 新規ロジック(リランキングモデルの予測値で並び替え)
Slide 23
Slide 23 text
23 Copyright © 2015 every, Inc. All rights reserved. まとめ 弊社テックブログに詳細な話をまとめてます! DELISH KITCHENのレシピのレコメンドに Two-stage Recommender Systemsを導入するまでの道のり https://tech.every.tv/entry/2024/03/27/160717 ● ユーザ数・レシピ数の増加に伴い、DELISH KITCHENではレシピのレコメンドを開発中 ● よりユーザの嗜好に寄り添ったレコメンドを実現するために、ルールベースから候補生 成とリランキングによるレコメンドを実装・検証した ● A/Bテストしたところ、クリック率の改善がみられた
Slide 24
Slide 24 text
Copyright © 2015 every, Inc. All rights reserved. 24 エブリーからのお知らせ 一緒にサービスを作る仲間を大募集中です! 🔍 エブリー 採用 https://corp.every.tv/recruits ● エンジニアリングブログもやってます ● エブリー公式採用オウンドメディア「every.thing」はこちら https://tech.every.tv/ https://everything.every.tv/
Slide 25
Slide 25 text
No content