dbscan是相对抗噪声的,并且能够处理任意形状和大小的 dbscan( 二 )


为了找到下一个簇,DBSCAN从剩下的对象中随机选择一个未访问过的对象 。聚类过程继续,直到所有对象都被访问 。
还需考虑三个问题:
第一个是一些异常样本点或者说少量游离于簇外的样本点,这些点不在任何一个核心对象在周围,在DBSCAN中,我们一般将这些样本点标记为噪音点 。DBSCAN算法很容易检测异常点 。
第二个是距离的度量问题,即如何计算某样本和核心对象样本的距离 。在DBSCAN中,一般采用最近邻思想,采用某一种距离度量来衡量样本距离,比如欧式距离 。这和KNN分类算法的最近邻思想完全相同 。对应少量的样本,寻找最近邻可以直接去计算所有样本的距离,如果样本量较大,则一般采用KD树或者球树来快速的搜索最近邻 。
第三种问题,某些样本可能到两个核心对象的距离都小于?,但是这两个核心对象由于不是密度直达,又不属于同一个聚类簇,那么如果界定这个样本的类别呢?一般来说,此时DBSCAN采用先来后到,先进行聚类的类别簇会标记这个样本为它的类别 。也就是说BDSCAN的算法不是完全稳定的算法 。
2、DBSCAN算法流程
优点:
和传统的K-Means算法相比,DBSCAN最大的不同就是不需要输入类别数k,当然它最大的优势是可以发现任意形状的聚类簇,而不是像K-Means,一般仅仅使用于凸的样本集聚类 。同时它在聚类的同时还可以找出异常点,对数据集中的异常点不敏感 。一般来说,如果数据集是稠密的,并且数据集不是凸的,那么用DBSCAN会比K-Means聚类效果好很多 。如果数据集不是稠密的,则不推荐用DBSCAN来聚类 。
缺点:
1、如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合 。
2、调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值?,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响 。一般这两个参数的确定靠经验值 。如果觉得经验值聚类的结果不满意,可以适当调整?和MinPts的值,经过多次迭代计算对比,选择最合适的参数值 。如果MinPts不变,?取得值过大,会导致大多数点都聚到同一个簇中,?过小,会导致一个簇的分裂;如果?不变,MinPts的值取得过大,会导致同一个簇中点被标记为离群点,?过小,会导致发现大量的核心点 。
3、不适合高维数据,可以先进行降维操作
4、Sklearn中效率很慢,可以先执行数据削减策略
可视化演示的网址
参考文章
刘建平
DBSCAN原理?DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,它是一种基于高密度连通区域的、基于密度的聚类算法,能够将具有足够高密度的区域划分为簇,并在具有噪声的数据中发现任意形状的簇 。我们总结一下DBSCAN聚类算法原理的基本要点:
DBSCAN算法需要选择一种距离度量,对于待聚类的数据集中,任意两个点之间的距离,反映了点之间的密度,说明了点与点是否能够聚到同一类中 。由于DBSCAN算法对高维数据定义密度很困难,所以对于二维空间中的点,可以使用欧几里德距离来进行度量 。
DBSCAN算法需要用户输入2个参数:一个参数是半径(Eps),表示以给定点P为中心的圆形邻域的范围;另一个参数是以点P为中心的邻域内最少点的数量(MinPts) 。如果满足:以点P为中心、半径为Eps的邻域内的点的个数不少于MinPts,则称点P为核心点 。
DBSCAN聚类使用到一个k-距离的概念,k-距离是指:给定数据集P={p(i); i=0,1,…n},对于任意点P(i),计算点P(i)到集合D的子集S={p(1), p(2), …, p(i-1), p(i+1), …, p(n)}中所有点之间的距离,距离按照从小到大的顺序排序,假设排序后的距离集合为D={d(1), d(2), …, d(k-1), d(k), d(k+1), …,d(n)},则d(k)就被称为k-距离 。也就是说,k-距离是点p(i)到所有点(除了p(i)点)之间距离第k近的距离 。对待聚类集合中每个点p(i)都计算k-距离,最后得到所有点的k-距离集合E={e(1), e(2), …, e(n)} 。
根据经验计算半径Eps:根据得到的所有点的k-距离集合E,对集合E进行升序排序后得到k-距离集合E’,需要拟合一条排序后的E’集合中k-距离的变化曲线图,然后绘出曲线,通过观察,将急剧发生变化的位置所对应的k-距离的值,确定为半径Eps的值 。
根据经验计算最少点的数量MinPts:确定MinPts的大小,实际上也是确定k-距离中k的值,DBSCAN算法取k=4,则MinPts=4 。
另外,如果觉得经验值聚类的结果不满意,可以适当调整Eps和MinPts的值,经过多次迭代计算对比,选择最合适的参数值 。可以看出,如果MinPts不变,Eps取得值过大,会导致大多数点都聚到同一个簇中,Eps过小,会导致以一个簇的分裂;如果Eps不变,MinPts的值取得过大,会导致同一个簇中点被标记为噪声点,MinPts过小,会导致发现大量的核心点 。

秒懂生活扩展阅读