4

SVDに基づいてアイテムを推奨するモデルをトレーニングしましたuserId。ただし、アイテムリストではなくアイテムリストに基づいてアイテムを推奨する方法はありますuserIdか?

たとえば、アイテムのリストが与えられると[1,2,3,4,5]SVDモデルは最も類似したアイテムを検索します[9,10]。私の解決策は、入力から各アイテムに類似したアイテムを見つけ、[9,10]出力として共通のアイテムを取得することです。

あれは、

  • アイテム1に類似するアイテム[9,10,12]
  • 項目2に類似する項目は[9,10,13]です。

そのため、一般的な項目はですが[9,10]、それを行うためのより良い方法があるかどうかはわかりません。

4

1 に答える 1

3

あなたが説明したことについてはあまり明確ではありません。アマゾンがやっていることのように、アイテムベースの推奨が欲しいということですか?。

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を最適なものとして選択します。直感的には、類似性の寄与を累積し、それらの集約された寄与を比較します。

于 2013-01-31T05:05:22.097 に答える