适当的聚类相似性度量

时间:2012-10-10 04:44:26

标签: math cluster-analysis distance similarity euclidean-distance

我在寻找适合群集的相似性度量时遇到了问题。我有大约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?

1 个答案:

答案 0 :(得分:1)

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

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

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

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