I. 推薦システムの概要インターネット時代において、レコメンデーションシステムは至る所で利用されています。例えば、昨夜JD.comでスニーカーを探していたら、今朝Toutiaoでスニーカー関連の広告が表示されました。このブログ記事を読んでいるときに、言及されている広告が以前フォローしていたものかどうかお気づきでしょうか? レコメンデーションシステムは常に注目の技術分野であり、ビジネスにおける機械学習の応用分野の中でも最も成功し、広く利用されているものの一つです。レコメンデーションシステムは、ユーザーの過去の行動、社会的関係、そして興味に基づいて、製品やサービスに対する現在のニーズや関心を判断するアプリケーションです。レコメンデーションシステムは本質的に情報フィルタリングの手法であり、検索とカテゴリーナビゲーションと並んで、3つの主要な情報フィルタリング手法の一つを形成しています。 ユーザーにとって、レコメンデーションシステムは好みの商品やサービスを見つけ、情報に基づいた選択を行うのに役立ちます。サービスプロバイダーにとっては、パーソナライズされたサービスを提供し、ユーザーの信頼と忠誠心を高め、収益を向上させることができます。 II. レコメンデーションエンジンとは何ですか?レコメンデーションシステムの中核はレコメンデーションエンジンです。レコメンデーションエンジンは、顧客の過去の購入履歴に基づいて商品をフィルタリングし、顧客が興味を持っている商品や購入する可能性の高い商品を特定します。顧客に関するデータが豊富であればあるほど、レコメンデーションの精度は高まります。しかし、このアプローチは新規顧客に対しては過去のデータがないため、うまく機能しません。そのため、この問題に対処するには、別の戦略が必要です。最も人気のある商品を顧客にレコメンデーションすることは、すべての新規顧客に同じレコメンデーションが適用されるため、必ずしも正確であるとは限りません。そのため、一部のアプリでは、より正確なレコメンデーションを提供するために、新規顧客の興味について質問しています。 さまざまな顧客や製品に対して、推奨エンジンのフィルタリング方法には、コンテンツベースのフィルタリング、協調フィルタリング、ハイブリッド フィルタリングなどがあります。 1. コンテンツベースのフィルタリングコンテンツベースのフィルタリングは、商品の説明やその他のデータに基づいて商品間の類似性を検索します。また、過去の購入履歴に基づいて、ユーザーが好みそうな類似商品も特定します。例えば、ユーザーが「ミッション:インポッシブル」のような映画を好んでいる場合、トム・クルーズ主演の映画をおすすめするといったことが可能です。 このフィルタリング手法では、2種類のデータを使用します。1つ目はユーザー関連情報(ユーザーベクトル)で、ユーザーの好み、興味、個人情報(年齢など)、ユーザー履歴などが含まれます。2つ目は商品関連情報(アイテムベクトル)で、すべてのアイテムの特徴を含み、これに基づいてアイテム間の類似度を計算できます。 コサイン類似度を用いて計算できます。「A」がユーザーベクトル、「B」がアイテムベクトルの場合、コサイン類似度は以下の式で計算されます。 最後に、コサイン類似度マトリックスで計算された値が降順にソートされ、上位の項目が 1 つ以上ユーザーに推奨されます。 コンテンツベースのフィルタリングの利点は次のとおりです。
欠点は次のとおりです。
2. 協調フィルタリング協調フィルタリングはユーザーの行動に基づいて実行されます。ユーザーの過去の行動情報は重要な役割を果たします。例えば、ユーザー「A」が「Coldplay」、「The Linkin Park」、「Britney Spears」を好み、ユーザー「B」が「Coldplay」、「The Linkin Park」、「Taylor Swift」を好みの場合、両者は類似した興味を持っていることになります。したがって、ユーザー「A」は「Taylor Swift」を好み、ユーザー「B」は「Britney Spears」を好む可能性が高くなります。これが協調フィルタリングの仕組みです。 協調フィルタリング手法には、ユーザー間協調フィルタリングとアイテム間協調フィルタリングが含まれます。 (1)ユーザー間協調フィルタリング ユーザーベクトルには、ユーザーが購入したすべてのアイテムと、各アイテムに与えられた評価が含まれます。ユーザー間の類似度は、n*n行列を用いて計算されます。ここで、nは既存ユーザー数です。類似度は、同じコサイン類似度計算式を用いて計算されます。次に、推奨行列が計算されます。この場合、評価には、アイテムを購入したユーザーと、そのアイテムを推奨するユーザーとの間の類似度が乗算されます。この値は、そのユーザーのすべての新規アイテムに対して計算され、降順でソートされます。そして、最も重要なアイテムがそのユーザーに推奨されます。 新しいユーザーが参加したり、既存のユーザーがプロジェクトに対する意見を変えたりした場合、推奨されるプロジェクトも変更される可能性があります。 (2)プロジェクト間協調フィルタリング このアプローチでは、類似ユーザーではなく、類似プロジェクトが考慮されます。ユーザー「A」が「インセプション」を気に入っている場合、「オデッセイ」と「オデッセイ」にはいくつかの類似点があるため、「オデッセイ」も気に入る可能性があります。推薦マトリックスはm×mマトリックスで、mは既存プロジェクトの数です。 協調フィルタリング アルゴリズムの利点は次のとおりです。
欠点は次のとおりです。
3. ハイブリッド推奨アルゴリズムコンテンツベース推奨アルゴリズムと協調フィルタリングアルゴリズムにはそれぞれ長所と短所があります。より正確に商品を推奨するには、コンテンツベースと協調フィルタリングのアプローチを組み合わせたハイブリッド推奨アルゴリズムを使用できます。ハイブリッド推奨アルゴリズムは、より高い効率性と実用性を備えています。 III. オープンソースのレコメンデーションシステム10選に関する関連リソースレコメンデーション システムをさらに理解するために、学習リソース、開発パッケージ、完全なレコメンデーション システムなど、学習や開発に最適なオープン ソース プロジェクトをいくつか集めてみました。 1. d2l-zh または d2l-enGitHub (K):
言語: Python このライブラリには、インタラクティブなディープラーニング関連の書籍、複数のフレームワークのコード、数学資料やディスカッション資料、レコメンデーションシステムのアルゴリズムなど、様々な資料が含まれています。スタンフォード大学、MIT、ハーバード大学、ケンブリッジ大学など、70か国500以上の大学で導入されており、人工知能を学ぶための優れたリソースとなることは間違いありません。 このライブラリの目的は次のとおりです。
2. 推薦者GitHub (16.7K): https://github.com/recommenders-team/recommenders 言語: Python このライブラリには、Jupyter ノートブックの形式で提供される、レコメンデーション システムを構築するためのさまざまな例とベスト プラクティスが含まれています。 以下の図は、このベスト プラクティスの例が、レコメンデーション システム開発ワークフローにおいて研究者/開発者にどのように役立つかを示しています。 以下は、examples ディレクトリの下のサブディレクトリの内容の説明です。 3. ハリエニシダGitHub (7.7K): https://github.com/gorse-io/gorse 言語: 囲碁 GorseはGo言語で書かれたオープンソースのレコメンデーションシステムです。Gorseは、様々なオンラインサービスに迅速に統合できる汎用性の高いオープンソースのレコメンデーションシステムを目指しています。プロジェクト、ユーザー、インタラクションデータをGorseにインポートすることで、システムは自動的にモデルをトレーニングし、各ユーザーに最適なレコメンデーションを生成します。 機能は次のとおりです:
Gorseシステムは、データをMySQL、MongoDB、またはPostgresに保存し、中間結果をRedis、MySQL、MongoDB、またはPostgresにキャッシュします。単一ノードでの学習をサポートし、分散環境でのレコメンデーションシステムの運用を可能にします。管理者は、マスターノードのダッシュボードからシステムの状態を監視し、データのインポート/エクスポート操作を実行できます。 分散アーキテクチャは次のとおりです。 ダッシュボードのインターフェースは次のとおりです。 4. ライトFMGitHub (4.5K): https://github.com/lyst/lightfm 言語: Python LightFMは、Pythonで実装されたハイブリッドな推薦アルゴリズムです。暗黙的フィードバックと明示的フィードバックの両方に対応した推薦アルゴリズムプロジェクトであり、BPRとWARP損失アルゴリズムに基づく効率的な実装が含まれています。使いやすく、高速(マルチスレッドモデル推定により)で、高品質な結果を生成できます。 また、プロジェクトとユーザーのメタデータを従来の行列分解アルゴリズムに組み込むこともできるため、推奨事項を新しいプロジェクト (プロジェクト機能に基づく) と新しいユーザー (ユーザー機能に基づく) に拡張できます。 5. 暗黙のGitHub (3.3K): https://github.com/benfred/implicit 言語: Python このプロジェクトでは、いくつかの異なる一般的な推奨アルゴリズムの高速 Python 実装と、高速 Python 協調フィルタリング用の暗黙的なデータセットを提供します。
6. スポットライトGitHub (2.9K): https://github.com/maciejkula/spotlight 言語: Python Spotlightは、PyTorchを用いて構築されたディープレコメンデーションモデルです。レコメンデーションシステムを迅速に実装するためのツール、そして新しいレコメンデーションモデルのプロトタイプとなることを目指しています。 7. イージーレックGitHub (1.3K): https://github.com/alibaba/EasyRec 言語: Python EasyRecは、Alibabaが提供するオープンソースの大規模推薦アルゴリズムフレームワークです。候補生成(マッチング)、スコアリング(ランキング)、マルチタスク学習といった一般的な推薦タスクに対応する最先端のディープラーニングモデルを実装しています。シンプルな設定とハイパーパラメータチューニング(HPO)により、高性能モデルの生成効率を向上させます。 8. TensorflowレコメンダーGitHub (1.7K): https://github.com/tensorflow/recommenders TensorFlow Recommenders は、TensorFlow を用いてレコメンデーションシステムモデルを構築するためのライブラリです。このプロジェクトは、データ準備、モデル開発、トレーニング、評価、そしてデプロイメントを含む、レコメンデーションシステム構築のための包括的なワークフローを提供します。Keras フレームワーク上に構築されているため、学習曲線が緩やかでありながら、複雑なモデルを柔軟に構築できます。 9. トーチレックGitHub (2K): https://github.com/pytorch/torchrec 言語: Python TorchRecは、大規模レコメンデーションシステム(RecSys)に必要な共通のスパース並列プリミティブを提供するように設計されたPyTorchドメインライブラリです。これにより、複数のGPUにまたがるモデルの学習が可能になります。 TorchRec は以下を提供します。
10. RecSysデータセットGitHub: https://github.com/RUCAIBox/RecSysDatasets 言語: Python これは、レコメンデーションシステム(RS)のトレーニングに利用できる公開データソースです。すべてのデータセットはアトミックファイルに変換できるため、レコメンデーションシステムのための統合的かつ包括的で効率的なリソースとなります。アトミックファイルに変換後、RecBoleを用いて、これらのデータセット上で様々なレコメンデーションモデルのパフォーマンスをテストできます。 データセットには、ショッピング、映画、広告、音楽、書籍、写真、ゲーム、ウェブサイト、食品、ニュース、衣料品などが含まれます。 結論は上述のオープンソースの推薦システムリソースは、推薦技術の理解を深める上で役立ちます。これらの既存技術を基盤として、インターネットプラットフォームは、ユーザーが情報や商品をより迅速に受け入れやすくし、プラットフォームの収益向上とパーソナライズされたサービス提供を可能にします。しかし、これは「ビッグデータに基づく価格差別」や「情報の繭」といった副作用も生み出します。将来の推薦システムは、より人間中心的であるべきでしょう。 |