fbpx

CL LAB

HOME > Blog > Neo4j Sandbox紹介: Neo4jを活用したリアルタイムリコメンド #neo4j

Neo4j Sandbox紹介: Neo4jを活用したリアルタイムリコメンド #neo4j

 ★ 1

こんにちは!木内です。

一般的にパーソナルリコメンド(Amazonの「この商品を購入した人はこのような商品にも興味を持っています」のようなもの)の実装には大規模なデータセットを元に、機械学習のテクニックを駆使して実装する必要がありました。Neo4jを活用することで同じようなことを、より小規模なリソースで実装することができます。加えて今までのバッチ処理では難しかった、リアルタイムのリコメンドも可能にします。

この記事は Neo4j Sandbox で体験できる "Personalized Product Recommendations with Neo4j" を元に作成しています。記述の順番やクエリの内容についてはわかりやすく編集および作成したため、必ずしも Sandbox の解説内容と同じではありません。この記事を読んで興味がある方は、ぜひ Neo4j Sandbox のデモンストレーション( https://neo4j.com/sandbox-v2/ )で実際に体験してみてください。

リコメンドがもたらすもの

(リテール、eコマースなどの業界では)パーソナライズされた商品リコメンドによって、コンバージョンレートの増加、売上の増大、顧客満足度の向上を期待することができます。Neo4jによって実現できるパーソナルリコメンドは、従来のバッチ処理によるような処理ではなくリアルタイムのリコメンド結果を期待することができます。

以降の記述では、デモ用の映画データセットを使用してパーソナルリコメンドを実装していきますが、同じ考え方を異なる製品(例えば商品の小売など)に適用することも可能です。

グラフデータを活用することによるパーソナルリコメンドのメリット

パーソナルリコメンドの実装はグラフデータベースの用途として一般的です。グラフデータベースを使用してパーソナルリコメンドを実装することには以下のようなメリットがあります。

  • 性能: Neo4jではグラフデータそのものはオンメモリで探索することが可能です。このグラフ構造を探索することによって、従来のリレーショナルデータベースでは大量のデータをスキャンしなければいけなかった分析とは異なる手法で、リアルタイムのリコメンドを生成することができるようになります。これによりパーソナルリコメンドの用途がさらに広がることが期待できます。・・・例えばお店に入ったお客様が買い物かごを手に取るまでに、スマートフォンにリコメンドがプッシュ配信されたらとてもクールだと思いませんか?
  • データモデル: プロパティグラフモデルは、複数のデータセットからのデータ結合を容易に実現することができます。これにより従来データセットのサイズやスキーマの問題からリコメンドの学習データに用いられなかったようなデータを使用することができるようになります

以下の記述では Neo4j Sandboxにて MovieLens データベースの抜粋から構成されたグラフデータベースを元に、映画のリコメンドを実装してみます。クエリは Sandbox のデータに対するクエリになっていますので、Neo4j Sandbox を開きながら記事を読んでいただけると、より実感がわくと思います。

手法1 - アイテムベースフィルタリング

リコメンドに用いられる手法は大きく2種類に分類されます。ひとつがアイテムベースのフィルタリング(=リコメンド)、もうひとつが "協調フィルタリング" と呼ばれる手法です。まずはアイテムベースのフィルタリングを実装してみます。

一般的にリコメンドされるアイテム(今回の例では映画)は、ユーザが以前に見ていたり、高く評価していたり、購入しているアイテムと似ていることが多いです。例えば以下のクエリは、映画 Casino (邦題: カジノ) とジャンル、監督、出演者が同じの映画を抽出します。これがアイテムベースフィルタリングの原型になります。Neo4jにおいてこのクエリは非常に高速に処理されます。

MATCH p=(m:Movie {title: "Casino"})-

CL LAB Mail Magazine

CL LABの情報を逃さずチェックしよう!

メールアドレスを登録すると記事が投稿されるとメールで通知します。

メールアドレス: 登録

※登録後メールに記載しているリンクをクリックして認証してください。

Related post

[無料ウェビナー] GitLab_CI/CDハンズオン_2023111