DUICUO

Golang をベースにしたシンプルで実用的なレコメンデーション エンジンをお勧めします。

インターネットサービスにおける成功の鍵はパーソナライゼーションです。ライブストリーミングプラットフォーム、コンテンツのレコメンデーション、オンラインショッピング、オンライン動画の視聴など、私たちが目にするコンテンツは、プラットフォームによって綿密にキュレーションされていることは間違いありません。このキュレーションは、過去の行動や好みに基づいてユーザーが好むものを予測するレコメンデーションシステムによって生成されます。膨大なデータを分析することで、システムはユーザーの好みを特定し、パーソナライズされた体験を提供することで、ユーザーのエンゲージメントを維持します。

一般的に使用される推奨アルゴリズムは次のとおりです。

  • 協調フィルタリング
  • コンテンツベースの推奨
  • 行列分解
  • ディープラーニングアルゴリズム
  • 人気度アルゴリズム
  • マルチアームスロットマシンアルゴリズム

さらに、大規模モデルの急速な発展に伴い、それらを活用してレコメンデーションシステムを強化することは非常に有望な設計となっています。大規模モデルは、セマンティック理解、マルチモーダル特徴量融合、オンライン学習機能、特徴量抽出といった機能を活用することで、正確なユーザープロファイルの構築、コンテンツの理解と表現の向上、リアルタイムレコメンデーションとオンライン学習を可能にし、レコメンデーションシステムの精度とユーザーエクスペリエンスを大幅に向上させることができます。しかしながら、大規模モデルは現在、計算リソースへの依存、データプライバシー、モデルの汎化といった課題にも直面しています。

さまざまな推奨アルゴリズムの中で、協調フィルタリングは、ユーザーの行動とユーザー間の類似性に基づいて推奨を行う一般的なパーソナライズされた推奨方法です。

この記事で推奨する推奨システムは Gorse です。

ソースコードアドレス: https://github.com/gorse-io/gorse

GitHub スター: 8.4K

GorseはGo言語で開発されたオープンソースのレコメンデーションシステムです。Gorseプロジェクトの目標は、様々なオンラインサービスに迅速に組み込むことができる汎用性の高いオープンソースのレコメンデーションシステムとなることです。プロジェクト(製品、コンテンツ、サービスなど)、ユーザー、インタラクションデータをGorseにインポートするだけで、システムが自動的にモデルをトレーニングし、各ユーザーに合わせてパーソナライズされたレコメンデーションを生成します。

ゴースの処刑プロセス

下の画像に示すように:

ゴースの建築

Gorseは、予測および推奨プロセスにおいて、単一ノードのトレーニングと分散システムをサポートしています。Gorseは、データストレージとしてMySQL、MongoDB、またはPostgresをサポートし、中間結果のキャッシュとしてRedis、MySQL、MongoDB、Postgresをサポートしています。アーキテクチャ図は次のとおりです。

Gorseアーキテクチャでは、クラスタはマスターノード、複数のワーカーノード、そしてサーバーノードで構成されます。マスターノードは、モデルのトレーニング、パーソナライズされていないアイテムのレコメンデーション、構成管理、そしてメンバーシップ管理を担います。サーバーノードは、RESTful APIを公開し、リアルタイムのオンラインレコメンデーションを提供する役割を担います。ワーカーノードは、各ユーザーへのオフラインでの提案を提供する役割を担います。さらに、管理者はマスターノードのダッシュボードを通じて、システム監視、データのインポート/エクスポート、そしてシステムステータスの確認を行うことができます。

ゴースの特徴:

  • マルチソースの推奨をサポート: 人気のあるプロジェクト、最新のプロジェクト、ユーザーベース、プロジェクトベース、共同フィルタリング プロジェクトを推奨します。
  • 自動モデルマッチング: システムはバックグラウンドで最適な推奨モデルを自動的に検索します。
  • 分散予測: 単一ノードでのトレーニング後の推奨フェーズ中に水平スケーリングをサポートします。
  • RESTful API: データ CRUD および推奨リクエスト用の RESTful API を公開します。
  • オンライン評価: 最近挿入されたフィードバックからオンライン推奨事項のパフォーマンスを分析します。
  • ダッシュボード: データ管理、システム監視、クラスターのステータス チェック用の GUI を提供します。
  • Dockerサポート: Dockerを使用して簡単にインストールできます

ゴースの利点:

  • 高いスケーラビリティと高性能: Gorse は大規模なデータセットの処理とリアルタイムの推奨事項の提供に最適化されており、トラフィック量の多いアプリケーションに適しています。
  • 柔軟性: 複数のアルゴリズムをサポートし、協調フィルタリング、コンテンツベースの推奨、ハイブリッド モデルなど、さまざまなユース ケースに合わせて簡単にカスタマイズできます。
  • オープンソース:オープンソースプロジェクトであるGorseは、無料で使用、変更、既存のシステムへの統合が可能です。コミュニティからの継続的な貢献と改善によって恩恵を受けています。
  • 簡単な統合: Gorse は API と明確なドキュメントを提供するため、e コマース Web サイト、ニュース ポータル、ストリーミング サービスなどを構築する場合でも、アプリケーションに直接統合できます。

どうやって始めればいいですか?

Gorse は Docker をサポートしているので、試してみたい場合は Docker を使用して直接起動できます。

 docker run -p 8088:8088 zhenghaoz/gorse-in-one --playground

ブラウザで http://localhost:8088 にアクセスします。

その後、Gorse の GUI ダッシュボードを表示できます。

データのフィードバックを提供するにはどうすればいいですか?

GUIインターフェースの「タスク」ページで「プロジェクトの隣人を探す」タスクを完了したら、Gorseにフィードバックをいくつか入力してみましょう。例えば、フロントエンド開発者のBobがGitHubに複数の「フロントエンドリポジトリ」を追加したとします。彼のスター付きフィードバックをGorseに入力してみましょう。

 read -d '' JSON << EOF [ { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"vuejs:vue\", \"Timestamp\": \"2022-02-24\" }, { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"d3:d3\", \"Timestamp\": \"2022-02-25\" }, { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"dogfalo:materialize\", \"Timestamp\": \"2022-02-26\" }, { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"mozilla:pdf.js\", \"Timestamp\": \"2022-02-27\" }, { \"FeedbackType\": \"star\", \"UserId\": \"bob\", \"ItemId\": \"moment:moment\", \"Timestamp\": \"2022-02-28\" } ] EOF curl -X POST http://127.0.0.1:8088/api/feedback \ -H 'Content-Type: application/json' \ -d "$JSON"

ユーザーの推薦を得るにはどうすればいいですか?

フィードバック データを受け取った後、Gorse の API を使用して、どの「フロントエンド関連リポジトリ」が Bob に推奨されたかを確認できます。

 curl http://127.0.0.1:8088/api/recommend/bob?n=10