第 26 卷第 10 期
2009 年 10 月
计 算 机 应 用 研 究
Application Research of Computers
Vol.26 No.10
Oct.2009
倡
针 对 非 均 匀 数 据 集 的 DBSCAN 过 滤 式 改 进 算 法
熊忠阳, 吴林敏, 张玉芳
( 重庆大学 计算机学院, 重庆 400044)
摘 要: 针对在数据分布不均匀时,由于 DBSCAN 使用统一的全局变量,使得聚类的效果差,提出了一种基于过
滤的 DBSCAN 算法。 该算法的思想是:在调用传统的 DBSCAN 算法前,先对数据集进行预处理,针对所有点的
k唱dist数据进行一维聚类,自动计算出不同的 Eps;然后再根据每个 Eps 分别调用传统的 DBSCAN 算法,从而找出
非均匀数据集的各种聚类。 实验结果表明,改进算法对密度不均匀的数据能够有效聚类。
关键词: 聚类; DBSCAN; 过滤; 非均匀密度; 数据挖掘
中图分类号: TP301畅6 文献标志码: A 文章编号: 1001唱3695(2009)10唱3721唱03
doi:10.3969/j.issn.1001唱3695.2009.10.035
DBSCAN algorithm based on filtration for datasets with varied densities
XIONG Zhong唱yang, WU Lin唱min, ZHANG Yu唱fang
(College of Computer Science, Chongqing University, Chongqing 400044, China)
Abstract: When data distribution was not even,DBSCAN was clustering quality degrades for using the same global variable.
This paper proposed a filtration唱based DBSCAN algorithm.The basic idea of the algorithm was that, before adopting traditional
DBSCAN algorithm, according to the data point’s k唱dist plot,using 1唱dimension clustering to get all the clusters, then getting
several values of parameter Eps for different densities.With different values of Eps,adopted DBSCAN algorithm in order to find
out clusters with varied densities simultaneity.The experimental result demonstrates that the improved algorithm is effective on
clustering the datasets with varied densities.
Key words: clustering; DBSCAN; filtration; varied densities; data mining
网格的方法和基于模型的方法
定义 2 边界对象。 如果 p 在半径 Eps 邻域内含有的对
象小于 minPts,但在某核心对象的 Eps 邻域范围内,则称 p 为
边界对象。
定义3 噪声对象。 如果 p 在半径Eps 邻域内含有的对象
小于 minPts,且它不在其他核心对象的 Eps 邻域范围内,称 p
为噪声对象。
定义4 直接密度可达。 在对象集 D 中,如果 p 在 q 的
Eps 邻域内,且 q 是一个核心对象,则称 p 从 q 出发是直接密度
可达的。
定义5 密度可达。 如果存在一个对象链 p1,p2,…,pn,
pi =q,pn =p, 对 pi∈D(1≤i≤n),pi +1 是 pi 从 关 于 Eps 和
minPts 直接密度可达的, 则对 象 p 是从 对 象 q 关 于 Eps 和
minPts 密度可达的
DBSCAN 通过检查数据集中每个点的 Eps 邻域进行聚类。
如果一个点 p 的Eps 邻域包含了多于minPts 个点,则创建一个
以 p 作为核心对象的新类;然后DBSCAN 反复寻找从这些核心
对象直接密度可达的对象,这个过程涉及一些密度可达类的合
并;当没有新的点可以被添加到任何类时,该过程结束。
聚类是将数据对象分组成为多个类,在同一个类中的对象
之间具有较高的相似度,而不同类中的对象则差别较大。 在许
多应用中,可将一个类中的数据对象作为一个整体处理,因此
当分析一个较大的、复杂的、连续的、有着许多变量的数据集和
完全未知的结构时,聚类是一个非常有用的工具。 聚类的方法
可以分为五类,即划分方法、层次方法、基于密度的方法、基于
[1]。 DBSCAN 属于基于密度的
聚类算法。 该算法将具有足够高密度的区域划分成类,并可以
在带有噪声的空间数据库中发现任意形状的类。 但有一个比
较明显的弱点,即当数据分布不均匀时,由于使用统一的全局
变量,使得聚类的效果差。
针对上述问题,本文提出了一种基于过滤的 DBSCAN 改
进算法。
1 DBSCAN 算法
DBSCAN 算法根据给定的密度阈值识别一个类。 密度阈
值由 Eps 和 minPts 两个参数决定。 其中:Eps 表示半径;minPts
[2]。
表示核心点在 Eps 半径范围内至少应该含有的点的数量
原始 DBSCAN 算法描述如下:
DBSCAN 的一些基本定义如下( 对于给定的对象集 D 和参数
a)初始化,输入聚类数据。
Eps、minPts):
b)任意选取一个数据点 xi。
定义 1 核心对象。 如果对象 p 在半径 Eps 邻域内至少
c)如果 xi 没有被划分到某一个类,且是核心对象,则扩展
包含 minPts 个对象,则称 p 为核心对象。
收稿日期: 2008唱12唱25; 修回日期: 2009唱02唱26 基金项目: 重庆市科委自然科学基金计划资助项目(2007BB2372)
作者简介:熊忠阳(1962唱),男,重庆人,博导,主要研究方向为网格技术、数据挖掘与应用; 吴林敏(1984唱),男,四川广安人,硕士研究生, 主要
研究方向为数据挖掘(wulinmin唱111@163.com);张玉芳(1967唱),女,重庆人,硕导,主要研究方向为数据挖掘、商业智能.
[3]。
计 算 机 应 用 研 究
数量
·2273·
以 xi 为核心对象的类,即找出从 xi 所有密度可达的点。
d)若所有的数据点均被处理,则结束;否则,转 b)[4]。
DBSCAN 的时间复杂度为 O(n2);如果采用空间索引,其
复杂度可降为 O(n log n),n 表示数据集中含有数据对象的
[5]。
2 基于过滤的 DBSCAN 算法
在传统DBSCAN 算法中,为了确定参数Eps 和minPts,DB唱
SCAN 将计算任意对象与它的第 k 个最邻近的对象之间的距
离(即 k唱dist),k 值由用户指定,然后根据 k唱dist 由小到大排序,
绘出 k唱dist 图。 在指定 k 值后,参数 minPts 则等于 k +1,即在
半径 Eps 范围内,包括核心点在内至少应该含有 k +1 个点才
能被聚为类。 另外,在确定参数 Eps 时,由用户指定一个百分
比(如85%),然后根据 k唱dist 图取出对应的 k唱dist 作为 Eps。
下面先对 k唱dist 图稍作说明:如果单就 k唱dist 在图中的表
示来说,它其实是一系列的点。 如图3 中的 C2 部分含有四个
点(k =3),这些点的纵坐标均为1.4,表示在原数据集中3唱dist
为1.4 的数据点有四个,具体为原数据集中的哪四个点则无须
知道。 又比如假设数据集 D 一共有 10 个点。 其中有五个点
的3唱dist 为1,其余五个点的3唱dist 为4;将各3唱dist 按从小到大
排序后,于是得到 3唱dist 图中各个点的坐标:p1(1,1),p2(2,
1),…,p5(5,1),p6(6,4),p7(7,4),…,p10(10,4)。
如果将 k唱dist 图中这一系列的点连接起来,就变成了k唱dist
曲线,如图1 所示。 图1 中有两条曲线 A 和 B,分别对应了两
个不同的数据集。 其中:曲线 A 表示数据集的密度分布比较均
匀,只有一种主要密度水平;曲线 B 则表明数据集为非均匀数
据集,它至少含有三个不同层次的密度水平。
在实际应用中,由于传统 DBSCAN 算法只采用统一的全
局变量 Eps,这使得它只能针对单一的密度水平进行聚类。 而
当数据点的密度分布出现曲线 B 的这种情况时,传统的 DB唱
SCAN 算法的聚类效果较差。
离
距
邻
近
最
第
图
图
图
密度分布不均衡的数据图
如图2 所示,图2 中一共五个类,即 C1、C2、C3、C4、C5。 其
中左边类的密度较高,而右边类较低。 如果参照左边类的密度
来决定全局的 Eps,则右边的两个类就可能变成很多个类,同
时产生很多噪声点;如果参照右边类的密度来决定全局的
Eps,那么左边的 C1、C2、C3 很可能合并为一个类
[6]。 因此,本
文提出了基于过滤的 DBSCAN 算法。 该算法主要包括两个
步骤:
a)数据预处理,计算 Epsi:
(a)计算出每个点的 k 距离;
(b)对一维的 k 距离数据进行聚类,筛选聚类结果,得到
代表原始数据集主要密度水平的类;
(c)根据一维聚类结果,计算出参数 Epsi。
第 26 卷
b)将 Epsi 从小到大排序,根据每个 Epsi,调用传统的 DB唱
SCAN 算法进行过滤式聚类。
算法的详细过程如下:
a)计算 Epsi。 在对一维的 k 距离数据进行聚类时,本文也
采用传统的 DBSCAN 算法进行聚类;然后,对一维聚类结果进
行筛选处理,去掉噪声类。 所谓噪声类,是指聚类结果中只含
很小比例数据点的类,这些类并不能代表原始数据集的主要密
度水平,因此需要去掉噪声类。
图3 表示 k唱dist 图(为了表示方便,没有将各点连成 k唱dist
曲线),图4 为原始数据集。 在图3 中,纵坐标为 k唱dist,横坐标
则表示该 k唱dist 值对应了某个数据点。 为了更直观地表达,将
一维的聚类结果在 k唱dist 图中显示。 对 k唱dist 聚类后,得到 C1、
C2、C3 共三个类。 其中 C2 即为噪声类,因为它只代表很小比
例的数据点,不能代表原始数据集的主要密度水平。
图
图
图
原始数据集
为了去掉噪声类,将一维聚类结果进行如下处理:
在传统的 DBSCAN 算法中,根据 k唱dist 图确定 Eps 参数
时,需要用户指定一个百分比例,以截取 k唱dist 图中相应位置
的值作为 Eps 参数的值。 同样,也可以用该方法进行噪声类的
处理:(a)将各 k唱dist 类根据其含有的数据点的数量进行降序
排列,则较前面的类将代表数据集的主要密度;(b)与传统DB唱
SCAN 一样需要一个百分比例,从而得到代表原始数据集主要
密度水平的类。 如图3,一维聚类得 C1(21)、C2(4)、C3(20),
降序排列后为 C1(21)、C3(20)、C2(4),取percent =80%,从 C1
开始选择,直到选择的类之和大于或等于总数据点的80%;因
此,依次取得 C1、C3,其中 C2 为噪声类。
根据一维聚类结果计算 Epsi:
计算各个 k唱dist 类的中的平均 k唱dist 和最大 k唱dist,并按平
均 k唱dist 从小到大排序。 假设排序后的类对应为 C1 C2…Cn,
平均 k唱dist 序列为 d1 d2 …di…dn; 则 Eps1 =( d1 +d2)/2…
Epsi =( di +di +1)/2 …Epsn -1 =( dn -1 +dn)/2,Epsn =max
(Cn),即针对最后一个 Epsn,用类中的最大 k唱dist 值作为 Epsn
的值。 Epsi 的计算过程示例如表1 所示。
表 1 Epsi 的计算过程示例
计算步骤
每步的结果
和最大 k 距离
得到代表主要密度水平的类
C1(21)、C2(4)、C3(20)
(a)k唱dist 聚类结果
(b) 按含有的数据点数量降序排列; C1(21)、C3(20)、C2(4)
(c) 取 percent =80%,去掉噪声类,
C1(21)、C3(20)
(d) 计算各个类的平均 k 距离
d1 =1,d3 =3;max(C1) =1,max(C3) =3
(e) 将平均 k 距离的值按升序排列; d1 =1,d3 =3
Eps1 =(d1 +d3)/2 =2;Eps2 =max(C3) =3
(f) 计算得出 Epsi;
b)过滤式的聚类。 将前面所得的 Epsi 按升序排列,然后
根据不同的 Epsi,依次调用 DBSCAN 算法进行过滤式聚类。
将 Epsi 升序排列是为了先将密度高的数据进行聚类,随后再
熊忠阳,等:针对非均匀数据集的 DBSCAN 过滤式改进算法
第 10 期
依次根据较大的 Epsi,将密度较稀的数据分别进行聚类。 每当
下一次聚类开始时,去掉前面已经聚成类的点,以防止重复
聚类。
3 实验与分析
3畅1 数据描述
本实验采用 MATLAB 实现,为了能够直观地观察和分析
结果,实验采用二维数据。 如图 5 所示,图中有两个密度明显
不同的区域,因为数据集分类明显,所以该数据集能较好地用
来检验聚类结果的有效性。 另外,由于基于密度的算法已经被
证明可以发现任意形状的类,本文在任意形状方面将不再过多
探讨。
3畅2 实验过程与结果
进行一维聚类得 R1、R2、R3、R4,如图6 所示。
计算出各个点的 k唱dist(k =4),将其从小到大排列,然后
·3273·
b)根据不同的 Epsi,调用 DBSCAN 算法进行过滤式聚类。
在采用空间索引的情况下,这一步所使用的时间为 O(n log
n);因此,整个算法的时间复杂度为 O(n log n)。
在该实验中,如果采用传统的 DBSCAN 算法,则 Eps 只能
选择一个统一的全局变量。 如果 Eps =1.5,则图中 C1 将能
被成功聚类,而 C2 会被标志为噪声点;如果 Eps =2,则 C1 和
C2 将被合并为一个类。 因此,当数据密度不均匀时,传统的
DBSCAN算法聚类效果很差。 针对这个问题,本文提出了基
于过滤的 DBSCAN 改进算法,实验结 果表明该算法有效并
可行。
4 结束语
当数据分布不均匀时,由于传统 DBSCAN 使用统一的全
局变量,聚类的效果差。 针对这个问题,本文提出了一种基于
过滤的 DBSCAN 改进算法。 该算法针对数据集中存在的不同
密度水平,自动产生相应的 Epsi,然后依次调用传统的 DB唱
SCAN 进行聚类。 实验结果表明该算法对于数据分布不均匀
的情况能够有效地聚类。 当然,由于改进算法采用了数据预处
理的方式,如何提高算法的效率将是下一步的研究方向。
参考文献:
[1] 蔡元萃,陈立潮.基于数据分区的并行[J].科技情报开发与经济,
2007,17(1):145唱146.
[2] HAN Jia唱wei,KAMBER M.Data mining concepts and techniques
[M].Beijing:Higher Education Press,2001.
[3] 周水庚,周傲英,曹 晶.基 于 数 据 分 区 的 DBSCAN 算 法[J].计 算
机研究与发展,2000,37(10):1153唱1159.
[4] 荣秋生,颜 君 彪,郭 国 强.基 于 DBSCAN 聚 类 算 法 的 研 究 与 实 现
[J].计算机应用,2004,24(4):45唱46.
[5] 张枫,邱保志.基于网格的高效 DBSCAN 算法[J].计算机工程与
应用,2007,43(17):167唱169.
[6] 何中 胜, 刘 宗 田, 庄 燕 滨.基 于 数 据 分 区 的 并 行 DBSCAN 算 法
[J].小型微型计算机系统,2006,27(1):115唱116.
[7] LIU Peng,ZHOU Dong,WU Nai唱jun.VDBSCAN:varied density based
spatial clustering of applications with noise [J].Service Systems
and Service Management,2007,22(7):1唱4.
International Joint Conference on Artificial Intelligence.Montreal:[s.
n.],1995:924唱929.
[3] MYRA S,LUKAS F.A data miner analyzing the navigational behavior
of Web users [EB/OL].(2001唱09唱17).http://www.wiwi.hu_ber唱
lin.de/myra/w_acaii01.aspx.
[4] GODOY D,AMANDI A.Modeling user interests by conceptual cluste唱
ring[J].Information Systems,2006,31(4,5):247唱255.
[5] 邢东山,沈钧毅,宋擒豹.用户浏览偏爱模式挖掘算法的研究[J].
西安交通大学学报,2002,36(4):369唱372.
[6] BRUSILOVSKY P.Predictive statistical models for user modeling
[J].User Modeling and User唱adapted Interaction,2001,11(1):
5唱18.
[7] CHEN M S,PARK J S,YU P S.Efficient data mining for path traver唱
sal patterns[J].IEEE Trans on Knowledge and Data Enginee唱
ring,1998,10(2):209唱221.
图
图
图
实验数据
将其 按 所 含 数 据 点 的 数 量 降 序 排 列: R3 (2332)、 R1
(2304)、R2(192)、R4(167);取 percent =85%,得到代表主要密
度水平的类:R3(2332)、R1(2304);然后按表 1 所示的步骤进
行计算,得出 Epsi:Eps1 =1.5, Eps2 =2。
根据不同的 Epsi,依次调用 DBSCAN 算法进行过滤式聚
类。 如图5,当 Eps1 =1.5 时,图中标为“· ”的点被聚为 C1,此
时标为“倡”的点则被识别为噪声点,然后,被聚为 C1 的点将
被过滤掉;当 Eps2 =2 时,图中标为“倡” 的区域被聚为 C2,整
个实验过程结束。
算法时间复杂度分析:过滤算法主要分为以下两步:
a)对数据进行预处理,并计算出 Epsi,这一步所用的时间
为 O(n log n);
( 上接第 3696 页) 检索领域中的研究热点。 本文提出了结合用
户浏览时间和内容选择机制来发现用户的个人浏览兴趣,动态
维护用户的个人兴趣剖像,进而构建个人兴趣搜索智能 agent
子系统 SSPISIA 来搜集、组织、挖掘和应用用户的个人兴趣信
息,并在此基础上实现了基于 SSPISIA 数据收集的个人兴趣增
量挖掘算法。 最后通过实验表明,该结构和算法能够有效地跟
踪用户的个人兴趣变化,并且具有良好的适应性,进而为实现
个性化信息检索奠定了基础。 笔者下一步将进一步从语法、语
义和语用的角度探讨用户模型的形成和应用,提高个性化信息
检索的效率。
参考文献:
[1] 曾春,邢春晓,周立柱.个性化服务技术综述[J].软件学报,2002,
[2] LIEBEMAN H L.An agent that assists Web browsing[C] //Proc of
13(10):1952唱1961.