我尝试基于包含加权值的对象创建集群。
价值是关于歌曲的,对象是用户。例如:
如果 user1 喜欢 3 首流行歌曲、1 首说唱歌曲且没有喜欢 hip-hop 歌曲,他将被表示为:
u1 = {3,1,0}
因此,如果我有 3 个具有随机值的用户,我可以有一个像这样的矩阵:
3 1 0
0 4 5
1 2 3
u1 = {3,1,0}
u2 = {0,4,5}
u3 = {1,2,3}
我的问题是,可以在这种数据上创建集群吗?以及哪种算法最适合找到 Jaccard 相似性系数等数据之间的相似性。
首先,我尝试使用二进制数据进行计算,但如果我这样做,我会丢失一些信息。
在第二种方式中,我尝试计算每个值之间的相似度。我总结了所有相似性,然后在每个对象值之间再做一次。
举个例子:
我拿 u1 和 u2 得到:
u1 = {3,1,0}
u2 = {0,4,5}
|3 - 0| = 3
|4 - 1| = 3
|0 - 5| = 5
(3 + 3 + 5) / 3 = 11/3
u1 = {3,1,0}
u3 = {1,2,3}
|3 - 1| = 2
|1 - 2| = 1
|0 - 3| = 3
(2 + 1 +3) / 3 = 6/3 = 2
11/3 > 2 所以 u1 和 u3 更相似。
但我不确定这种方法是否也很好。
这样做的目的是将集群与其他集群进行比较以匹配某些搜索结果。