1) 基于划分的聚类方法:

K-means算法:

算法步骤: 
(1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。 
(2) 计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。 
(3) 计算每一类中中心点作为新的中心点。 
(4) 重复以上步骤,直到每一类中心在每次迭代后变化不大为止。也可以多次随机初始化中心点,然后选择运行结果最好的一个。 
下图演示了K-Means进行分类的过程: 

 机器学习(六)——常见聚类方法

优点: 速度快,计算简便 

缺点: 
1)我们必须提前知道数据有多少类/组。 
2)K-Medians是K-Means的一种变体,是用数据集的中位数而不是均值来计算数据的中心点。 
3)K-Medians的优势是使用中位数来计算中心点不受异常值的影响;缺点是计算中位数时需要对数据集中的数据进行排序,速度相对于K-Means较慢。

2) 基于层次的聚类方法:BIRCH算法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法 机器学习(六)——常见聚类方法 机器学习(六)——常见聚类方法 机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

机器学习(六)——常见聚类方法

3) 基于密度的聚类算法:DBSCAN算法

均值漂移聚类:

均值漂移聚类是基于滑动窗口的算法,来找到数据点的密集区域。这是一个基于质心的算法,通过将中心点的候选点更新为滑动窗口内点的均值来完成,来定位每个组/类的中心点。然后对这些候选窗口进行相似窗口进行去除,最终形成中心点集及相应的分组。 
具体步骤: 
(1) 确定滑动窗口半径r,以随机选取的中心点C半径为r的圆形滑动窗口开始滑动。均值漂移类似一种爬山算法,在每一次迭代中向密度更高的区域移动,直到收敛。 
(2) 每一次滑动到新的区域,计算滑动窗口内的均值来作为中心点,滑动窗口内的点的数量为窗口内的密度。在每一次移动中,窗口会想密度更高的区域移动。 
(3) 移动窗口,计算窗口内的中心点以及窗口内的密度,知道没有方向在窗口内可以容纳更多的点,即一直移动到圆内密度不再增加为止。 
(4) 步骤一到三会产生很多个滑动窗口,当多个滑动窗口重叠时,保留包含最多点的窗口,然后根据数据点所在的滑动窗口进行聚类。 

优点:

(1)不同于K-Means算法,均值漂移聚类算法不需要我们知道有多少类/组。 
(2)基于密度的算法相比于K-Means受均值影响较小。 
缺点:

(1)窗口半径r的选择可能是不重要的。

DBSCAN算法: 
具体步骤: 
(1) 首先确定半径r和minPoints. 从一个没有被访问过的任意数据点开始,以这个点为中心,r为半径的圆内包含的点的数量是否大于或等于minPoints,如果大于或等于minPoints则改点被标记为central point,反之则会被标记为noise point。 
(2) 重复(1)的步骤,如果一个noise point存在于某个central point为半径的圆内,则这个点被标记为边缘点,反之仍为noise point。重复步骤1,知道所有的点都被访问过。 
优点:不需要知道簇的数量 
缺点:需要确定距离r和minPoints

4) 基于网格的聚类算法:STING算法、WAVE-CLUSTER算法、CLIQUE算法;

将数据对象集映射到网格单元中,并计算每个单元的密度,根据预设的阈值判断每个网格单元是否为高密度单元,由邻近的稠密单元组形成“类”。

用不同的划分方法,将数据空间划分成为有限个单元(cell)的网络结构,并对网格数据结构进行了不同的处理,但核心步骤相同:

1)划分网格;

2)使用网格单元内数据的统计信息对数据进行压缩表达;

3)基于这些统计信息判断高密度网格单元;

4)最后将相连的高密度网格单元识别簇;

优点:

速度快,因为其速度与数据对象的个数无关,只依赖于数据空间中每个维上单元的个数;

缺点:

参数敏感,无法处理不规则分布的数据,维度灾难等,这种算法的效率提高是以聚类结果的精确性为代价的,经常于基于密度的算法结合使用;

 机器学习(六)——常见聚类方法

5) 基于模型的聚类算法:高斯混合模型、SOM

K-Means的缺点在于对聚类中心均值的简单使用。下面的图中的两个圆如果使用K-Means则不能作出正确的类的判断。同样的,如果数据集中的点类似下图中曲线的情况也是不能正确分类的。 

 机器学习(六)——常见聚类方法

使用高斯混合模型(GMM)做聚类首先假设数据点是呈高斯分布的,相对应K-Means假设数据点是圆形的,高斯分布(椭圆形)给出了更多的可能性。我们有两个参数来描述簇的形状:均值和标准差。所以这些簇可以采取任何形状的椭圆形,因为在x,y方向上都有标准差。因此,每个高斯分布被分配给单个簇。 

      所以要做聚类首先应该找到数据集的均值和标准差,我们将采用一个叫做最大期望(EM)的优化算法。下图演示了使用GMMs进行最大期望的聚类过程。 
机器学习(六)——常见聚类方法

具体步骤: 

1. 选择簇的数量(与K-Means类似)并随机初始化每个簇的高斯分布参数(均值和方差)。也可以先观察数据给出一个相对精确的均值和方差。 
2. 给定每个簇的高斯分布,计算每个数据点属于每个簇的概率。一个点越靠近高斯分布的中心就越可能属于该簇。 
3. 基于这些概率我们计算高斯分布参数使得数据点的概率最大化,可以使用数据点概率的加权来计算这些新的参数,权重就是数据点属于该簇的概率。 
4. 重复迭代2和3直到在迭代中的变化不大。 
GMMs的优点:

    (1)GMMs使用均值和标准差,簇可以呈现出椭圆形而不是仅仅限制于圆形。K-Means是GMMs的一个特殊情况,是方差在所有维度上都接近于0时簇就会呈现出圆形。 
    (2)GMMs是使用概率,所有一个数据点可以属于多个簇。例如数据点X可以有百分之20的概率属于A簇,百分之80的概率属于B簇。也就是说GMMs可以支持混合资格。

相关文章: