あなたが説明したことについてはあまり明確ではありません。アマゾンがやっていることのように、アイテムベースの推奨が欲しいということですか?。
2つのアイテム間の類似性はさまざまな方法で判断できますが、一般的な方法は、前述のコサインメジャーを使用することです。この場合、各ベクトルは顧客ではなくアイテムに対応し、ベクトルのM
ディメンションはそれを購入した顧客に対応します。アイテム。
このアルゴリズムでは、最も近いアイテムを準備するために集中的なオフライン処理が必要です。それらが完了すると、similar-item-queryへの応答は非常に高速になります。
編集
各アイテムの上位の類似アイテムがわかればk
、各アイテムペアのスコアが得られます。つまり、2つのアイテムの類似度です。score(i,j)
アイテムのリストを考えると:[1,2,3]
k
まず、リスト内の各アイテムの上位アイテムを見つけます。それぞれのスコアもあります。仮定k=3
:
`[100,44,99]` are the top 3 items that are similar to item 1.
score(1, 100) = 0.84, score(1, 44) = 0.4, score(1, 99) = 0.33
score(2, 44 ) = 0.3, score(2, 33) = 0.2, score(2, 70) = 0.15
score(3, 99) = 0.4, score(3, 44) = 0.15, score(3, 70) = 0.01
次に、に存在するすべてのアイテムのスコアを集計しますscore([1-3],__)
。つまり、次のようになります。
score(100) = 0.84
score(44) = 0.4 + 0.3 + 0.13 = 0.83
score(99) = 0.33 + 0.2 = 0.53
score(33) = 0.2
score(70) = 0.15+0.01=0.16
並べ替えた後、上から下へのアイテムは次のようになります。
100-> 0.84
44 -> 0.83
99 -> 0.53
33 -> 0.2
70 -> 0.16
もちろん、推奨アイテムの最終リストで、指定されたリストにすでに含まれているもの(ユーザーが既に持っているアイテム)を削除したい場合があります。
上記の例では、項目44が3行に表示されていますが、それらの類似度スコアはすべて低いことに注意してください。それでも、アイテム100を最適なものとして選択します。直感的には、類似性の寄与を累積し、それらの集約された寄与を比較します。