推薦システムの手法のまとめ

推薦システムの手法のまとめ

長いこと業務でレコメンドアルゴリズムの開発を担当しているのですが、そういえば推薦システム(Recommender System)で用いられている手法の全体観をちゃんと抑えていなかったなぁと感じることが最近ありました。
ということで今回は一度基礎に立ち返って、推薦システムで用いられている手法をまとめることにします。
なお、紹介した手法の具体的な実装方法は紹介せず、推薦システムの全体像を捉えることを目的にしています。
各手法の実装に関しては参考になるページのリンクを貼っておくので、気になる方はそちらをご参照ください。

推薦システムの全体像

推薦システムで用いられる手法は以下のように分類できます。

参考: (2020/6/22) https://en.wikipedia.org/wiki/Collaborative_filtering,

推薦システムで用いられる手法は大きく、コンテンツベース(content base)、協調フィルタリング(collaborative filtering)、コンテンツベースと協調フィルタリングのハイブリッドに分類できます。
以降、この3つの特徴をまとめます。

そもそもフィルタリングとは、ユーザーが欲しい情報だけを得る、つまり、ユーザーにとって余計な情報をフィルターすることを意味します。もともと推薦システム(Recommender System)は情報フィルタリングシステムのサブクラスとして定義されているため、そのまま推薦システムの文脈でもフィルタリングという用語が引き継がれているのでしょう。ちなみに、フィルターバブルという言葉も存在します。

コンテンツベースフィルタリング(content base)

コンテンツベースフィルタリング(content base filtering)は、アイテムの特徴をもとにユーザが過去に高評価したアイテムと似た特徴を持つアイテムをレコメンドする手法です。
コンテンツベースフィルタリングのメリット・デメリットは以下になります。

メリット

  • 他のユーザのデータが不要なため、ユーザにパーソナライズしたアイテムをレコメンドできる
  • アイテムの特徴と対象ユーザの情報だけでレコメンドできるため、容易にユーザー数をスケールできる
  • ユーザーの嗜好を捉えられるので、ほとんどのユーザが嗜好しないニッチなアイテムもレコメンドできる

デメリット

  • アイテムの特徴表現がある職人芸になるためドメイン知識が必要になる
  • 既存のユーザの嗜好に基づいてレコメンドされるため、レコメンドされるアイテムがユーザの既存の嗜好に制限される

協調フィルタリング(collaborative filtering)

協調フィルタリング(collaborative filtering)は、多くのユーザーから収集した嗜好データをもとに、ユーザが嗜好するであろうアイテムをレコメンドする手法です。

協調フィルタリングの手法はさらに、メモリベース(memory base)、モデルベース(model base)、メモリベースとモデルベースのハイブリッドの3つに分類できます。

以下、簡単にそれぞれのメリット・デメリットをまとめます。

協調フィルタリングの分類メリットデメリット
メモリベース
  • 容易に実装できる
  • 新規データを容易に追加できる
  • アイテムの特性を把握する必要がない
  • 共通に評価されているアイテムについてはスケールする
  • 人の評価に依存する
  • データがスパースなときにパフォーマンスが低下する
  • 新規ユーザやアイテムをレコメンドできない
  • 大量データへのスケーラビリティに限界がある
モデルベース
  • データのスパース性、大量データのスケーラビリティに対応できる
  • 予測精度が向上する
  • レコメンド結果が直感的な根拠に基づいている
  • モデル構築コストが高い
  • 予測精度とスケーラビリティのトレードオフを調整する必要がある
  • 次元削減によって情報が損失する
メモリベースとモデルベースのハイブリッド
  • 協調フィルタリングとコンテンツベースの限界を克服できる
  • ロジックの複雑さゆえに、実装のコストが増大する

メモリベース

ユーザーのアイテムへの評価といったデータセットをシステムのメモリにロードし、インラインメモリデータベースに基づいてレコメンドする手法です。

メモリベースの手法の実装方法としては、ユーザーベース協調フィルタリング(user base collaborative filtering, UBCF)、アイテムベース協調フィルタリング(item base collaborative filtering, IBCF)の2つがあります。

  • ユーザーベース協調フィルタリング
    ユーザーのアイテムへの評価をもとに、ユーザー間の類似度に基づいてレコメンド
  • アイテムベース協調フィルタリング
    ユーザーのアイテムへの評価をもとに、アイテム間の類似度に基づいてレコメンド

一般的に、レコメンドの実装方法としてはユーザーベース協調フィルタリングよりもアイテムベース協調フィルタリングが好まれる傾向があります。
ECサイトを例にあげれば、扱うアイテム数の方がユーザー数よりも圧倒的に多かったり、ユーザーがアクションするアイテムが全体のアイテムのうちのほんのわずかだったりするためです。
ユーザーベース協調フィルタリングの実装では、新規ユーザーが加えられるたびにユーザー間の類似度を再計算するため、オンラインでのユーザへのレコメンドはかなりコストがかかります。
一方、アイテムベース協調フィルタリングの実装では、新規ユーザーが追加されるたびにアイテム間の類似度を計算する必要はありません。一度、オフラインでアイテム間の類似度を計算しておくことで、オンラインでの計算コストをかなり低減できるのです。

モデルベース

メモリベースの手法はメモリにロードされたデータセットに基づいたレコメンドでしたが、モデルベースではデータセットから何らかの情報を抽出し、その情報をもとにレコメンドします。
したがって、機械学習を用いたレコメンド実装もモデルベースの手法となります。

モデルベースの手法ではメモリベースの手法よりもロバスト性と精度を向上させるために、特異値分解(SVD)や主成分分析(PCA)といった次元削減手法が良く用いられます。
この手法の特徴は、スパースな高次元行列ではなく、低次元の非常に小さいサイズの行列を扱えることです。
この次元削減によって得られた行列の類似度を比較すれば良いため、特に大規模な疎なデータセットを扱う場合、はるかにスケーラブルになります。

メモリベースとモデルベースのハイブリッド

メモリベースの手法ではデータのスパース性のためにパフォーマンスが低下したり、モデルベースの手法では次元削減によって情報が損失してしまいますが、双方をハイブリッドすることでこれらの問題を解決できます。
その一方で、メモリベースとモデルベースのハイブリッド手法ではロジックが複雑さを増し、実装にはコストかかります。
また、結果の解釈性も犠牲になります。

コンテンツベースフィルタリングと協調フィルタリングのハイブリッド

コンテンツベースフィルタリングと協調フィルタリングを組み合わせたレコメンド手法です。
協調フィルタリングではアイテムやユーザーの嗜好に関してのドメイン知識を取り入れられないし、コンテンツベースフィルタリングではユーザーの嗜好に関するデータを考慮できませんが、ハイブリッドした場合は双方のいいとこ取りができるために予測精度が向上します。

参考資料