用户百分相似度度量

数据挖掘 相似
2022-03-06 19:33:35

对于组 #1 和组 #2 之间的常见用户列表,具有 n 个百分位等级向量:n

例如 vec1 = {0.25, 0.1, 0.8, 0.75, 0.5, 0.6} vec2 = {0.35, 0.2, 0.6, 0.45, 0.2, 0.9}

百分位等级代表组内的活动频率,例如开放时间。目标是根据这些常见用户的排名找到组#1 和组#2..n 之间的相似性。

到目前为止采取的方向是使用点积来考虑幅度(由于排名)。问题是标量答案可以取任何值,因此无法绘制阈值。

我是否需要针对 vec #1(第 1 组)与自身的点积绘制阈值?还是有另一种设置阈值的方法(可能是动态的)?

2个回答

据我了解,您不想使用dot product,因为它是无界的。然而你也不想使用cosine similarity metric

在此处输入图像描述

,这只是被点的两个向量的长度归一化的点积,因为它没有考虑幅度,例如(1,1)(1,1)=1=(1,1)(2,2)

也许您可以因此使用sorensen 骰子系数或可能 1-soresen:

在此处输入图像描述

这从 0 到 1 不等,并说明了组成向量的大小,例如:

sν[(1,1),(1,1)]=1

, 然而

sν[(1,1),(2,2)]=45

希望这可以帮助!

当您使用百分位值时,您的向量分量在间隔上有效地归一化[0,1]. 因此,元素的元素减法,由向量中的组件数归一化,将为您提供 0 和 1 之间的有界相似度值。

所以对于两个向量xy长度n,相似度可以这样计算:

S(x,y)=11ni=1n|xiyi|

您可以通过考虑向量中每个分量的方差并将其标准化为 0.5 左右来优化此方法。