(12)聚类算法——K-MeansMeanShiftDBSCAN
Posted AI初见
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(12)聚类算法——K-MeansMeanShiftDBSCAN相关的知识,希望对你有一定的参考价值。
1 定义
聚类就是按照特定的准则把数据集分成不同的类或簇,使同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象相似度小,是不是与“高内聚低耦合”类似。
聚类算法属于无监督学习,它不需要提前预知数据的类别标签信息。既然说要把根据相似度的大小进行划分,那么如何计量相似度?戳这里《相似度计量与距离》
聚类算法有很多种,包括如划分聚类、层次聚类、密度聚类、谱聚类、网格聚类等等,下面将具体介绍几种聚类算法。
2 K-Means
K-Means,即K均值聚类算法,简单而易于理解,一种使用比较广泛且基础的聚类算法。
K-Means算法流程:
输入:数据样本集,超参数K,迭代次数M
(1) 初始化K个类别中心a1/a2/…/ak,可以以k个样本数据作为中心
(2) 计算类别中心a1与每个样本的距离,然后排序选择距离最近的K个样本作为类别a1的数据,求这k个样本数据的均值,作为新的类别中心a1’;
(3) 其他类别中心的操作与a1相同;
(4) 重复步骤(2)(3),当满足终止条件时,结束。终止条件包括如:迭代次数、簇中心的变化率、最小平方误差等。
K-means算法理解
K-means算法实现简单,聚类效果也不错,应用较为广泛,但其也有些缺陷。(1)需要预先设定超参数K;(2)对异常值敏感,如果存在异常值,会导致均值偏差严重;(3)对初值较为敏感,不同的初值可能得到不同的划分规则。
超参k的选择是一门学问,需要经验和不断的尝试;针对异常值问题,有一个改进算法——K-Mediods聚类,即中值聚类,它是通过选择样本的中位数而不是均值作为新的类别中心;对于初值敏感问题,可以通过初始化多套初始节点,构造分类规则,然后选择最佳的构造规则。
3 MeanShift均值漂移聚类
在K-means算法中,以样本的均值点作为下一个聚类的中心。均值漂移聚类在选择下一个迭代中心上有区别,其沿着密度上升方向寻找聚簇点。
计算公式:
算法流程:
(1) 在未被分类的数据点中随机选择一个点作为中心点;
(2) 找出离中心点距离在带宽之内的所有点,记为集合M,认为这些点属于簇C;同时,把这些球内点属于这个类的次数加1;
(3) 计算从中心点开始到集合M中每个元素的向量,将这些向量相加,得到偏移向量
(4) 中心点沿着偏移方向移动,移动距离是偏移向量的模;
(5) 重复步骤(2)(3)(4),知道偏移向量的大小满足设定的阈值要求,记住此时的中心点;注意这个迭代过程中遇到的点都应归类到簇C。
(6) 如果收敛时当前簇的中心与其他已经存在的簇中心的距离小于阈值,就将二者合并,否则增加一个新类。
(7) 重复步骤(1)~(5),直到所有点都被归类;
(8) 分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类作为当前点集的所属类。
优缺点:
优点:不同于K-Means,均值漂移聚类不需要预先知道多少类或组;基于密度的算法相比K-Means受均值影响较小。
缺点:窗口半径的选择可能没那么重要。
4 基于密度的聚类方法DBSCAN
DBSCAN,Density-BasedSpatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法,是一种很典型的密度聚类算法,
密度聚类算法一般假定类别可以通过样本分布的紧密程度决定,同一类别的样本,他们之间是紧密相连的,也就是说在该类别任意样本周围不远处一定有同类别的样本存在。通过将紧密相连的样本化为一类,就可以得到一个聚类类别,通过将所有各组紧密相连的样本划分成不同的类别,就得到了最终的所有聚类类别结果。
DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数用来描述邻域的样本分布紧密程度。其中限定邻域距离,限定样本数目。
DBSCAN的原理就是假定一个样本属于一类,那么在该样本周围不远处一定存在同类别的样本。
前提知识
算法流程
输入:样本集D=(x1,x2,….,xn),邻域参数
(a) 从数据集中随机抽取一个未被标记的样本
(b) 统计其邻域内样本个数Num,若Num大于等于MinPts,则该样本就标记为核心对象;然后找出其所有密度可达的对象(方法:寻找该样本密度直达的各个样本,确定样本是否为核心对象;若是核心对象,继续查找它的密度直达的样本,依此类推;若是边缘点,就只做个标记)
(c) 若Num小于MinPts,则标记该样本为边缘点
(d) 本轮迭代中,将所有得到的核心对象和边缘点归为一类
(e) 重复步骤(1)(2)(3),直到所有的样本都被标记。
以下图对流程进行说明:
优缺点
优点:不需要提前知道数据有多少类别;可以发现任意形状的簇类;能识别出噪声点;对异常点不敏感;
缺点:如果样本集的密度不均匀,聚类间距相差很大时,聚类质量差;如果样本集较大,聚类收敛时间较长;与传统的K-Means相比,DBSCAN有两个超参数,调参稍复杂。
以上是关于(12)聚类算法——K-MeansMeanShiftDBSCAN的主要内容,如果未能解决你的问题,请参考以下文章