問題タブ [recommendation-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
recommendation-engine - 基本的なレコメンデーション エンジンを作成する
数値 ID (本に関連する) のリストを取得して保存し、それらを大量の同一 ID を持つ他のユーザーと比較し、それらの検索結果に基づいて追加の本を推奨する基本的なレコメンデーション エンジンを作成しようとしています。
少しグーグルした後、この記事を見つけました。これは、Slope One アルゴリズムの実装について説明していますが、比較対象のアイテムを評価するユーザーに依存しているようです。理想的には、ユーザーが評価を提供する必要なく、これを実現したいと考えています。ユーザーがこの本を自分のコレクションに持っている場合、彼らはそれを気に入っていると思います。
各本にデフォルトで 10 の評価を付けることができると思いますが、使用できるより効率的なアルゴリズムがあるかどうか疑問に思っています。理想的には、これらの推奨事項をオンザフライで計算したいと思います (バッチ計算を避けます)。任意の提案をいただければ幸いです。
php - DJWebサイトのCMS
現在、DJ向けのウェブサイトを構築中です。車輪の再発明をする代わりに、利用できる解決策があれば、そこに目を向けると思いました。私の要件は次のとおりです。
- 独自のドメイン名とカスタムデザインを持つ機能
- DJの曲を聴くためのセクション
- 写真のセクション
- ビデオのセクション
- 静的ページを管理するための通常のCMS機能(個人の経歴)
- セルフホスト&PHPは大きなプラスです
- オープンソース/独自の無料/有料は関係ありません
より一般的なCMS(つまり、WordPress)で答える場合、役立つ拡張機能をいくつか指摘できますか。また、すべての要件を満たしていないが、どの要件が利用できないかを明示しているWebアプリも利用できます。
algorithm - レコメンデーション エンジンを実装するにはどうすればよいですか?
私の英語は堪能ではないので、私の文章を辛抱強く待ってください。
プログラマーとして、推奨システムまたは関連ベースのシステムの下に実装されているアルゴリズムまたは機械学習インテリジェンスについて学びたいと思っています。たとえば、最も明白な例は Amazon です。彼らは本当に良い推薦システムを持っています. 彼らは、「これが好きなら、あれも好きかもしれない」、または「これとあれを一緒に 好きな人は何パーセントか」を知るようになります。
もちろん、Amazon が大きなウェブサイトであり、これらのシステムに多くの頭脳と資金を投資したことは知っています。しかし、非常に基本的なコアでは、データベース内にそのようなものをどのように実装できるのでしょうか? あるオブジェクトが他のオブジェクトとどのように関連しているかをどのように特定できますか? この種のことを処理する統計ユニットをどのように構築できますか?
誰かがいくつかのアルゴリズムを指摘できれば幸いです。または、基本的に、私たち全員が学ぶことができるいくつかの優れた直接の参考文献/本を指摘してください. 皆さん、ありがとうございました!
php - PHP でのプロフィール検索
ソーシャルネットワークを作成しています。プロファイルが新しいプロファイルを検出して接続できるプロファイル検索または検索エンジンを実装しようとしています。PHP にアルゴリズムやモジュールはありますか? 検索を可能な限り関連性のあるものにする方法について何か提案がある人はいますか?コードの例を教えてください。
似たような名前が何千もあるネットワークで、プロファイルを名前 (名字と姓の両方) で分類できるアルゴリズム。Facebookはこれを共通の友達アルゴリズムで行っていますが、特許を取得していると思われるため、使用できません。
私は、Facebook のプロフィール検索と少なくとも同程度の、最も関連性の高い検索結果を提供することで、プロフィールがいくつかの新しいプロフィールを発見できるアルゴリズムを実装しようとしています。任意のヒント?
更新:質問をより具体的にしました
どうもありがとう!ウォホ87
c - 正規表現パーサーの C 実装に関する推奨事項
開発中の C ライブラリに正規表現パーサーを実装することを考えています。さて、問題は、逐語的に、またはできるだけ変更を加えずに使用できるオープン ソース コードはあるかということです。コードに関する私の期待は次のとおりです。
- C で記述する必要があります (C++ ではありません)。
- gcc、mingw、M$VC でコンパイルする必要があります。
- サードパーティまたは OS 固有のヘッダー/ライブラリに依存してはなりません (つまり、コンパイルに必要なものはすべて、gcc、mingw、M$VC の基本インストールですぐに利用できる必要があります)。
- Perl 互換の正規表現構文 (PHP の PCRE など) を使用するとよいでしょう。
- 理想的には、コードはできるだけコンパクトにする必要があります
推奨できる既製のソリューションはありますか? 私は C 用の PCRE を見ていましたが、PHP で利用できるもの (ルール) がすべて含まれているように見えますが、サイズ (1.4MB DL) は少し威圧的です。それは堅実な賭けだと思いますか?または、検討する価値のある他のオプションはありますか?
[編集]
私が開発しているライブラリは、オープン ソース、BSD ライセンスです。
algorithm - アイテムごとのレコメンデーションを超えて
シンプルなアイテムからアイテムへのレコメンデーション システムはよく知られており、頻繁に実装されています。例は、Slope One アルゴリズムです。. ユーザーがまだ多くの項目を評価していない場合はこれで問題ありませんが、一度評価した場合は、よりきめ細かいおすすめを提供したいと考えています。非常に人気がある音楽レコメンデーション システムを例に挙げてみましょう。ユーザーがモーツァルトの曲を表示している場合、別のモーツァルトの曲またはベートーベンの提案が表示される場合があります。しかし、ユーザーがクラシック音楽に多くの評価を付けている場合、アイテム間の相関関係を作成し、ユーザーがボーカルや特定の楽器を嫌っていることを確認できる可能性があります。これは 2 つの部分からなるプロセスであると想定しています。最初の部分は、各ユーザーの評価間の相関関係を見つけることであり、2 つ目は、これらの追加データから推奨マトリックスを構築することです。問題は、これらの各ステップに使用できるオープンソースの実装またはペーパーがあるかどうかです。
cluster-analysis - コンテンツベースのアイテム推奨のアプローチ
私は現在、同様のアイテムをグループ化するアプリケーションを開発しています。アイテム(ビデオなど)はユーザーが作成でき、属性は後で変更または拡張できます(新しいタグなど)。ほとんどの協調フィルタリングメカニズムのようにユーザーの好みに依存するのではなく、アイテムの属性(類似した長さ、類似した色、類似したタグのセットなど)に基づいてアイテムの類似性を比較したいと思います。計算は、2つの主な目的で必要です。x
特定のアイテムに類似したアイテムを提案することと、類似したアイテムのグループにクラスタリングすることです。
これまでの私のアプリケーションは非同期設計に従っており、このクラスタリングコンポーネントを可能な限り分離したいと考えています。新しいアイテムの作成または既存のアイテムの新しい属性の追加は、コンポーネントが消費できるイベントを公開することによってアドバタイズされます。
計算はベストエフォートで「スナップショット」で提供できます。つまり、結果の品質は最終的には向上しますが、特定の時点で可能な限り最高の結果が得られます。
そのため、私は現在、類似したアイテムとクラスターの両方を計算するための適切なアルゴリズムを探しています。重要な制約はスケーラビリティです。最初はアプリケーションが数千のアイテムを処理する必要がありますが、後で数百万のアイテムも処理できる可能性があります。もちろん、計算は追加のノードで実行されますが、アルゴリズム自体はスケーリングする必要があります。また、アルゴリズムがデータの部分的な変更に対してある種のインクリメンタルモードをサポートしていると便利です。
各アイテムを相互に比較し、数値の類似性を保存するという私の最初の考えは、少し粗雑に聞こえます。n*(n-1)/2
また、すべての類似性を保存するためのエントリが必要であり、変更または新しいアイテムがあると、最終的にn
類似性の計算が行われます。
前もって感謝します!
更新tl;dr
私が欲しいものを明確にするために、これが私のターゲットシナリオです:
- ユーザーがエントリを生成する(ドキュメントを考えてください)
- ユーザー編集エントリのメタデータ(タグを考えてください)
そして、これが私のシステムが提供するものです:
- 推奨事項としての特定のアイテムに類似したエントリのリスト
- 同様のエントリのクラスター
両方の計算は、以下に基づく必要があります。
- エントリのメタデータ/属性(つまり、同様のタグの使用)
- したがって、適切なメトリックを使用した2つのエントリの距離
- ユーザーの投票、設定、またはアクションに基づくものではありません(協調フィルタリングとは異なります)。ユーザーはエントリを作成して属性を変更できますが、計算ではアイテムとその属性のみが考慮され、関連付けられているユーザーは考慮されません(アイテムのみが存在し、ユーザーが存在しないシステムのように)。
理想的には、アルゴリズムは以下をサポートする必要があります。
- エントリの属性の永続的な変更
- 変更時に類似のエントリ/クラスターを段階的に計算する
- 規模
- 可能であれば、単純な距離テーブルよりも優れたもの(O(n²)スペースの複雑さのため)
nosql - ページビューの追跡と関連データの表示
ユーザーが Web サイトでどの記事を読んだかを追跡したい。
次に、そのデータを使用して、次のことを知ることができます。
1) - 過去 1 時間/日/週/月に読まれた上位 N の記事
2) - 推奨事項を表示する (「これを読んだユーザーは、それも読んだ」)
3) - (1) と同じですが、サイトの特定のセクション用です
サイトのトラフィックが多いため (> 1M ビュー/日)、これに RDBMS を使用することはできません。
私はNoSQL(特にcassandra)を見始めましたが、それは私にとってまったく新しいものなので、それが必要かどうかわかりません。
私は、このようなことを必要とする最初の人ではないと確信していますが、このようなことを行う方法についてのポインタを提供するリンク/記事を見つけることができませんでした. NoSQL は最善のアプローチですか? データモデルに関するヒントはありますか?
ありがとう。
c# - プロパティを使用した遅延初期化のメソッド
現在、広く使用されているクラスを変更して、高価な初期化の多くをクラス コンストラクターから Lazy Initialized プロパティに移動しています。以下に例を示します (c# の場合):
前:
後:
私が変更しているクラスには、これらのプロパティがかなり多くあり、特定のコンテキストでは使用されないものもあります (したがって遅延)。ただし、それらが使用されると、繰り返し呼び出される可能性があります。
残念ながら、プロパティはクラス内でも使用されることがよくあります。これは、プライベート変数 (_b) が初期化されずにメソッドによって直接使用される可能性があることを意味します。
クラス内でパブリック プロパティ (B) のみを使用できるようにする方法はありますか?
これはプログラマーから再投稿されたものです (明らかに主観的ではありません): https://softwareengineering.stackexchange.com/questions/34270/best-methods-for-lazy-initialization-with-properties
database-design - 「これを購入したお客様はこちらも購入済み」の保管方法
Amazonの「これを購入したお客様はこちらも購入済み」のような機能を構築しています。私はこのデータをマイニングするために約 6 年間の注文を受けており、明らかに新しい注文からのデータで更新を続けています。
いくつかの質問が思い浮かびます:
- これらの関係を保存するにはどうすればよいですか? 私は、productA、productB、およびカウント (またはランク) を含む単純なテーブルを考えています。これで十分ですか?
- 古いデータが新しいデータほど関連性があるとは思いません。新しいデータに優先順位を付けるにはどうすればよいですか?
編集: このサイトは 1 種類の商品しか販売していないため、ほとんどすべての商品に関連性があり、フィルタリングする必要はありません。また、これをできるだけ単純にしたいと思います。データはすでにデータベースにあるので、計算して保存する最も簡単な方法を探しています。