Spark MLlib模型训练—聚类算法 Bisecting K-means

Spark MLlib模型训练—聚类算法 Bisecting K-means

由于传统的KMeans算法的聚类结果易受到初始聚类中心点选择的影响,因此在传统的KMeans算法的基础上进行算法改进,对初始中心点选取比较严格,各中心点的距离较远,这就避免了初始聚类中心会选到一个类上,一定程度上克服了算法陷入局部最优状态。

二分KMeans(Bisecting KMeans)算法的主要思想是:首先将所有点作为一个簇,然后将该簇一分为二。之后选择能最大限度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。以此进行下去,直到簇的数目等于用户给定的数目k为止。

以上隐含的一个原则就是:因为聚类的误差平方和能够衡量聚类性能,该值越小表示数据点越接近于他们的质心,聚类效果就越好。所以我们就需要对误差平方和最大的簇进行再一次划分,因为误差平方和越大,表示该簇聚类效果越不好,越有可能是多个簇被当成了一个簇,所以我们首先需要对这个簇进行划分。

它通过递归分裂簇的方式来优化聚类结果。相比于传统的 K-Means 算法,Bisecting K-Means 通过逐层分裂的方式提供了更灵活和高效的聚类方法。它结合了 K-Means 的优点和层次聚类的特性,尤其适用于处理大规模数据集和复杂的聚类任务。本文将详细介绍 Bisecting K-Means 的原理、实现步骤、优缺点

你可能感兴趣的:(Spark,ML,实战,算法,spark-ml,聚类)