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

笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。

我的公众号为:livandata

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可以支持混合资格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值