1

調整コサイン類似度を使用するアイテムベースのCFで作業しています。私は最近、一般的なコサインの類似性を追加して、私はまったく異なる結果を得ました。今私の質問は、私のデータをより良く理解できるものですか?調整済みコサイン類似度と正規コサイン類似度の選択

これは、このデータを考慮すると、ユーザー、アイテムおよび評価

  User 1 | User 2 | User 3 | User 4 | User 5 
Item 1 | 5 | 1 | 1 | 5 | 5 
Item 2 | 5 | 1 | 2 | 4 | 5 
Item 3 | 1 | 5 | 4 | 2 | 3 

の可能なシナリオである、あなたはその項目1と項目2を締結したいが、比較的「似て」です。ここで、異なる類似性係数の結果である:私はこの例のためにそれらを四捨五入2
Adjusted cosine similarity = 0.865
Regular cosine similarity = 0.987
項目1および項目間

類似性

あなたは、これは基本的に同じで見ることができますしかし、アイテム2とアイテム3の類似度を計算しようとすると(まったく似ていない)、全く異なる結果になります。

アイテム2 a ND項目3
Adjusted cosine similarity = -0.955
Regular cosine similarity = 0.656
私は 'より良い' でしょう。この例

これらのためにそれらを四捨五入?調整されたコサイン類似度を使用すると、ユーザーの平均評価が考慮されるため、より良い結果が得られますが、正規のコサイン類似度はなぜこのような「異なる」アイテムに対して正の数になりますか?私は一般的なコサイン類似度の使用を控えるべきですか、特定のシナリオに対してのみ使用しますか?

助けていただけたら幸いです!

答えて

1

正規コサインの類似性が、なぜそのような「異なる」アイテムに対して正の数になるのでしょうか?

Adjusted Cosine Similarityは、特定の状況でRegular Cosine Similarityよりも優れた違いを反映しています。

Regular Cosine Similarityは、方向の違いを反映していますが、位置は反映していません。

enter image description here

dist(A,B)それは任意のベクターが独自の方向に延びている場合、コサイン類似度が同じままであることは明らかだAとBの間Euclidean Distanceあります。

ユーザーが2つの映画に0〜5のスコアを与えたとします。

from scipy import spatial 
import numpy as np 
a = np.array([2.0,1.0]) 
b = np.array([5.0,3.0]) 
1 - spatial.distance.cosine(a,b) 
#---------------------- 
# 0.99705448550158149 
#---------------------- 
c = np.array([5.0,4.0]) 
1 - spatial.distance.cosine(c,b) 
#---------------------- 
# 0.99099243041032326 
#---------------------- 

enter image description here

直感的に我々は、ユーザーbcは、同様の嗜好を持っている、とaはそれらとは全く異なると言うでしょう。しかし、正規のコサインの類似性は私たちに間違った話を伝えます。

それは調整が有意義で見ることは明らかだ最初のマイナスxy

mean_ab = sum(sum(a,b))/4 
# mean_ab : 3.5 
# adjusted vectors : [-1.5, -2.5] , [1.5, -0.5] 
1 - spatial.distance.cosine(a - mean_ab, b - mean_ab) 
#---------------------- 
# -0.21693045781865616 
#---------------------- 
mean_cb = sum(sum(c,b))/4 
# mean_cb : 6.5 
# adjusted vectors : [-1.5, -3.5] , [-1.5, -2.5] 
1 - spatial.distance.cosine(c - mean_cb, b - mean_cb) 
#---------------------- 
# 0.99083016804429891 
#---------------------- 

の平均、のAdjusted Cosine Similarityを計算してみましょう。

通常のコサイン類似度を一般的に使用しないでくださいか、特定のシナリオでのみ使用しますか?

問題が見つかったら、適切なものを使用してください。

私はまだ正規コサインの類似性は、ベクトルのスケールに対する感度が低いシナリオでは便利だと思います。たとえば、スコア[2,1]が[4,2]や[8,4]と非常によく似ていると考えられる場合、レギュラーは細かい仕事をします。

関連する問題