假设我有一个用户数据库,他们以 1-5 的等级对不同的产品进行评分。我们的推荐引擎根据高度相似的其他用户的偏好向用户推荐产品。我寻找相似用户的第一种方法是使用余弦相似度,并将用户评分视为向量分量。这种方法的主要问题是它只测量矢量角度而没有考虑评级规模或幅度。
我的问题是这样的:
仅使用两个向量的向量分量之间的百分比差异作为相似度的度量是否有任何缺点?如果我使用该方法而不是余弦相似度或欧几里得距离,我会遇到什么缺点(如果有的话)?
例如,为什么不这样做:
n = 5 stars
a = (1,4,4)
b = (2,3,4)
similarity(a,b) = 1 - ( (|1-2|/5) + (|4-3|/5) + (|4-4|/5) ) / 3 = .86667
而不是余弦相似度:
a = (1,4,4)
b = (2,3,4)
CosSimilarity(a,b) =
(1*2)+(4*3)+(4*4) / sqrt( (1^2)+(4^2)+(4^2) ) * sqrt( (2^2)+(3^2)+(4^2) ) = .9697