常见几个聚类算法原理

聚类算法的思想:

        给定N个训练样本(未标记的)x1,x2,...,xN,目标是把比较“接近” 的样本放到一个cluster里, 总共得到K个cluster。

聚类算法的目标:

        类内紧致,类间分离

一、K-means算法

1、算法步骤:

  1. 随机选取k个中心点
  2. 遍历所有数据,将每个数据划分到最近的中心点中
  3. 计算每个聚类的平均值,并作为新的中心点
  4. 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代

2、K-means算法优点:

  1. 简单快速,复杂度为O(nkt),n为样本数,k为类别数,t为迭代数
  2. 当簇接近高斯分布时,它的效果较好。

3、K-means算法缺点:

  1. 对异常值或离群点敏感
  2. 需要提前确定k值,K 值难以估计。
  3. 受初始划分影响较大;局部最优解而不是全局优 (这个和初始点选谁有关)
  4. 反复地计算调整后的新的聚类中心,在大规模数据集上收敛较慢
  5. 不适用于发现非凸形状的簇或者大小差别很大的簇。

4、K-means算法缺点的改进:

  1. 针对上述(2),通过类的自动合并和分裂,得到较为合理的类型数目 K,例如 ISODATA 算法。
  2. 针对上述(3),可选用二分K-均值聚类;或者多设置一些不同的初值,对比最后的运算结果,一直到结果趋于稳定结束。
  3. 首先把所有样本作为一个簇,然后二分该簇,接着选择其中一个簇进行继续进行二分。 选择哪一个簇二分的原则:是能否使得误差平方和(SSE: Sum of Squared Error)尽可能的小。
  4. 针对上述第(1)点,改成求点的中位数,这种聚类方式即K-Mediods聚类(K中值)

二、DBSCAN

假设我的样本集是D=(x1,x2,...,xm),则DBSCAN具体的密度描述定义如下:

  1. ϵ-邻域:对于xj∈D,其ϵϵ-邻域包含样本集D中与xjxj的距离不大于ϵϵ的子样本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 这个子样本集的个数记为|Nϵ(xj)||Nϵ(xj)| 
  2. 核心对象:对于任一样本xj∈D,如果其ϵ-邻域对应Nϵ(xj)至少包含MinPts个样本,即如果|Nϵ(xj)|≥MinPts,则xj是核心对象。 

          

  1. 密度直达:如果xi位于xj的ϵ-邻域中,且xj是核心对象,则称xi由xj密度直达。注意反之不一定成立,即此时不能说xj由xi密度直达, 除非且xi也是核心对象。
  2. 密度可达:对于xi和xj,如果存在样本样本序列p1,p2,...,pT,满足p1=xi,pT=xj, 且pt+1由pt密度直达,则称xj由xi密度可达。也就是说,密度可达满足传递性。此时序列中的传递样本p1,p2,...,pT−1均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性,这个可以由密度直达的不对称性得出。
  3. 密度相连:对于xi和xj,如果存在核心对象样本xk,使xi和xj均由xk密度可达,则称xi和xj密度相连。注意密度相连关系是满足对称性的。

算法步骤:

优点:能处理任意形状和大小的簇。

缺点:簇密度变化大时,效果差。

高维数据,效果差。

三、 层次聚类

AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集中的每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。


 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值