Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Databricksを活用してDELISH KITCHENのレシピレコメンドを開発した話

Databricksを活用してDELISH KITCHENのレシピレコメンドを開発した話

Naoki Furuhama

April 10, 2024
Tweet

Other Decks in Technology

Transcript

  1. Copyright © 2015 every, Inc. All rights reserved. 2 自己紹介

    株式会社エブリー 開発本部 CTO室 Data&AI データサイエンティスト 古濵 尚樹(Naoki Furuhama) 2022年 香川大学工学研究科 修了 2022年 株式会社エブリー 入社 現在3年目。入社後は、新規事業のデータ基盤構築や、 Databricksを用いた ETLパイプラインの開発に従事。現在は、 DELISH KITCHENのレシピレコメン ドの開発をメインで担当している。
  2. 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
  3. 4 Copyright © 2015 every, Inc. All rights reserved. DELISH

    KITCHENについて 
 ▪ 日本最大級のレシピ動画サービス 
 ▪ 「おいしい楽しい「食事」と「健康」をすべての人に」をミッションに毎日配信 
 ▪ SNS/APP/WEBを通じて専門家監修の50,000本以上のレシピ動画を提供  

  4. 5 Copyright © 2015 every, Inc. All rights reserved. 今日する話

    • DELISH KITCHENにおけるレシピレコメンドの概要 • Databricksを活用したレシピレコメンドの実装 ◦ ルールベース→機械学習(ML) 今日しない話 • データ基盤の詳細 • MLやレコメンドに関する詳しい説明 今日する話 / しない話
  5. 9 Copyright © 2015 every, Inc. All rights reserved. 背景

    ▪ 日本最大級のレシピ動画サービス 
 ▪ 「おいしい楽しい「食事」と「健康」をすべての人に」をミッションに毎日配信 
 ▪ SNS/APP/WEBを通じて 専門家監修の50,000本以上のレシピ動画 を提供 
 ユーザ数・レシピ数の増加とともに ユーザ自らが好みのレシピを見つけることが困難 DELISH KITCHENではユーザの嗜好に寄り添った アプリのパーソナライズに向けた開発をしています レシピのレコメンド開発を担当
  6. 11 Copyright © 2015 every, Inc. All rights reserved. レシピレコメンドの全体構成

    全体構成 delta lakeにあるイベントログをデータソースとして、レコメンドするためのロジックを 集計する そのレコメンド結果をdelta lakeに保存 レコメンド結果をDelish ServerのRedisにデプロイし、アプリのリクエストに対して Serverがレシピを返す
  7. 12 Copyright © 2015 every, Inc. All rights reserved. レシピレコメンドの既存ロジック

    データソース  アプリのイベントログ ロジックはルールベースで集計  検索経由の視聴ログをもとに集計  動画の視聴秒数が多いレシピ上位k件をレコメンド
  8. 13 Copyright © 2015 every, Inc. All rights reserved. 既存ロジックの課題

    動画を視聴をしないユーザもいる。 ユーザの目的が動画の視聴することではなく、レシピを探しているため。 このようなユーザには材料などが見れるレシピ詳細の表示ログをもとにレコメンドしたい。 動画を視聴したからと言って興味があるレシピとは限らない 複数のイベントログを組み合わせたい場合、ルールが複雑化 レコメンドの精度を上げるためにルールが複雑化していくのは目に見えている。 今回のケースで言えば、検索経由の視聴ログとレシピ詳細の表示ログを組み合わせたい など。
  9. 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
  10. 17 Copyright © 2015 every, Inc. All rights reserved. リランキング(学習)

    正解ラベル • 翌日以降の動画の視聴有無 ◦ 0 or 1 学習 • LightGBMで二値分類問題を解くタスク • 実験およびリランキングモデルはmlflowで 管理 既存ロジック 新規ロジック
  11. 18 Copyright © 2015 every, Inc. All rights reserved. リランキング(候補と特徴量)

    候補 • 候補をfull outer joinして候補群を作成 ◦ 検索経由の視聴 ◦ レシピ詳細の表示 • 候補群のuser x recipeからレコメンド 検索経由 の視聴 レシピ詳細の 表示 候補群 ユーザ行動 特徴量 full outer join レシピの栄養素 特徴量 特徴量 候補群 特徴量 • 候補群と各特徴量をleft joinして特徴量 を作成 • ユーザ行動 ◦ 視聴秒数、タップログ等 • レシピの栄養素 ◦ カロリー、たんぱく質、脂質、糖質等 left join
  12. 19 Copyright © 2015 every, Inc. All rights reserved. 候補生成

    候補生成の仕組みをmodule化 • 使い回しやすい 2-stage recommender systemの デザインパター ンを考えて実装した話 Databricksのpython fileで切り出し • Candidateクラス • QueryGeneratorクラス • Evaluatorクラス
  13. 20 Copyright © 2015 every, Inc. All rights reserved. 候補生成

    候補生成モジュールに実装されている候補一覧 を、delta lakeに保存 候補生成 • queryをQueryGeneratorから取得 • spark.sql(query)を実行 評価 • 生成した候補と正解データを元に評価 • precision@k, recall@k, map@k等
  14. 21 Copyright © 2015 every, Inc. All rights reserved. リランキング(予測)

    予測 • 最新の候補群と特徴量から動画の視聴する確率を 予測 • 確率の高いレシピの上位k件をレコメンド
  15. 22 Copyright © 2015 every, Inc. All rights reserved. A/Bテスト

    評価指標 • クリック率 control • 既存ロジック(視聴秒数で降順に並び替え) test1 • 新規ロジック(リランキングモデルの予測値で並び替え)
  16. 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テストしたところ、クリック率の改善がみられた
  17. Copyright © 2015 every, Inc. All rights reserved. 24 エブリーからのお知らせ

    一緒にサービスを作る仲間を大募集中です! 🔍 エブリー 採用 https://corp.every.tv/recruits • エンジニアリングブログもやってます • エブリー公式採用オウンドメディア「every.thing」はこちら https://tech.every.tv/ https://everything.every.tv/