聚类最常见的,应该是kmeans。对于spark mllib,除了支持kmeans外,还支持GMM,主题模型LDA。
比较常用的聚类模型还有:DBSCAN(密度聚类);层次聚类;
K-Means聚类================
1.首先,我们选择一些类/组来使用并随机地初始化它们各自的中心点。要想知道要使用的类的数量,最好快速地查看一下数据,并尝试识别任何不同的分组。中心点是与每个数据点向量相同长度的向量,在上面的图形中是“X”。
2.每个数据点通过计算点和每个组中心之间的距离进行分类,然后将这个点分类为最接近它的组。
3.基于这些分类点,我们通过取组中所有向量的均值来重新计算组中心。
4.对一组迭代重复这些步骤。你还可以选择随机初始化组中心几次,然后选择那些看起来对它提供了最好结果的来运行。
K-Means聚类算法的优势在于它的速度非常快,因为我们所做的只是计算点和群中心之间的距离;它有一个线性复杂度O(n)。
对于kmeans,最主要的是K值的选择。首先根据业务需求定,也可以根据尝试法:先设置一个较小的值,观察,随着k的增大,是否cost减少。当cost基本保持不变的时候,就达到了最有K值。
其次kmeans算法对簇心的初始值也比较敏感。针对kmeans有几种改进:
https://www.jianshu.com/p/2fa67f9bad60
Kmeans++ ; Kmeansll ;二分 Kmeans ;Canopy算法; Mini batch k- Means 算法;
Kmeans++ ===============
该算法可以避免初始簇心敏感的问题。步骤如下:
从数据集中任选一个节点作为第一个聚类中心;
对数据集中的每个点X,计算X到所有簇心的距离只和D(x)。基于D(x) 采用线性概率选择出下一个中心点。距离越大,该样本称为下一个中心点的概率越大。
重复以上两个步