1

我尝试基于包含加权值的对象创建集群。

价值是关于歌曲的,对象是用户。例如:

如果 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 更相似。

但我不确定这种方法是否也很好。

这样做的目的是将集群与其他集群进行比较以匹配某些搜索结果。

4

2 回答 2

3

首先,它似乎不是聚类分析的任何特例。事实上,每种聚类方法都应该像一般情况下一样在这些数据上工作——我的意思是这不是“奇怪”或具体的,你只是在 N 维空间中有点。唯一要注意的是,即使他们的音乐品味相同,您当前的表示也不同于喜欢 10000 首歌曲和喜欢 10 首歌曲的人,例如:

[ 10000 0 0 ]
[ 10 0 0 ]

因此,如果您实际上正在考虑对用户“gerne”偏好进行建模,则应该考虑标准化,因此您在每个维度中都有(例如,因为有很多方法可以做到)百分比,而不是计数:

[ 10000 0 0 ] -> [ 1.0 0.0 0.0 ]
[ 10 0 0 ] -> [ 1.0 0.0 0.0 ]

特定聚类方法的选择取决于与预期输出有关的许多事情,而不是输入。您可以从一些简单的方法开始(基于 k 质心),如果结果不满意 - 深入研究更高级的方法(分层聚类、dbscan、光学、em ......)。

于 2013-09-11T09:50:02.433 回答
2

我建议你使用余弦相似度

假设用户的偏好只是向量(每个向量代表一个用户)。

如您所知,不同的用户可以听不同数量的音乐 - 但尽管如此,他们可能有相似的偏好:

在此处输入图像描述

所以,在这个模型的方法中,我们可以声称,两个向量之间的角度越小——它们越相似

与直接计算两个向量之间的角度相反 - 我们可以计算它们之间的余弦(这要简单得多):

在此处输入图像描述

由于余弦函数的特殊性:两个向量之间角度的余弦越大 - 它们越相似

你的例子:

u1 = {3, 1, 0}
u2 = {0, 4, 5}
u3 = {1, 2, 3}

|u1| = sqrt(3^2 + 1^2 + 0^2) = sqrt(10) ~ 3.16
|u2| = sqrt(0^2 + 4^2 + 5^2) = sqrt(41) ~ 6.4
|u3| = sqrt(1^2 + 2^2 + 3^2) = sqrt(14) ~ 3.74

similarity(u1, u2) = dot_product(u1, u2) / (|u1| * |u2|) 
                   = (3*0 + 1*4 + 0*5) / (3.16 * 6.4)
                   = 4 / 20.224 ~ 0.2

similarity(u2, u3) = dot_product(u2, u3) / (|u2| * |u3|) 
                   = (0*1 + 4*2 + 5*3) / (6.4 * 3.74)
                   = 23 / 23.936 ~ 0.96

similarity(u1, u3) = dot_product(u1, u3) / (|u1| * |u3|) 
                   = (3*1 + 1*2 + 0*3) / (3.16 * 3.74)
                   = 4 / 11.8184 ~ 0.34

所以:

相似度(u1, u2) = 0.2

相似度(u2, u3) = 0.96

相似度(u1, u3) = 0.34

正如我所看到的 - 结果与输入数据相关,因为 u2 和 u3 都喜欢说唱和嘻哈,几乎不喜欢流行音乐。

于 2013-09-11T12:20:46.513 回答