クックパッドにおける推薦(と検索)の取り組み

 クックパッドにおける推薦(と検索)の取り組み

7f7abff13e7c5ad15bfa3a823313ef9d?s=128

Chie Hayashida

June 24, 2019
Tweet

Transcript

  1. 2.

    Chie Hayashida(@chie8842 ) • Software Engineer @ Cookpad R&Dチーム •

    情報推薦の経験: • Apache Sparkクラスタ400+台を⽤いたグローバル推薦システムの開 発など • もともと最新技術を試すとかより推薦システムを精度・パフォーマン スの両⾯で安定して動作させるほうに興味がある • クックパッドではKPI策定から評価まで、ビジネスに近い部分も含めて 検索・推薦の施策をリードしている
  2. 15.

    いきなりひとりでやるぞ!と息巻いても、 うまくいかない • KPI設計にはドメイン知識が必要 • いままでどんなことをやって成功・失敗してきたのか • 他チームが今どういう開発をしているのか • どんなデータがあるのか

    • 簡単に思いつくことはだいたい過去に誰かが試している • 試しにテーマを決めて簡単なアルゴリズムを実装してデモをし てみたが、反応が薄い • サービス開発側とサイクルがあわなかった(他に優先度の⾼いタスク があった) • テーマ⾃体が筋がよくなかった。
  3. 20.

    ⾃分の得意分野で挑もうとして失敗した • Apache Sparkを使った⼤規模推薦システムの経験があったため、 その知⾒を⽣かした協調フィルタリングシステム(ALS)などを 作ろうとした ➔ クックパッドにはそぐわなかった • 分散システムをメンテナンスできる⼈が他にいない

    • 次に⾷べたいものを推薦しようとしたが、推薦する対象と⼿法がマッチ しなかった • ECサイトのようにクリックとユーザの購買(料理)が結びつきにくいなど、⼊⼒デー タが難しい • 気分の影響や外⾷で⾷べたものなどの取得できないデータの影響が⼤きく、クック パッドで得られるデータだけではALSのようなアルゴリズムを⽤いた定式化はやりづ らい
  4. 23.

    information retrieval and information filtering are indeed two sides of

    the same coin. ― Information filtering and information retrieval: two sides of the same coin?(1992) 推薦の前に検索を知る (というか検索もやってみたかったというのもある) ※推薦は情報フィルタリングの結果を提案という形で⾒せるものと捉えることができる • 情報推薦は情報検索の⼀部(⾒せ⽅の違い)ということができる ➔推薦のためのアルゴリズムは検索にも利⽤できる • ⼀⽅で、デリバリ⽅式は異なるので、システムとしては分かれる事 が多い(SolrやElasticsearchなどの検索システムを利⽤して推薦を ⾏うこともできる) そもそも推薦と検索はコインの表裏
  5. 24.

    検索のプロダクトオーナを巻き込んで いろいろやった • 最初は検索を使っていて直したほうが良 さそうと思ったものを⾒つけてクエリ改 善をやってみる • 機械学習を⽤いたクエリ改善とかは他の メンバも興味を⽰してくれ、施策検討や 実装を⼀緒にやってくれるひとが増えた

    • 分析を⾏う中でドメイン知識も蓄積して、 徐々に施策の勘所が⾃分でもわかるよう になった 社内の情報共有サイトにやったことを記録。 タイミングが悪くて実にならなかったものも、 別の機会には役に⽴つかもしれない。
  6. 35.

    施策の90%は思ったとおりにいかない http://notes.stephenholiday.com/Five-Puzzling-Outcomes.pdf • “Google ran approximately 12,000 randomized experiments in

    2009, with [only] about 10 percent of these leading to business changes.” • “80% of the time you/we are wrong about what a customer wants.” • “90% of what they try to be wrong.”
  7. 37.

    S3 技術の話がなさすぎて不安なので セッションベースの推薦アーキテクチャを 貼っておく RedShift レシピ データ Index 推薦 コンテナ

    クックパッド アプリ REST API Index作成 コンテナ ⽇次ジョブ実⾏ • レシピタイトルの名詞のみ抽出してfasttextの ⾜し合わせによるレシピベクトル⽣成 • ANNインデックス作成 • レシピタイトルに対して似たレシピを返却する • 多様性確保のため近傍N個からランダムなn個を 抽出