关于机器学习:基于相似度的向量系数

Vector coefficients based on similarity

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

1
2
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]

对于每个向量,我需要计算一个系数,并根据该系数将一个向量与另一个向量区分开来。我找到了可以根据 2 个向量的相似性计算系数的公式,我真的不想要那个。我需要一个公式来计算每个向量的系数,然后我用这些系数进行一些其他计算。有什么好的吗这个公式?
谢谢


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

相似系数是函数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 空间中的向量,x = [1, 1], y = [0, 1], z = [1,0]。在两个维度上对称的相似函数会说 f(x,y) = f(x,z) 但希望不是 = f(y,z) 所以我们上面的 g 函数不是很有用,因为知道两个向量与 V 的相似程度并不能告诉我们太多关于它们之间有多么相似。

那你能做什么?我认为您的问题的一个简单解决方案是 k 最近邻算法的变体。它允许您找到接近给定向量的向量(或者,如果您更喜欢在不指定给定向量的情况下查找向量簇,请查找聚类)

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