
有意思的问题,让我们从 k-means 到 gaussian mixture model,好好分析一下其中的差别。
在 k-means 中,我们用单个点来对 cluster 进行建模,这实际上是一种最简化的数据建模形式。这种用点来对 cluster 进行建模实际上就已经假设了各 cluster 的数据是呈圆形(或者高维球形)分布的。但在实际生活中,很少能有这种情况。所以在 GMM 中,我们使用一种更加一般的数据表示,也就是高斯分布。
在 k-means 中,我们假设各个 cluster 的先验概率是一样的,但是各个 cluster 的数据量可能是不均匀的。举个例子,cluster A 中包含了10000个样本,cluster B 中只包含了100个。那么对于一个新的样本,在不考虑其与 A B cluster 相似度的情况,其属于 cluster A 的概率肯定是要大于 cluster B的。在 GMM 中,同样对数据先验进行了建模。
在 k-means 中,我们通常采用欧氏距离来衡量样本与各个 cluster 的相似度。这种距离实际上假设了数据的各个维度对于相似度的衡量作用是一样的。但在 GMM 中,相似度的衡量使用的是后验概率 ,通过引入协方差矩阵,我们就可以对各维度数据的不同重要性进行建模。
在 k-means 中,各个样本点只属于与其相似度最高的那个 cluster ,这实际上是一种 hard clustering 。在 GMM 中则使用的是后验概率来对各个 cluster 按比例分配,是一种 fuzzy clustering 。
题主所提到的 fuzzy c-means ,实际上就是在 k-means 的基础上将 hard clustering 改成了 fuzzy clustering。而 GMM 就可以看做是 k-means 在以上各个条件上的扩展加强版。
另外,hierarchical clustering 与 k-means 和 GMM 这一派系的聚类算法不太相同。k-means 与 GMM 更像是一种 top-down 的思想,它们首先要解决的问题是,确定 cluster 数量,也就是 k 的取值。在确定了 k 后,再来进行数据的聚类。而 hierarchical clustering 则是一种 bottom-up 的形式,先有数据,然后通过不断选取最相似的数据进行聚类。
