目录
1)K-Medioms(K-中值聚类,用于解决异常数据敏感问题)
2)二分K-Means(弱化初始化簇心的问题,但是依然随机选择簇心)
3)K-Means++算法(弱化初始簇心且不再随机选择簇心,但是簇心之间产生内在有序性)
4)K-Means||(弱化初始簇心且簇心不在具有内在有序性,具有很好的扩展性)
5)Canopy算法(是一种粗粒度的聚类算法,能选择出k个聚簇中心)
2 传统的基于层次的聚类算法(不适合大规模数据集,算法效率低,不推荐使用)
1)凝聚的层次聚类算法(AGNES算法,采用自底向上的策略)
2)分裂的层次聚类算法(DIANA算法,采用自顶而下的策略)
1)聚类特征树(Cluster-Feature Tree,不推荐使用)
3)使用代表点的聚类算法(CURE算法,本质上就是AGNES算法,不推荐使用)
一 聚类算法概述
1 聚类的概念
给定数据集(仅有特征属性,无目标属性),依据样本之间的特征属性,将样本聚类为不同聚簇(簇),从而实现簇内样本相异度低,簇间样本相异度高
2 聚类算法的评价指标
1)轮廓系数(无需目标属性的评价指标)
第一步:簇内不相似度(
)
计算当前簇中样本i到簇内所有样本的平均距离,
越大代表样本i与当前簇的不相似度越高
第二步:簇间不相似度(
)
计算当前簇中样本i到其他簇所有样本的平均距离,并确定最小平均距离
第三步:
第四步:轮廓系数
(假定样本为m个)
注意:
- 第一点:轮廓系数
- 第二点:轮廓系数
越接近1,表示聚簇越合理,轮廓系数
越接近-1,表示聚簇越不合理,轮廓系数
越接近0,表示应该在聚簇边界
二 基于划分的聚类算法(K-Means)
1 K-Means算法
1)算法流程
第一步:初始化k个簇心
初始化k个簇心(),每个聚簇的样本数量,记作
第二步:目标函数(相异度度量采用欧式距离)
第三步:更新簇心(簇内样本的平均值)
第四步:计算样本
到K个簇心的距离,划分到最小距离的簇心聚簇中
第五步:迭代进行更新簇心与重新划分聚簇样本,直到满足中止条件
注意:中止条件
- 第一点:达到最大迭代次数
- 第二点:簇心变化收敛:
- 第三点:簇心数量
2)算法的优缺点
第一点:优点
- 理解简单,聚类效果不错
- 处理大数据集的时候,该算法保证较好的伸缩性和高效率
- 当簇近似凸状簇(高斯簇)的时候,聚类效果很不错
第二点:缺点
- k值需要事先给定,不同的k值导致不同的聚类效果
- 簇心是初始化随机给定的,不同的初始化簇心会导致不同的聚类效果
- 对异常数据敏感
- 对于非凸型簇,聚类效果不好
2 K-Means算法的优化算法
1)K-Medioms(K-中值聚类,用于解决异常数据敏感问题)
算法流程同K-Means,但是簇心更新采用中值,而非均值
2)二分K-Means(弱化初始化簇心的问题,但是依然随机选择簇心)
第一步:将所有样本作为一个簇,放入队列中
第二步:从队列中选择
(距离误差和)最大的簇,使用K-Means算法划分为两个子簇,并添加队列中
第三步:迭代进行第二步,直到满足中止条件
3)K-Means++算法(弱化初始簇心且不再随机选择簇心,但是簇心之间产生内在有序性)
第一步:从数据集中任选一个样本作为簇心
第二步:计算每个样本到所有簇心的距离和
,基于
采用线性概率选择出下一个簇心
注意:基于采用线性概率
选择出前m个最大距离和,进行等概率随机选择,多数都为较大距离和的
,而非最大距离,会导致当前簇心选择依赖前面的簇心选择
第三步:迭代进行第二步,直到找到K个聚类中心