我们可以使用分层凝聚聚类来聚合这种格式的数据吗?
"beirut,proff,email1"
"beirut,proff,email2"
"swiss,aproff,email1"
"france,instrc,email2"
"swiss,instrc,email2"
"beirut,proff,email1"
"swiss,instrc,email2"
"france,aproff,email2"
如果没有,那么使用字符串值对数据进行聚类的兼容聚类算法是什么?
感谢您的帮助!
答案 0 :(得分:0)
任何类型的群集都需要距离指标。如果你愿意用你的琴弦将它们视为彼此相等或彼此不相等,那么你真正能做到的最好就是场上汉明距离......也就是说,“abc”之间的距离,def,ghi“和”uvw,xyz,ghi“是2,”abw,dez,ghi“之间的距离也是2.如果你想在特定领域内聚类相似的字符串 - 比如聚类”斯洛伐克“和“斯洛文尼亚”由于名称的相似性,或者“波兰”和“乌克兰”因为它们彼此相邻,所以你会使用更复杂的指标。给定距离度量,分层凝聚聚类应该可以正常工作。
然而,所有这些都假定群集是您实际想要做的事情。您的数据集似乎是一种奇怪的聚类用例。
答案 1 :(得分:0)
分层聚类是一种相当灵活的聚类算法。除了一些联系(沃德?)它对“距离”没有任何要求 - 它也可能是一个相似性,通常负值也会起作用,你不需要三角不等等。
其他算法 - 例如k-means--更受限制。 K均值最小化方差;所以它只能处理(平方)欧几里德距离;并且它需要能够计算均值,因此数据需要处于连续的,固定的维数向量空间中;和稀疏性可能是一个问题。
一种可能更灵活的算法是广义DBSCAN。本质上,它需要二元决策“x是y的邻居”(例如,距离小于epsilon),以及谓词来测量“核心点”(例如密度)。你可以提出任意复杂的谓词,这可能不再是一个“距离”了。
无论哪种方式:如果您可以衡量这些记录的相似性,则应该使用层次聚类。问题是,如果你可以从那些数据中获得足够的相似性,而不仅仅是3位:“具有相同的电子邮件”,“具有相同的名称”,“具有相同的位置” - 3位将不会提供非常有趣的等级。