第2回 レコメンデーションの種類

レコメンデーションの種類

第2回は「レコメンデーションの種類」です。

レコメンデーションにはどのような種類があるのでしょうか?

代表的なレコメンドには

  • 「この商品を買った人はこんな商品も買っています」
  • 「この商品を見た人はこんな商品も見ています」

があります。

【この商品を買っている人はこの商品も買っています】 「この商品を買っている人はこの商品も買っています」

この応用として

  • この記事を見た人はこの記事も見ています。
  • この動画を見た人はこの動画も見ています。
  • この記事に関連する商品はこちらです。
  • あなたに似たユーザはこちらです。

などがあります。

基本的にレコメンデーションは「データや属性を基に推薦するアイテム(情報)を決定して、お薦めを提示する(表示する)」仕組みです。

レコメンデーションの手法

レコメンデーションの手法は大きく分けると 関連する商品(アイテム)を見つけるか 関連するユーザを見つけるか 2つに分かれます。

アイテムベース

【アイテムベースのレコメンド】 「アイテムベースのレコメンド」

特定の商品に関連する商品群をレコメンドする手法を 「アイテムベース」のレコメンドと呼びます。 アイテムベースのレコメンドでは類似するアイテム(商品) を見つけ出して、関連するアイテムをレコメンドします。

ユーザベース

【ユーザベースのレコメンド】 「ユーザベースのレコメンド」

もうひとつの手法は「ユーザベース」のレコメンドです。 ユーザベースではそのユーザに類似したユーザを見つけます。 属性(プロファイル)や、行動パターン(行動履歴)から 類似度を計算します。そして類似するユーザが好む商品をレコメンドします。

類似度は以下のようなデータから求めます。

  • 行動履歴(閲覧や購入、ウエブサイト内のアクション)
  • プロファイル(年代、性別、住まい、興味のある分野)
  • コンテンツの類似度(例えばウエブページのテキストや画像の相関)

このようにレコメンドには大きく分けて2つのアプローチがあります。 アイテムベースのレコメンドとユーザベースのレコメンドです。

どちらも類似度を求めて、関連性を決定します。 類似度を計算する代表的な計算方法には以下があります。

  • ユークリッド距離
  • 加重平均
  • ピアソン係数

レコメンドの手法

代表なレコメンデーションの手法(アルゴリズム)として「協調フィルタリング」があります。 協調フィルタリングはレコメンドはコンテンツ自体の相関ではなく、 ユーザの行動履歴(閲覧、購入、評価等)を利用します。 ユーザのユーザの行動履歴からアイテム間の相関によりレコメンドするか、 類似ユーザの関心のあるアイテムをレコメンドします。

協調フィルタリングには行動ベースとモデルベース(予測モデル)がありますが、 ここではレコメンドで最も利用されている行動ベースの協調フィルタリングのアルゴリズムを単純な例でご紹介します。

協調フィルタリングのアルゴリズムではユーザとアイテムのデータを行列として 扱います。

「サンプル」

上記の図では縦軸にユーザ、横軸にユーザが購入した商品をとっています。 説明を簡単にするために購入履歴がある場合は1、ない場合は0を入れています。 (実際は正規化したり、一定の計算式でスコア化しますが、割愛します)

山田さんは商品Aを、鈴木さんは商品Cを、 田中さんは商品A,B,Dを買っています。

このデータから 「商品Aを買った人が買っている他の商品は?」 を見つけてみましょう。

関連性が高い商品を見つけるには、ユーザで紐付けて商品と商品の行列をつくります。

「商品x商品」

そうすると、上図のように商品x商品の行列ができます。 商品Aに対してレコメンドする商品はBとDです。

次はユーザベースではどうなるか見てみましょう。

山田さんと類似するユーザはだれ?

「ユーザxユーザ」

山田さんに類似するのは田中さんです。したがって、山田さんには田中さんを推薦します。山田さんにアイテムをレコメンドする場合は田中さんの嗜好にあった商品BとDをレコメンドします。

説明を単純にするために購入している場合は1、購入していない場合は0と簡単な例で説明しましたが、 実際には購入回数や金額等から計算した係数から類似性を決定します。

一般的にはユーザベースよりもアイテムベースの方が計算処理量が少なく、高速とされています。 履歴データが膨大になると、アイテムベースとユーザベースではレコメンドの精度は差がなくなり、アイテムベースのほうがスケーラビリティがあるとされています。

協調フィルタリングはアイテムをブラックボックスとして使用します。 あくまでユーザの行動履歴から関連性を求めます。 したがって不特性多数のユーザが訪問するウエブサイトにとって、 効果のある手法だと言われています。 ただし、欠点としてはある程度のボリュームの行動履歴が蓄積されないと 効果的なレコメンドができない点が挙げられます。

協調フィルタリングの他のレコメンドアルゴリズムとしては、 ユーザをクラスタリング(グループ化)する方法や、 確率予測モデルを応用してレコメンドするといった手法があります。 また、アイテムからアイテム、ユーザからユーザをレコメンドする他に 「このコンテンツを閲覧した人はこの商品を買っています」 といったコンテンツと購入データといった異なるデータの関係性(ネットワークモデル) からレコメンドする手法もあります。

ただし、複雑なアルゴリズムだから精度が高い、結果がいいとは限りません。 また、複雑なアルゴリズムの場合、ユーザ数やアイテム数の多さによっては実装が難しく、 スケーラビリティやパフォーマンスの問題がでてくる場合があります。 そのためにはレコメンドアルゴリズムとは別に、大容量データを高速に処理するシステム構築を行う必要があります。

アマゾン社のレコメンドはアイテムベースでかつ、シンプルな協調フィルタリングで 実装されていますが、同社に大きな恩恵をもたらしています。

次回はレコメンドアルゴリズムについてもう少し詳しくみていきましょう。