Skip to content

Instantly share code, notes, and snippets.

@manji602
Created April 29, 2015 11:10
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manji602/34f4ae1fc5a29961350e to your computer and use it in GitHub Desktop.
Save manji602/34f4ae1fc5a29961350e to your computer and use it in GitHub Desktop.

B-6 ベイズ推定とDeep Learningを使用したレコメンドエンジン開発

16:50-17:30

  • レコメンデーション

    • アイテム単位:この商品を買った人は(ry
    • ユーザ単位:あなたへのオススメ
  • 開発の同期

    • スタンプ数の急速な増加
    • 欲しいスタンプが見つからない

前提条件

  • ユーザ数:MAU 1.8億人
  • スタンプ数:9万以上
  • 約200の地域で販売
  • 公式スタンプ / クリエイターズスタンプがある
    • 販売数のオーダーが異なる(100,1000倍前後)
  • メタデータの不在
    • 「ネコ」タグ、のようなものが存在しない

アルゴリズム

  • item単位の計算をしてから、ユーザ単位の計算をする
    • アイテム間の近さを計算してからユーザの計算をする
    • 計算量を考慮すると、スタンプ単位の計算から先に入ったほうが良い
アイテムのレコメンド

  • ある人がどのようなスタンプを買ったか
    • 似たようなスタンプを買っている:共起関係が強い

  • 行列で計算
    • スパースな行列なので1.8億 x 9万でもなんとかなる
    • α:確率が0になると、うまく動かないことがあるので、リリクレジュレン分布を仮定した上で決定

  • イプシロンを入れる理由
    • 売れ筋のアイテムしか出てこないという問題がある
    • クリエイターズスタンプがレコメンドに全然出てこないという問題。目指したいレコメンデーションとは遠くなってしまう。
    • イプシロンを入れてあげると、公式スタンプからクリエイターズスタンプのレコメンドを出すことができる

  • 全世界版で確率分布を先に出す
    • その後に、各地域ごとの確率分布を出す
ユーザのレコメンド

  • 仮定
    • 気に入ったスタンプをよく使う
      • これだけだと、昔に購入したスタンプが残りすぎる
    • 最近購入したスタンプをより好む

  • 枝刈り

    • 所有する各スタンプに対するアイテムレコメンドTop-Nを表にまとめる
    • 図のルールで順番にスタンプをn個選択
    • 選んだスタンプのみスコアを評価
  • 実績

    • ランキング1000位以降の販売数が大きく上昇
    • アイテムレコメンドのCTRは9倍

実装

  • データソースを入れ替えることで公式アカウント、LINE@のレコメンドも可能

最近の改善

  • コールドスタート問題

    • 新しいアイテムやユーザが追加された時、類似アイテムを見つけるのが困難
  • 画像の類似度に基づくレコメンデーション

    • Deep Learningで類似度判定
    • スタンプに購買履歴がない場合に適用
  • Deep Learning

    • スタンプに含まれる複数の画像から特徴量を抽出
    • 特徴量を比較して類似度を判定

まとめ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment