0

我在为聚类找到合适的相似性度量时遇到了问题。我有大约 3000 个集合数组,其中每个集合都包含特定领域的特征(例如,数字、颜色、日期、字母等)。我会用一个例子来解释我的问题。

假设我只有 2 个数组(a1 和 a2),我想找到它们之间的相似性。每个数组包含 4 个集合(在我的实际问题中,每个数组有 250 个集合(域)),一个集合可以是空的。

a1: {a,b}, {1,4,6}, {mon, tue, wed}, {red, blue,green}
a2: {b,c}, {2,4,6}, {}, {blue, black}

我使用Jaccard指数(表示为 J)进行了相似性度量:

sim(a1,a2) = [J(a1[0], a2[0]) + J(a1[1], a2[1]) + ... + J(a1[3], a2[3])]/4

注意:我除以集合总数(在上面的示例中为 4)以保持 0 和 1 之间的相似性。

Is this a proper similarity measure and are there any flaws in this approach. 我分别为每个集合应用 Jaccard 索引,因为我想比较相关域之间的相似性(即颜色与颜色等......)

我不知道我的问题有任何其他适当的相似性度量。更远,can I use this similarity measure for clustering purpose?

4

1 回答 1

1

这应该适用于大多数聚类算法。不要使用 k-means - 它只能处理数字向量空间。但是你有一个向量集类型的数据。

您可能希望使用与算术平均值不同的平均值来组合四个 Jaccard 度量。尝试谐波或几何方法。看,超过 250 个值的平均值可能一直接近 0.5,所以你需要一个更“激进”的平均值。

所以这个计划听起来不错。试一试,实现这种相似性并将其插入各种聚类算法中,看看他们是否找到了一些东西。我喜欢用 OPTICS 探索数据和距离函数,因为 OPTICS 图可以非常指示是否(或不!)有什么东西可以根据距离函数找到。如果图太平,那就没什么好找的了,就像数据集中距离的代表性样本......

我使用 ELKI,他们甚至有一个关于添加自定义距离函数的教程: http: //elki.dbs.ifi.lmu.de/wiki/Tutorial/DistanceFunctions虽然你可以用你喜欢的任何工具计算距离并编写将它们转换为相似矩阵。在 3000 个对象上,这仍然非常易于管理,4200000 个双精度对象只有几 MB。

于 2012-10-10T06:46:02.047 回答