🦔

【読書メモ】推薦システム実践入門

2022/11/22に公開

オライリーの推薦システム 実践入門―仕事で使える導入ガイドを読みました。

推薦システムの全体像から各詳細まで、非常にわかりやすく丁寧に解説されており、推薦システムに関わったことがないエンジニアの人やビジネスサイドの人でもスラスラ読める本だと思いました。

また、このブログでは触れていませんが、代表的な推薦アルゴリズムのpythonでの実装例や実システムで応用するための設計、推薦システムで悩ましい評価方法などについても載っています(この辺は実務でとても役に立ちます)。

全体像の中で覚えておきたい類型化の部分を中心に備忘録的にメモしています。

推薦システムとは?

「複数の候補から価値のあるものを選び出し、意思決定を支援する仕組み」

推薦システムは

  • インプット(ユーザー・アイテムの情報、ユーザー・アイテムのインタラクションなど)
  • プロセス(関連計算、パーソナライズなど)
  • アウトプット(トップページに表示、メールで通知、クーポン郵送など)

の3要素で整理できる。
どの組み合わせで効果を最大化できるかよく考える必要がある。

サービスを利用するユーザーの目的に応じた顧客体験の分類

  • 適合アイテムの発見
    • ユーザーが自身の目的を達成するのに適したアイテムを1つでもいいのでサービス上で発見しようとしているケース。
    • 例:○○駅付近で食事をするための飲食店を探している場合など
  • 適合アイテム列挙
    • ユーザーが自身の目的を達成するのに適したアイテムをできるだけすべてサービス上で発見しようとしているケース。
    • 例:引越し先の賃貸物件をできるだけじっくり検討したい場合など
  • アイテム系列消費
    • 閲覧、消費していく中で推薦されたアイテム系列全体から価値を享受することを目的とするケース。
    • 例:音楽ストリーミングサービスで次々と音楽を再生して聴いている場合など
  • サービス内回遊
    • ユーザーが利用しているサービス本来の目的を達成するためでなく、ただアイテムを閲覧すること自体を目的としてサービス内を回遊するケース。
    • 例:すぐに旅行する予定はないが、観光地やホテルなどを眺めている場合など

サービスを提供する側の視点では、推薦システムはユーザーの定着、利用頻度を増やすため、同時購入機会の創出、ロイヤリティの向上などを目的に使われる。

どのコンテキストで使われるか、何を目的にするかで実現方法も変わる。

推薦アルゴリズムの分類

  • 内容ベースフィルタリング
    • ユーザープロファイル(ユーザーに好みを指定してもらう、過去の履歴から求める)とアイテム特徴の類似度を利用して推薦する。
  • 協調フィルタリング
    • 自分と好みが似ているユーザーの情報を利用して推薦する。
    • メモリベース法
      • 推薦を受け取るユーザーと似ているユーザーの好みに着目する方法(ユーザー間型メモリベース法)と推薦を受け取るユーザーの好むアイテムと似ているアイテムに着目する方法(アイテム間型メモリベース法)がある。
      • 推薦のたびに似ているものを探すので、データはその時点の最新が利用されるが、計算に時間がかかる。
    • モデルベース法
      • まだ評価されていないアイテムの評価値をアルゴリズムで埋める。回帰・分類、クラスタリング、トピックモデル、行列分解などが使われる。
      • すでにモデルが作成されていれば、計算時間はそんなにかからないが、最新のデータを反映させるにはモデルを更新する必要がある。

多様性の確保や低いドメイン知識でも機能しやすいのは協調フィルタリング、カバレッジやコールドスタート問題、少ないユーザーでも機能しやすいのは内容ベースフィルタリング。実際は一方のみを使うのではなく、場面に応じてこれらを組み合わせて使う。

嗜好データの特徴

嗜好データには明示的なものと暗黙的なものがある。

  • 明示的データ
    • ユーザーに明らかにしてもらうもの。データ量は少ないが正確であり、未評価と不支持の区別がつきやすい。また、ユーザーが自身のデータが推薦に利用されていると認知することができる。
  • 暗黙的なデータ
    • 行動履歴データ。蓄積していけば貯まっていくのでデータ量が多い点はメリット。一方で揺らぎがあったり、未評価と不支持の区別が難しい、ユーザーが意識せずに自身の履歴が使われることに対して不信感を頂いてしまうことも起こりうる。

データ自体はスパースなことが多く、時間やコンテキストに依存した揺らぎや、人気バイアスやユーザー固有のバイアスも含まれるので注意が必要。

最後に

これら以外にも豊富なコードサンプルやシステム設計、ドメインに応じた特徴と課題のトピックで楽曲、ファッション、ニュース、動画、食、仕事を例にそれぞれのドメインで考えなければいけない部分や固有の課題についても整理されているなど推薦システムの枠組みの中で本書のカバーしている範囲はとても広く良書だなと思いました。

Discussion