第3回 レコメンデーションのアルゴリズム

レコメンデーションのアルゴリズム

レコメンドウエアハウスの第3回です。 第3回は「レコメンドアルゴリズム」についてです。

アルゴリズムとは?

アルゴリズムとはコンピュータにある特定の目的を達成するための処理手順 のことです。 レコメンドシステムではアルゴリズムの優劣が精度や成果につながる重要な要素となります。

前回の連載でレコメンドアルゴリズムには アイテムベースとユーザベースがあることを説明しました。 どちらの手法でも最終的にはお薦めするアイテムを 見つけ出すためのアルゴリズムが必要です。

前回は協調フィルタリングを簡単に説明しました。 今回は他のアルゴリズムとして確率論を利用したベイズ理論 について説明します。

ベイズ理論

ベイズ理論とは何かが起こる可能性(未来)は過去のデータから発生頻度を 使って推測ができるという理論です。

ベイズ理論の応用としてはメールのスパム判定が有名ですが、 それ以外にも検索エンジンでのレコメンド(他キーワードをレコメンド) や、科学技術分野、経営予測モデルなど広い範囲で利用されてきています。

ベイズ理論は以下のような定理で導き出されます。

ベイズの定理

Aの下でBが発生する確率をP(B|A)と表します。

ベイズの定理ではP(A) > 0 の条件で、

  • P(A) = 事象Aが発生する確率
  • P(B) = 事象Bが発生する確率
  • P(B|A) = 事象Aが起きた後で事象Bが発生する確率(事後確率)

とすると、事象Bが発生したときにAが起きる確率を以下の式で求めます。

ベイズの定理

ベイズの定理

これをレコメンドに応用すると、 商品Aを買った人が商品Bを買う確率や、ある行動パターンをとった人の 次にとるアクションの確率を求めることができます。 この確率からお薦めの商品を決定する要素(スコア化、ランキング) とします。

実際は上記の基本式を応用して複雑な計算式で実装されていることが多いのですが、 基礎となる考え方は同じです。

ベイズ理論の応用

スパムフィルタリング

ベイズ理論の応用として有名な例がメールのスパムフィルタリングです。

スパムフィルタリングでは文章の中の単語の出現率を計算しておきます。以下に簡単な例を挙げます。 メール100通のうち、迷惑メールが70通、通常のメールが30通だと して、単語Aが迷惑メールには35通、通常メールには5通含まれているとすると、

スパムフィルタリングへの応用

  • 迷惑メールに単語Aが含まれる確率 = 35 / 70 = 0.5
  • 迷惑メールの確率 = 70 / 100 = 0.7
  • 全メールに単語Aが含まれる確率 = (35 + 5) / 100 = 0.4

単語Aを含むメールが迷惑メールと判断される確率をベイズ定理に当てはめると

0.5 x 0.7 / 0.4 = 0.875

となり、87.5%の確率で迷惑メールとみなすことができます。 (実際の実装は別の要素や文字パターン等を判定に加えていますが、ここでは簡単な例としています)

これをECサイトの購入データに置き換えると、商品Aを買った人が商品Bを買う確率や、ある属性をもつ人に対して推薦する商品をパターン化できるわけです。

ベイズ理論は事前確率と事後確率から成り立っています。重要なのはどのデータをどのように確率モデルに当てはめるかです。 ベイズ理論の計算方式としてはMCMC法(マルコフチェーン・モンテカルロ法)や、階層ベイズモデルがあります。 興味のある方は専門書等を調べてみてください。

ベイジアンネットワーク

ベイジアンネットワークとは、ベイズ定理を応用して 事象と事象を「確率付ノード」と「ノード間の依存関係」で 表現して確率ネットワークの形態でモデル化したものです。

ベイジアンネットワーク

例えば、ある商品を購入する人とプロファイル情報に依存関係があるならば、 3つのノードを確率的な関係でモデル化ができます。 そして、次に購入する商品の予測ができるようになります。

ベイジアンネットワークは音声認識や、画像パターン認識、リスク分析やデータマイニングにも応用されています。

その他のアルゴリズム

その他のレコメンドアルゴリズムには多変量解析を利用するものや、ニューラルネットワークやカーネル法といった アルゴリズムを使ってデータ分析した結果をレコメンドに応用している例もあります。 アイテムをレコメンドするだけでなく、コンテンツベースフィルタリングであるキーワードの出現数で類似性を評価して 類似コンテンツをレコメンドする例も考えられます。

レコメンドに利用するデータはコンテンツの閲覧履歴や購入履歴だけではなく、ユーザの アクション(行動)データを元にレコメンドする手法が増えてきています。

  • ユーザの投票や評価によるレコメンド
  • 口コミデータを分析して関連コンテンツをレコメンド
  • 人を嗜好で関連づけてレコメンド(ソーシャルレコメンド)

これからもレコメンドの活用シーンはどんどん増えていきそうです。

アクティブコアのac propoza(エーシープロポーザ)も協調フィルタリングとベイズ理論を取り入れた独自のアルゴリズムで実装されています。

次回はレコメンドシステムの仕組みについて解説します。