第4回 レコメンデーションの仕組み

レコメンデーションの仕組み

レコメンドウエアハウス®の第4回です。 第4回は「レコメンドの仕組み」についてです。

前回の連載でレコメンドアルゴリズムを説明しました。 どのような優れたアルゴリズムがあっても、それを生かすためのデータと仕組みがなければ宝の持ち腐れになります。

今回はアルゴリズムを生かすためのレコメンドの仕組みについて説明します。

レコメンドシステム構成

レコメンドシステムの構成は月間億単位のトラフィック(PV)を対象にするポータル・情報サイトから中・小規模なサイトでサーバーの台数やインターネット回線に要求されるレベルは異なりますが、おおよそ下記のような構成になります。

【レコメンドシステムの構成】 「レコメンドシステム」

  1. レコメンドするためのデータを収集・蓄積する機能
  2. 収集したデータをレコメンドアルゴリズムを利用してデータ化する機能
  3. レコメンドを表示する機能

レコメンドデータの収集・蓄積

ウエブサーバー(および外部データ)からレコメンドするためのデータを蓄積します。

蓄積するデータは

  • ページ閲覧データ
  • 商品閲覧データ
  • 購入データ
  • プロファイルデータ
  • Webへの流入経路やキーワード
  • コンテンツデータ
  • ユーザのアクション(評価や投票)

等です。

レコメンドシステムではアルゴリズムが注目されがちですが、重要なのはどのデータを収集して、データ間をどのように関連付ける(紐付ける)かが、そのシステムの優劣を決定する大きな要素となります。 各データはユーザで紐づいていなければいけません。 そして、顧客(訪問回数)およびアイテム(商品やコンテンツ)が多いサイトの場合は、データの格納方法、集約方法が重要です。 レコメンドアルゴリズムの実装より、大量のデータを効率よく分類・関連付ける方が実装技術としては難易度が高いのです。

データ収集の技術としては

  • データモデル設計技術(データ構造)
  • 大量の(ネットワーク)トラフィックをさばく技術
  • 集計速度を高速化する技術
  • 分類(グルーピング)度を高速化する技術

が要求されます。

これらをどれだけ正確かつ高速に実装できているかが、レコメンドアルゴリズムを生かすことができるかどうかを決定するのです。

レコメンドデータの作成・更新

【レコメンドデータの作成・更新】 「レコメンドデータの作成・更新」

データの収集ができたら、レコメンドアルゴリズムを利用してユーザやアイテム、コンテンツの相関関係を計算します。 最終的にはレコメンド表示をすぐ行えるように、アイテムID(商品番号)や、コンテンツID(番号やURL)の形のデータを DB(またはファイル)に反映させます。

レコメンドデータの表示

【レコメンドデータの表示】 「レコメンドデータの表示」

ウエブサーバーと同じ環境にレコメンドシステムがある場合は、レコメンドデータから商品マスタ(コンテンツマスタ)を参照して、レコメンド表示を動的に作成します。 レコメンドASPを利用している場合はJavaScriptタグ(またはAPI)でレコメンドASPサーバーへレコメンドデータを要求して表示を組み立ててブラウザに表示します。

今回はレコメンドシステムの仕組みについて説明しました。実際は各レコメンドシステムで詳細な実装は異なる部分がありますが、大きな構成はこのとおりです。

レコメンドについてはアルゴリズムに注目しがちですが、実際のシステムの実装はどのデータをどのように収集して、どのようにデータ間を紐付けるかが重要ポイントです。 (残念ながら日本では、この点について強調しているサイト運営者、ベンダー、書籍はそう多くありません) レコメンドシステムでどのデータをどのように使うかが重要なことはアマゾン社やネットフリックス社のレコメンドシステムが示しています。

コンピュータ分野には「アルゴリズム+データ構造=プログラム」という名著がありますが、レコメンドも「アルゴリズム」+「データ構造」= 「レコメンドシステム」で構成されているのです。