基于相似度的矢量系数

Vector coefficients based on similarity

我一直在寻找一种解决方案来创建基于向量相似度的推荐系统。 基本上,我每个用户有几个向量,例如:

User1: [0,3,7,8,5] , [3,5,8,2,4] , [1,5,3,9,4]
User2: [3,1,6,7,9] , [2,4,1,3,8] , [7,8,3,3,1]

对于每个向量,我需要计算一个系数,并根据该系数将一个向量与另一个向量区分开来。我发现了可以根据两个向量的相似性计算系数的公式,我真的不想要 that.I 需要一个公式来计算每个向量的系数,然后我用那些 coefficients.Are 有什么好的公式吗? 谢谢

因此,根据您对我的评论的回应:我不认为有一个相似系数度量可以满足您的要求。让我解释一下为什么...

相似系数是函数 f(x, y) -> c,其中 xy 是向量,c 是标量。请注意 f 有两个参数。 f(x,y) = f(y,x),但是 f(x) 是没有意义的 - 它要求 x 相对于...没有相似性。

那又怎样?我们可以只使用函数 g(x) = f(x, V),其中 V 是一个固定向量。例如。让V = [1, 1, ..., 1]。现在我们有了一个单子函数,它为我们提供了每个单独向量的相似度值。但是...

了解 f(x,y) = cf(x,z) = c' 并不能告诉你很多关于 f(y,z) 的信息。在 2-space, x = [1, 1], y = [0, 1], z = [1,0] 中取向量。二维对称的相似度函数会说 f(x,y) = f(x,z) 但希望不是 = f(y,z) 所以我们上面的 g 函数不是很有用,因为知道两个向量与 [=19= 有多相似] 并没有告诉我们它们彼此之间有多相似。


那你能做什么?我认为解决您的问题的一个简单方法是 k nearest neighbors algorithm. It allows you to find vectors close to a given vector (or, if you prefer to find clusters of vectors without specifying a given vector, look up clustering)

的变体

编辑:来自 Yahya 的回答的灵感:如果你的向量超大并且 knn 或聚类太难,请考虑主成分分析或其他一些将它们缩小到一定大小的方法(减少维数)——只需要保持记住无论你做什么都可能有损