为什么在(K-means)聚类方法中只使用平均值?
字面上有成千上万的 k-means 变化。包括软分配、方差和协方差(通常称为高斯混合建模或EM算法)。
不过,我想指出几点:
K-means 不是基于欧几里得距离。它基于方差最小化。由于方差是平方欧几里德距离的总和,因此最小方差分配是具有最小平方欧几里德的那个,并且平方根函数是单调的。出于效率原因,不计算欧几里得距离实际上更聪明(但使用平方)
如果您将不同的距离函数插入 k-means,它可能会停止收敛。您需要在两个步骤中最小化相同的标准;第二步是重新计算手段。使用算术平均值估计中心是最小二乘估计量,它将最小化方差。由于这两个函数都最小化了方差,因此 k-means 必须收敛。如果要确保与其他距离的收敛,请使用 PAM(围绕中心点进行分区。中心点将任意距离函数的集群内距离最小化。)
但最后,恕我直言,k-means 及其所有变体更像是一种优化(或更准确地说,是矢量量化算法),而不是实际上的聚类分析算法。他们实际上不会“发现”结构。他们会将您的数据按摩到 k 个分区中。如果你给他们统一的数据,除了随机性之外没有任何结构,k-means 仍然会找到你希望它找到的许多“集群”。k-means 对返回本质上是随机的结果感到满意。
有很多不同的聚类技术,K-means 只是一种方法。正如 DL Dahly 评论的那样,EM 算法可以以您描述的方式用于聚类。值得注意的是,K-means 和使用带有高斯混合模型的 EM 进行聚类的主要区别在于簇的形状:质心仍然会非常接近组中点的均值,但 K-means 会给出一个球形簇,而高斯核将给出椭圆体。
层次聚类使用完全不同的方法。基于密度的聚类是由与基于均值的聚类类似的启发式驱动的,但显然给出了不同的结果。有很多不考虑任何平均值的聚类技术。
真的,归根结底,算法的选择是问题域和实验的函数(即看什么有效)。