私は、Amazonの「Xを表示/購入した顧客はYとZも表示/購入した」という方針に沿って、商品間の類似性を計算しようとしています。私が見たすべての例と参照は、ランク付けされたアイテムのアイテムの類似性を計算するため、ユーザーとユーザーの類似性を見つけるため、または現在のユーザーの履歴に基づいて推奨アイテムを見つけるためのものです。現在のユーザーの好みを考慮に入れる前に、ターゲットを絞らないアプローチから始めたいと思います。
Amazon.comの推奨事項に関するホワイトペーパーを見ると、オフラインの商品と商品の類似性について次のロジックを使用しています。
For each item in product catalog, I1
For each customer C who purchased I1
For each item I2 purchased by customer C
Record that a customer purchased I1 and I2
For each item I2
Compute the similarity between I1 and I2
正しく理解できれば、「I1とI2の類似性を計算する」までに、単一の値I1(外側のループ)と組み合わせて購入したアイテム(I2)のリストがあります。
この計算はどのように実行されますか?
もう1つのアイデアは、これを考えすぎて、必要以上に難しくしているということです。I1と組み合わせて購入したI2の数についてトップnのクエリを実行するだけで十分でしょうか。
このアプローチが正しいかどうかについての提案にも感謝します。私の製品データベースには、いつでも約15万のアイテムがあります。私が見た読み物の大部分は、ユーザーとアイテムの類似性、さらにはユーザーとユーザーの類似性を示しているので、代わりにそのルートを探す必要があります。
私は過去に類似性アルゴリズムを使用しましたが、それらには常にランクまたはスコアが含まれていました。これが機能する唯一の方法は、購入/購入していない場合に0/1のスコアを付ける顧客と製品のマトリックスを作成することだと思います。購入履歴とアイテムサイズを考えると、これは非常に大きくなる可能性があります。
編集:Pythonをタグとしてリストしましたが、できればOracle PL / SQLを使用して、ロジックをデータベース内に保持したいと思います。