20150915密度聚类.md
来源:互联网 发布:中衡设计怎么样 知乎 编辑:程序博客网 时间:2024/05/22 17:04
1. 密度聚类思想
密度聚类思想是,只要一个区域中的点的密度大于某个阈值,就把他加到与之相近的聚类中去。
优点:能对任意形状聚类,对噪声不敏感。
缺点:计算密度单元的复杂度大,可以提前建立空间索引降低计算量。
2. DBSCAN算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有“噪声”数据中发现任意形状的聚类。
2.1 DBSCAN若干概念
- 对象的
ϵ− 邻域:给定对象在半径ϵ 内的区域。 - 核心对象:对于给定的数目m,如果一个对象的
ϵ− 邻域至少包含m个对象,则称该对象为核心对象。 - 直接密度可达:给定一个对象集合D,如果p是在q的
ϵ− 邻域内,而q是一个核心对象,则p从对象q出发直接密度可达。如图
ϵ=1cm ,m=5,q是一个核心对象,从对象q出发到对象p是直接密度可达的。
- 密度可达:如果存在一个对象链
p1p2⋯ ,p1=q ,pn=p ,对pi∈D ,(1⩽i⩽n) ,pi+1 是从pi 关于ϵ 和m直接密度可达的,则对象p是从对象q关于ϵ 和m密度可达的。 - 密度相连:如果对象集合D中存在一个对象o,使得对象p和q是从o关于
ϵ 和m密度可达的,那么对象p和q是关于ϵ 和m密度相连的。 - 簇:一个基于密度的簇是最大的密度相连对象的集合。
- 噪声:不包含在任何簇中的对象称为噪声。
很明显密度可达是单向关系,密度相连是双向关系
2.2 DBSCAN算法流程
DBSCAN通过检查数据集中每一个对象的标记所有点为unvisitedwhile 有点是unvisited 随机选择一个unvisited点p,标记为visit if p的邻域至少有m个对象: 创建一个新簇C,把p添加到C 令N为p邻域所有对象集合 for p` in N: if p` = unvisited: p` = visit if p` 邻域有m个对象,把这些对象添加到N if p` 不属于任何簇,则将p`添加到C中 end 输出C else 标记p 为噪声
2.3 python实现DBSCAN
code here
3. Clustering by fast search and find of density peaks算法
该算法是2014年的一篇science,[链接在此](http://www.sciencemag.org/content/344/6191/1492.short)。可以识别出各种形状,参数十分容易确定。3.1 若干概念
- 局部密度
ρi :ρi=∑jχ(dij−dc),χ(x)={1,x<00,otherwise
其中dc 是一个截断距离,ρi 即为所有与对象i的距离小于dc 的对象的个数。由于该算法只对ρi 的相对值敏感,所以对dc 的选择是稳健的,一种推荐做法就是选择dc 使得平均每一个点的邻居数为所有点的1%-2%。 - 高局部密度
δi :δi=minj:ρj>ρi(dij)
在密度高于对象i的所有对象中,到对象i最近的距离,即高局部密度点距离。
对于密度最大的对象,设置δi=max(dij) 。
只有那些密度是局部或者全局最大的点才会有远大于正常值的高局部密度点距离。 - 簇中心:
那些有着比较大的局部密度ρi 和很大的高密度δi 的点被认为是簇的中心;高密度距离δi 较大但局部密度ρi 较小的点是异常点。
当确定簇中心之后,其他点按照距离已知簇的中心最近进行分类(按照密度可达的方法进行分类也可)。
3.2 聚类中的可靠性分析
在这里分析下每个点划分给某个簇的可靠性。首先针对每个簇定义一个边界区域,也就是划分给该簇但是距离其他簇的点的距离小于
该簇中所有局部密度大于
3.3 python实现
code here
0 0
- 20150915密度聚类.md
- 【聚类】密度聚类
- 密度聚类
- DBSCAN 密度聚类
- 密度聚类
- 密度聚类DBSCAN
- 基于密度的聚类
- 基于密度的聚类
- python实现密度聚类
- 基于密度的聚类
- 基于密度的聚类
- 密度聚类(DBSCAN)
- 密度聚类算法DBScan
- 基于密度的聚类算法
- DBSCAN - 基于密度的聚类算法
- 数据挖掘导论:2、密度聚类
- 基于密度聚类算法的改进
- 密度聚类算法(一)
- SQL执行流程分析
- Linux——waitpid方法
- C#读取/写入值到前台页面TextBox文本框
- matlab路径及其文件问题
- 循环(统计两个连续的字母出现的次数)
- 20150915密度聚类.md
- 如何检查Xcode是否被植入了XcodeGhost
- linux chomd 和 chown
- spring容器创建对象的3种方式(bean的实例化)
- log4j将日志写在多个文件里的方法
- 通过反射绕过编译向泛型为String的ArrayList里面添加整型
- MySQL数据库一些操作
- 《Monitoring with Ganglia》 Chapter 1 Introducing Ganglia
- linux编译调用动态库