確かにハミング距離だと全く嗜好の違うユーザだろうが、嗜好がほとんど同じユーザだろうが、x個の次元が異なると距離がx/|dim|になって嬉しくない。これに対してコサイン距離を使うと、嗜好が似ているユーザの場合は似ている方向に角度が寄るので距離が緩和される。
直感的にもそうなるのは理解できるが、実際に計算して確かめてみた。
from scipy.spatial.distance import hamming, cosine x1 = [1,1,1,0,0,0,0,0,0,0] y1 = [0,1,1,1,0,0,0,0,0,0] y2 = [0,1,0,0,0,0,0,0,0,0] x2 = [1,0,0,0,0,0,0,0,0,0] print(hamming(x1, y1)) # 0.2 print(hamming(x2, y2)) # 0.2 print(cosine(x1, y1)) # 0.333333333333 print(cosine(x2, y2)) # 1.0
0 件のコメント:
コメントを投稿