のんびりSEの議事録

プログラミング系のポストからアプリに関してのポストなどをしていきます。まれにアニメ・マンガなど

レコメンドエンジンを構築するに当たって調べたこと

最近関わっている案件で、レコメンドエンジンを構築することになったので、その際調べたことを記録しておきます。

レコメンドエンジン

レコメンデーションとは

ユーザに対して自動的に何らかのおすすめを提示すること。レコメンデーションを行うソフトウェアのことをレコメンドエンジンという

  • ユーザ: システムを使う人間。利用者
  • アイテム: ユーザにおすすめするもの、サービス、商品etc

Point

  • 何(誰)に対して
  • 何(誰)をおすすめするのか

Pattern

  1. ユーザに対してアイテムをレコメンドする
  2. アイテムに対してアイテムをレコメンドする
  3. アイテムに対してユーザをレコメンドする
  4. ユーザに対してユーザをレコメンドする

協調フィルタリング

http://www.albert2005.co.jp/technology/marketing/c_filtering.html

ある対象者が商品をチェックまたは購入したデータと、対象者以外がチェックまたは購入したデータの両方を用い、 その購入パターンから人同士の類似性、または商品間の共起性をアソシエーション分析(相関分析)で解析し、 対象者個人の行動履歴を関連づけることでパーソナライズされた商品を提示することができる手法です。

協調フィルタリングとレコメンド

協調フィルタリングはユーザの行動データを利用する

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

データを軸とする分類

  • コンテンツデータ

    アイテムそのものから得られる情報。
    コンテンツデータの場合、ユーザに関する情報が無いので、各ユーザ向けにパーソナライズされたレコメンデーションは行えない

  • メタデータ

    アイテムそのものではなく、ユーザの行動などに付随して得られる情報。

手法を軸とする分類

  • ルールベース

    サービスの提供者が予めユーザの行動を想定してルールを作成しておき、そのルールに従ってレコメンデーションを行う
    サービス提供者、ユーザ双方の納得感があるレコメンデーションが行いやすい
    ルールを作成する、メンテナンスコストが発生する

  • 機械学習・統計ベース

    予め正解となるデータを作って置くか、もしくはアイテム間の何らかの類似度を見ることで、自動でレコメンデーションを行う手法

サンプリング

あるデータの1部を利用する

クラスタリング

データの集合を部分集合(クラスタ)に切り分けて、それぞれの部分集合に含まれるデータがある共通の特徴を持つようにする。この特徴は多くの場合、類似性や、ある程度定められた距離尺度に基づく近さで示される。

クラスタリング手法

k-means法(k平均法)

クラスタの平均を用い、与えられたクラスタ数k個に分類する

  1. 各データに対してランダムにクラスタを割り振る
  2. 割り振ったデータを元に各クラスタの中心を計算する。計算は通常通り割り当てられたデータの各要素の算術平均が使用されるが、必須ではない
  3. 各 xi と各 V_j との距離を求め x_i を最も近い中心のクラスタに割り当て直す。
  4. 上記の処理で全ての x_i のクラスタの割り当てが変化しなかった場合、あるいは変化量が事前に設定した一定の閾値を下回った場合に、収束したと判断して処理を終了する。そうでない場合は新しく割り振られたクラスタから {\displaystyle V_{j}} V_j を再計算して上記の処理を繰り返す。

k平均法