私が取り組んでいるサイトのユーザーのために「隣人」(似たような趣味を持つ人々) を生成するテクニックを探しています。last.fm の動作に似たもの。
現在、私はユーザー向けの互換性機能を持っています。1) 同様のアイテムを評価したこと、2) 同様にアイテムを評価したことでユーザーをランク付けします。この関数の重みは 2 倍高くなります。これは、「近隣」を生成するときにこれらの要因の 1 つだけを使用する必要がある場合に最も重要になります。
私が持っていた 1 つのアイデアは、ユーザーのすべての組み合わせの互換性を計算し、最も評価の高いユーザーをそのユーザーの隣人として選択することです。これの欠点は、ユーザー数が増えると、このプロセスに非常に長い時間がかかる可能性があることです. ちょうど 1000 人のユーザーの場合、1000C2 (0.5 * 1000 * 999 = = 499 500) の互換性関数呼び出しが必要で、サーバーにも非常に負担がかかる可能性があります。
ですから、このようなシステムを実現するための最善の方法について、アドバイスや記事へのリンクなどを探しています。