我正在建立推荐系统。 为了测量用户的配置文件向量和项目向量之间的相似性,我们可以使用余弦相似度。
假设一个Item表示为带有 n 组件的向量,其中每个组件都是Item的一个特性。 (所有功能都在0-5范围内)
考虑
用户个人资料矢量为[2,0,2,2]
Item1 Feature Vector是[4,0,4,4]
Item2 Feature Vector是[1,0,1,1]
此处cosinesimilarity(User,Item1)
等于cosinesimilarity(User,Item2)
,即1。
这是因为所有这些都确实相似。
但是Item1比User2更好,因为它具有更高价值的功能。
使用dotproduct
作为相似性指标,可以在上述情况下得到理想的结果。
大多数讲座课程的材料和实现都使用了CosineSimilarity指标。选择相似度计算函数的正确方法是什么?
答案 0 :(得分:0)
您可以搜索交叉产品或矢量产品。
https://en.wikipedia.org/wiki/Cross_product
用你计算由两个向量打开的菱形表面,如果平行(或相同) - 如此相似 - 结果将为0.这些向量之间的差异越大,结果就越高。
答案 1 :(得分:0)
"但是对于用户而言,Item1优于Item2,因为它具有更高价值的功能":这就是你所说的,但你必须质疑这个陈述。
给定用户的配置文件向量,您可以绘制您认为与其特征相似的要素向量的轨迹。
在余弦的情况下,轨迹是在原点处具有顶点的圆锥,并且具有等于相似度的余弦的孔径角。锥体开启的差异越来越大。
如果改为使用点积,则轨迹是垂直于轮廓矢量的超平面。飞机通过翻译移动。
欧氏距离将为您提供以剖面矢量端点为中心的球体。球体膨胀。
...
由您决定适当的相似性度量的全局属性。