对于未知数量的聚类和非欧几里得距离的聚类方法有什么建议吗?

机器算法验证 聚类 贝叶斯
2022-03-14 02:35:01

我需要一些关于咨询项目的聚类(无监督分类)方法的建议。我正在寻找一种希望具有以下属性的方法:

  1. 我的研究对象具有三个属性。一个由(非欧几里得)距离矩阵表示,另外两个以欧几里得空间中的向量形式表示。距离矩阵来自序列,可以是相异百分比或序列距离的其他度量的形式。该算法应该能够将欧几里得空间中的向量和非欧几里得距离作为输入。例如,K-medoids 可以使用距离矩阵,但 K-means 不能。

  2. 我希望算法自动选择三个属性的聚类数量和权重(具有先验知识和约束)。

  3. 我有先前确定的“集群中心”的信息。我想将其合并为先前或初始值。

  4. 作为一名统计学家,我希望该方法具有明确的似然函数或损失函数。

我能想到的最接近的事情是在贝叶斯框架中拟合混合模型,使用反向跳转 MCMC 来确定集群的数量。R^d 中的向量可以很容易地表述为正态似然,但我不清楚如何处理距离矩阵。我可以将正常可能性的平均值限制为让 MCMC 运行的每个观察值,但这没有明确的数学/统计意义。

有没有人有类似问题的经验?对参考的建议将不胜感激!

4个回答

我认为将 MAP/贝叶斯标准与高斯混合使用相结合是一个明智的选择。积分

您当然会反对MOG 需要欧几里得输入数据答案是找到一组点,这些点会产生给定的距离矩阵。一个示例技术是多维缩放:其中是点到点的距离。argmin{xi}i,j(||xixj||2Dij)2Dijij

我为我的论文处理了一个问题,我必须对一个只有相似度(=反距离)矩阵的数据集进行聚类。尽管我 100% 同意贝叶斯技术是最好的,但我采用的是一种称为对称凸编码 ( link ) 的判别模型。我记得它工作得很好。

在贝叶斯方面,也许你可以考虑类似于聚类的东西,但不是吗?我正在按照潜在狄利克雷分配的思路思考——一个非常了不起的算法。完全生成,在文本文档语料库中建模主题内容的背景下开发。但它在其他类型的无监督机器学习问题中发现了大量应用。当然,距离函数在那里甚至不相关......

DBSCAN无需提前知道集群数量即可工作,它可以应用范围广泛的距离度量。

您可以使用相似性传播或更好的自适应相似性传播。这是维基百科链接

您的案例有两个主要优势,还有第三个优势,我认为这是一个优势,但对您来说可能并不重要。

  1. 您不提供集群的数量。最终的聚类数取决于偏好值和相似度矩阵值。使用偏好值的最简单方法是使用相似度矩阵的最小值(不为零)来获得最少数量的集群,然后尝试例如尽可能多的集群的最大值并继续使用中位数值等等... 或使用自适应亲和传播算法并具有由算法确定的偏好。

  2. 您可以提供任何您可以提出的相似性度量或采用距离度量的倒数(当您这样做时可能要防止除以零)。

3.(加分)该算法选择一个代表每个集群的样本以及哪些样本属于它。这意味着该算法不会给你一个任意的平均值,而是一个实际的数据点。但是,您当然可以稍后再计算平均值。而且这也意味着该算法不使用间歇平均值!

软件:在 Wikipedia 页面上列出了 Java、Python 和 R 的几个包。如果您像我一样喜欢 MATLAB,那么这里有一个实现。