本文主要是介绍DBSCAN 论文笔记-理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
论文: 点击这里下载DBSCAN论文原文
论文翻译:-.-
理解参考:
- 论文/算法的理解
https://www.cnblogs.com/pinard/p/6208966.html
http://blog.csdn.net/Exupery_/article/details/76181272 - Python sklearn.cluster.DBSCAN的理解使用
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html
http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#sphx-glr-auto-examples-cluster-plot-dbscan-py
http://www.jianshu.com/p/b004861105f4
https://www.cnblogs.com/pinard/p/6217852.html
http://blog.csdn.net/garfielder007/article/details/50757111
核心技术:
- 密度聚类原理
DBSCAN是一种基于密度的聚类算法(density-based clustering),此类算法假设聚类结构能够通过样本分布的紧密程度确定.通常情况下,密度聚类算法从样本的密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果. - DBSCAN中的一些定义
DBSCAN基于一组”邻域”(neigh-borhood)参数( ϵ ϵ , MinPts)来刻画样本分布的紧密程度,给定数据集 D=x1,x2,.....xm D = x 1 , x 2 , . . . . . x m ,定义一下几个概念:
2)核心对象(Core Object):若 xj x j 的 ϵ ϵ -邻域至少包含MinPts个样本,即 |Nϵ(xj)|≥MinPts | N ϵ ( x j ) | ≥ M i n P t s ,则 xj x j 是一个核心对象;
3)密度直达(directly density-reachable):若 xj x j 位于 xi x i 的 ϵ ϵ -邻域中,且 xi x i 是核心对象,则称 xj x j 由 xi x i 密度直达.
4)密度可达(density-reachable):对 xi x i 与 xj x j ,若存在样本序列 p1,p2,...pn p 1 , p 2 , . . . p n ,其中 p1=xi,pn=xj p 1 = x i , p n = x j 且 pi+1 p i + 1 由 pi p i 密度直达,则称 xj x j 由 xi x i 密度可达;
5)密度相连(density-connected):对于 xi x i 与 xj x j ,如果存在 xk x k 使得 xi x i 与 xj x j 均由 xk x k 密度可达,则称 xi x i 和 xj x j 密度相连;
6)簇(cluster):一个具有参数( ϵ ϵ , MinPts)的簇 C C 是满足如下条件的一个D的非空子集:
i) : if p∈C p ∈ C and q is density-reachable from p p (, MinPts) , then q∈C q ∈ C (Maximality)
ii) ∀p,q∈C ∀ p , q ∈ C : p p is density-connected to ( ϵ ϵ , MinPts).(Connectivity)
7)噪声点(noise): Let C1,C2,....Ck C 1 , C 2 , . . . . C k be the clusters of the database D ( ϵi ϵ i , MinPts_i,i=1,2…k). Then we define the noise as the set of points in the database D D not belonging to any cluster i.e. noise = { p∈D|∀i:p∉Ci p ∈ D | ∀ i : p ∉ C i }
8)核心点:在半径Eps内含有超过MinPts数目的点。
边界点:在半径Eps内点的数目小于MinPts,但是落在核心点的临域内。
噪音点:既不是核心点也不是边界点的点。
概念的直观展示(来自周志华老师<机器学习>一书,p212,图9.8)
- 算法流程
1)将所有点标记为核心点、边界点或噪声点。
2)删除噪声点。
3)为距离在Eps之内的所有核心点之间赋予一条边。
4)每组连通的核心点形成一个簇。
5)将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半径范围之内)。
伪代码如下(来自周志华老师的<机器学习>一书,p213,图9.9):
突出贡献:
可以根据自己的需要进行参数的调节从而达到自己需要的聚类效果.
聚类的时候不需要预先指定簇的个数。
最终的簇的个数不定。
这篇关于DBSCAN 论文笔记-理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!