似乎对于 K-means 和其他相关算法,聚类是基于计算点之间的距离。有没有它可以工作的?
有没有基于非距离的聚类算法?
这种方法的一个例子是用于聚类的有限混合模型(例如这里或这里)。在 FMM中,您将变量 )视为个分布 ( ) 的混合:
其中是参数向量和个分布的比例,是参数 (或参数)的分布。
离散数据的一个具体案例是潜在类分析(例如Vermunt 和 Magidson,2003 年),定义为:
其中是观察潜在类的概率(即),是观察到值是类的概率。
通常对于 FMM 和 LCA都使用EM 算法进行估计,但也可以使用贝叶斯方法,但由于模型识别和标签切换等问题,要求更高一些(例如Xi'an's blog)。
因此,没有距离度量,而是定义数据结构(分布)的统计模型。因为这种方法的另一个名称是“基于模型的聚类”。
查看关于 FMM 的两本书:
- McLachlan, G. & Peel, D. (2000)。有限混合模型。约翰威利父子公司。
- Frühwirth-Schnatter, S. (2006)。有限混合和马尔可夫切换模型。施普林格。
使用 FMM 的最流行的集群包之一是mclust
(在此处或此处查看)在 R 中实现。但是,更复杂的 FMM 也是可能的,例如检查flexmix
包和它的文档。对于 LCA,有一个 R poLCA 包。
K-means 不是“真正”基于距离的。它使方差最小化。(但方差平方欧几里得距离;所以每个点也被欧几里得距离分配给最近的质心)。
有很多基于网格的聚类方法。他们不计算距离,因为这通常会产生二次运行时间。相反,他们对数据进行分区并将其聚合到网格单元中。但这种方法背后的直觉通常与距离密切相关。
有许多用于分类数据的聚类算法,例如 COOLCAT 和 STUCCO。距离并不容易与此类数据一起使用(单热编码是一种黑客行为,并且不会产生特别有意义的距离)。但我还没有听说有人使用这些算法......
图有聚类方法。但是它们要么简化为经典的图问题,例如团或近团查找和图着色,要么与基于距离的聚类密切相关(如果您有加权图)。
像 DBSCAN 这样的基于密度的聚类有一个不同的名称,并不专注于最小化距离;但是“密度”通常是针对距离指定的,因此从技术上讲,这些算法要么基于距离,要么基于网格。
您遗漏的问题的重要部分是您的数据是什么?
除了以前的好答案,我建议考虑Dirichlet 混合模型和基于贝叶斯的分层 Dirichlet 过程模型。有关确定最佳集群数量的方法和方法的相当全面和一般的概述,请参阅StackOverflow上的出色答案:https ://stackoverflow.com/a/15376462/2872891 。
Gomes 等人的“正则化信息最大化”是一种纯粹的判别方法。无论如何都没有涉及相似性/距离的概念。
这个想法是有一个类似于逻辑回归的模型,将点放入箱中。但是不是训练它来最大化类标签的某种形式的对数似然,目标函数是将点放入不同的集群中。
为了控制模型使用的集群数量,由超参数加权的附加正则化项用来。它归结为高斯先验在权重上的逆方差。
用于非线性聚类的内核方法或神经网络的扩展很简单。