如何衡量平行向量之间的相似性?

时间:2015-07-22 12:46:58

标签: machine-learning geometry recommendation-engine

我正在建立推荐系统。 为了测量用户的配置文件向量和项目向量之间的相似性,我们可以使用余弦相似度。

假设一个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指标。选择相似度计算函数的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以搜索交叉产品或矢量产品。

https://en.wikipedia.org/wiki/Cross_product

用你计算由两个向量打开的菱形表面,如果平行(或相同) - 如此相似 - 结果将为0.这些向量之间的差异越大,结果就越高。

答案 1 :(得分:0)

"但是对于用户而言,Item1优于Item2,因为它具有更高价值的功能":这就是你所说的,但你必须质疑这个陈述。

给定用户的配置文件向量,您可以绘制您认为与其特征相似的要素向量的轨迹。

在余弦的情况下,轨迹是在原点处具有顶点的圆锥,并且具有等于相似度的余弦的孔径角。锥体开启的差异越来越大。

如果改为使用点积,则轨迹是垂直于轮廓矢量的超平面。飞机通过翻译移动。

欧氏距离将为您提供以剖面矢量端点为中心的球体。球体膨胀。

...

由您决定适当的相似性度量的全局属性。