1.DBSCAN
1.基于密度的聚类算法-DBSCAN
如下的样本点,由样本点的分布可知,理想状态下,是把这些样本点分成四个聚类(四簇),即下图所示:
但是例子中的样本点,如果采用K-means算法进行聚类分析,得到的聚类结果如下图所示(第二个图是使用DBSACAN算法得到的结果):
K-means算法:例子中的问题,我们发现使用K-Means算法已经不再适用,因为K-means算法是基于距离度量的一种算法,K-means的理想状态就是聚完类后,每个点都能离所属簇的质心距离最近。(如果去掉外面的圈圈,这时候K-menas算法适用,圆形的样本更适合K-means)
由样本点的分布可知,我们希望的紧密相连的样本划分为一簇。DBSCAN算法就是基于密度的聚类算法。
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
DBSCAN算法特点总结:
(1)本算法将具有足够高密度的区域划分为簇。
(2)可发现任意形状的聚类.(即对需要聚类的样本点没有任何要求,可以是环状也可以是圆形。不同于K-menas更适合样本点是圆形的情况)
注: Density-Based Spatial Clustering of Applications with Noise-基于密度的带噪声应用的空间聚类
DBSCAN算法涉及到的参数:
DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ε, MinPts)用来描述邻域的样本分布紧密程度。其中,ε描述邻域距离阈值,MinPts描述了某一样本的距离为ε的邻域中样本个数的阈值。
不同于K-Means算法, DBSCAN算法不用设定参数n_cluster;
2.DBSCAN 算法的相关定义
下图为例理解上述定义,图中MinPts=5,红色的点都是核心对象,因为其ε-邻域至少有5个样本。黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内,如果不在超球体内,则不能密度直达。图中用绿色箭头连起来的核心对象组成了密度可达的样本序列。在这些密度可达的样本序列的ε-邻域内所有的样本相互都是密度相连的。
- DBSCAN 算法思想
1)指定合适的ε和Minpoints.
2)随机的从未访问的样本点里面选取一个样本点p,如果点p的ε邻域里有超过Minipoints个样本点,则创建一个以p为核心的新簇。
3)首先反复寻找这些核心点密直达的点,之后是密度可达的点,将其加入到相应的簇当中,对于核心点发生”密度相连”状况的点,给予合并(即分到一簇里面)。
4)当没有新的点可以被添加到任何簇时,算法结束。
伪代码
输入:
D:一个包含n个对象的数据集;ε:半径参数;
MinPts:邻域密度阈(yu)值。
输出:基于密度的簇集合。
方法:
(1)标记所有对象为unvisited;
(2)do
(3) 随机选取一个unvisited对象p
(4) 标记p为visited
(5) if p的ε-邻域至少有MinPts个对象:
(6) 创建一个新簇C,将p添加到C;
(7) 令N为p的ε-邻域中的对象的集合;
(8) for N中的每个p^′
(9) if p^′是unvisited
(10) 标记p^′为visited
(11) if p^′的ε-邻域至少有MinPts个对象,把这些点添加到N
(12) if p′还不是任何簇的成员,把p′添加到C
(13) 输出C
(14) else 标记p为噪声
(15)until没有标记为unvisited的对象
2.常见的聚类算法Mini batch k-means
常见的聚类算法:
03.Mini Batch K-Means
Mini Batch K-Means是K-Means算法的一种优化方案,主要优化了数据量大情况下的计算速度。与标准的K-Means算法相比,Mini Batch K-Means加快了计算速度,但是降低了计算精度,但是在数据量大的情况下这个精度的下降基本可以忽略。通常在数据量较大的情况下采用Mini Batch K-Means算法有更好的效果。
总结:适用范围,数据量比较大的时候才选用,样本数据量比较小的时候,选用K-menas算法即可。
算法步骤:
首先抽取部分数据集,使用K-Means算法构建出k个聚簇点的模型。
继续抽取训练数据集中的部分样本数据集(无放回的抽样),将其添加到模型中,分配给距离最近的聚簇中心点。
更新聚簇的中心点值(每次更新都只用抽取出来的那部分数据集)
循环迭代第二步和第三部操作,直至中心点稳定或者达到迭代次数,停止计算操作。
与K均值相比,质心的更新是在部分样本集上。Mini Batch K-Means比K-Means有更快的收敛速度。但同时也降低了聚类效果,但在实际项目中却表现的不明显。
Mini Batch K-Means-聚类效果对比图
聚类可视化地址:
(1)K-means算法可视化:
https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
(2) DBSCAN算法可视化
https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/