机器学习--聚类算法(无监督学习)--K-Menas/BIRCH/CURE/DBSCAN/MDCA算法理论

本文详细介绍了无监督学习中的聚类算法,包括K-Means及其优化算法(如K-Medioms、二分K-Means、K-Means++、K-Means||和Canopy)、层次聚类算法(如AGNES和DIANA)、基于密度的聚类算法(如DBSCAN)以及BIRCH和CURE。讨论了这些算法的概念、流程、优缺点和适用场景,特别强调了聚类算法的评价指标——轮廓系数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一 聚类算法概述

1 聚类的概念

2 聚类算法的评价指标

1)轮廓系数(无需目标属性的评价指标)

二 基于划分的聚类算法(K-Means)

1 K-Means算法

1)算法流程

2)算法的优缺点

2 K-Means算法的优化算法

1)K-Medioms(K-中值聚类,用于解决异常数据敏感问题)

2)二分K-Means(弱化初始化簇心的问题,但是依然随机选择簇心)

3)K-Means++算法(弱化初始簇心且不再随机选择簇心,但是簇心之间产生内在有序性)

4)K-Means||(弱化初始簇心且簇心不在具有内在有序性,具有很好的扩展性)

5)Canopy算法(是一种粗粒度的聚类算法,能选择出k个聚簇中心)

3 Mini-Batch K-Means算法

1)算法流程

2)算法效果

三 基于层次的聚类算法

1 算法概念

2 传统的基于层次的聚类算法(不适合大规模数据集,算法效率低,不推荐使用)

1)凝聚的层次聚类算法(AGNES算法,采用自底向上的策略)

2)分裂的层次聚类算法(DIANA算法,采用自顶而下的策略)

3 传统基于层次的聚类算法的优化算法

1)聚类特征树(Cluster-Feature Tree,不推荐使用)

2)平衡迭代削减聚类算法(BIRCH算法,推荐使用)

3)使用代表点的聚类算法(CURE算法,本质上就是AGNES算法,不推荐使用)

四 基于密度的聚类算法

1 算法概念

2 密度相连点的最大集和聚类算法(DBSCAN,推荐使用)

1)相关概念

2)算法流程

3 密度最大值的聚类算法(MDCA,不推荐使用)

1)算法相关概念

2)算法流程

五 基于谱图的聚类算法(不推荐使用)

六 高斯混合聚类(GMM)


一 聚类算法概述

1 聚类的概念

给定数据集(仅有特征属性,无目标属性),依据样本之间的特征属性,将样本聚类为不同聚簇(簇),从而实现簇内样本相异度低,簇间样本相异度高

2 聚类算法的评价指标

1)轮廓系数(无需目标属性的评价指标)

第一步:簇内不相似度(a_{i}

计算当前簇中样本i到簇内所有样本的平均距离a_{i}a_{i}越大代表样本i与当前簇的不相似度越高

第二步:簇间不相似度(b_{i}

计算当前簇中样本i到其他簇所有样本的平均距离,并确定最小平均距离b_{i}=min\left \{ b_{i1},b_{i2},...,b_{ik}\right \}

第三步:s_{i}

s_{i}=\frac{b_{i}-a_{i}}{max\left \{ a_{i},b_{i} \right \}}\Rightarrow \left\{\begin{matrix} 1-\frac{a_{i}}{b_{i}},a_{i}<b_{i}\\ 0,a_{i}=b_{i} \\\frac{a_{i}}{b_{i}}-1 ,a_{i}>b_{i} \end{matrix}\right.

第四步:轮廓系数s(假定样本为m个)

s=\frac{1}{m}\sum_{i=1}^{m}s_{i}

注意:

  • 第一点:轮廓系数s\subseteq [-1,1]
  • 第二点:轮廓系数s越接近1,表示聚簇越合理,轮廓系数s越接近-1,表示聚簇越不合理,轮廓系数s越接近0,表示应该在聚簇边界

二 基于划分的聚类算法(K-Means)

1 K-Means算法

1)算法流程

第一步:初始化k个簇心

初始化k个簇心(a_{1},a_{2},...,a_{k}),每个聚簇的样本数量,记作N_{1},N_{2},...,N_{k}

第二步:目标函数(相异度度量采用欧式距离)

J(a_{1},a_{2},...,a_{k})=\frac{1}{2}\sum_{j=1}^{k}\sum_{i=1}^{N_{j}}(x^{(i)}-a_{j})^{2}

第三步:更新簇心(簇内样本的平均值)

\frac{\partial J(a_{1},a_{2},...,a_{k})}{\partial a_{j}}=\sum _{i=1}^{N_{j}}(a_{i}-x^{(i)})=0\Rightarrow a_{i}=\frac{1}{N_{j}}\sum _{i=1}^{N_{j}}x^{(i)}

第四步:计算样本X=\left \{ x^{(i)}|i=1,2,...,m \right \}到K个簇心的距离,划分到最小距离的簇心聚簇中

第五步:迭代进行更新簇心与重新划分聚簇样本,直到满足中止条件

注意:中止条件

  • 第一点:达到最大迭代次数
  • 第二点:簇心变化收敛:a_{j}^{m}-a_{j}^{m-1}\overset{k}{\rightarrow }0
  • 第三点:簇心数量

2)算法的优缺点

第一点:优点

  • 理解简单,聚类效果不错
  • 处理大数据集的时候,该算法保证较好的伸缩性和高效率
  • 当簇近似凸状簇(高斯簇)的时候,聚类效果很不错

第二点:缺点

  • k值需要事先给定,不同的k值导致不同的聚类效果
  • 簇心是初始化随机给定的,不同的初始化簇心会导致不同的聚类效果
  • 对异常数据敏感
  • 对于非凸型簇,聚类效果不好

2 K-Means算法的优化算法

1)K-Medioms(K-中值聚类,用于解决异常数据敏感问题)

算法流程同K-Means,但是簇心更新采用中值,而非均值

2)二分K-Means(弱化初始化簇心的问题,但是依然随机选择簇心)

第一步:将所有样本作为一个簇,放入队列中

第二步:从队列中选择SSE(距离误差和)最大的簇,使用K-Means算法划分为两个子簇,并添加队列中

SSE=\sum_{i=1}^{N_{j}}(x^{(i)}-a_{j})^{2}

第三步:迭代进行第二步,直到满足中止条件

3)K-Means++算法(弱化初始簇心且不再随机选择簇心,但是簇心之间产生内在有序性)

第一步:从数据集中任选一个样本作为簇心

第二步:计算每个样本到所有簇心的距离和D(x),基于D(x)采用线性概率选择出下一个簇心

注意:基于D(x)采用线性概率

选择出前m个最大距离和D(x),进行等概率随机选择,多数都为较大距离和的D(x),而非最大距离,会导致当前簇心选择依赖前面的簇心选择

第三步:迭代进行第二步,直到找到K个聚类中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值