基于数据分区的DBSCAN算法_周水庚
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 引 言
空间数据库是管理诸如点和多边形等空间对象的数据库系统. 近年来, 卫星遥感和 X 光成像等现代技 术工具所产生的大量数据被存储到空间数据库中, 使得大规模空间数据库中的知识发现变得尤为重要. 数据 聚类 (clu stering) 是数据挖掘领域中的一个主要课题[1]. 它将数据库中的数据划分成具有一定意义的子类, 使得不同子类中的数据尽可能相异而同一子类中的数据尽可能相同. 迄今为止, 人们提出了许多数据聚类的
DB SCAN 来说, 数据划分还有其它好处:
( 1) 在聚类过程中, DB SCAN 一旦找到一个核心对象, 即以该对象为“中心”向外扩展. 在此过程中, 核
心对象将不断增多. 未处理的核心对象被保留在内存中. 如果数据库中存在非常庞大的聚类, 用于存储核心
对象信息的内存需求将很大且难以预料. 这时将数据库数据进行分区聚类, 就可以避免这种情况的出现;
2000 年
算法, 像 CLA RAN S[2 ], B IRCH [3 ], DB SCAN [4 ], CU R E [5 ], ST IN G [6 ], CL IQU E [7 ] 和W aveclu ster[8 ] 等等. 所有 这些算法都试图解决大规模数据库的数据聚类问题.
DB SCAN 算法是一种基于密度的空间聚类算法. 该算法利用基于密度的聚类 (或者类 clu ster) 概念, 即 要求聚类空间中的一定区域内所包含对象 (点或其它空间对象) 的数目不小于某一给定阈值. DB SCAN 算法 的显著优点是聚类速度快, 且能够有效处理噪声点 (ou tliers) 和发现任意形状的空间聚类. 但是, 由于它直接 对整个数据库进行操作, 且进行聚类时使用了一个全局性的表征密度的参数, 因此也具有两个比较明显的弱 点: ①当数据量增大时, 要求较大的内存支持, I O 消耗也很大; ②当空间聚类的密度不均匀, 聚类间距离相 差很大时, 聚类质量较差.
针对上述问题, 本文提出一种基于数据分区的DB SCAN 算法, 即根据数据的空间分布特性, 将整个数 据空间划分为多个较小的分区, 然后分别对这些局部分区进行聚类, 最后将各局部聚类进行合并. 测试结果 表明这种方法是行之有效的.
本文其它内容安排如下: 第 2 节简述已有DB SCAN 算法的基本思想, 分析其局限性; 第 3 节给出基于数 据分区的DB SCAN 算法; 第 4 节介绍测试结果; 第 5 节结束全文, 指出今后的工作重点.
Abstract C lu stering is a p rom ising app lica t ion techn ique fo r m any field s includ ing da ta m in ing, p a t tern recogn it ion, im age p rocessing, com p ression and o ther bu siness app lica t ion s. DB SCAN is a den sity ba sed clu stering a lgo rithm tha t can efficien t ly d iscover clu sters of a rb it ra ry shap e and can effect ively hand le no ise. How ever, it requ ires la rge vo lum e of m em o ry suppo rt and need s a lo t of I O co st s w hen dea ling w ith la rge2sca le da taba ses becau se it op era tes d irect ly on the en t ire da taba ses. Fu rtherm o re, clu stering qua lity w ill deg rade w hen the clu ster den sity and the d istance betw een clu sters a re no t even. In th is p ap er, an im p roved DB SCAN a lgo rithm is p resen ted on the ba sis of da ta p a rt it ion ing. Exp erim en ta l resu lt s show tha t the new a lgo rithm is sup erio r to the o rig ina l DB SCAN in efficiency. Key words sp a t ia l da taba se, da ta m in ing, clu stering, da ta p a rt it ion ing, DB SCAN a lgo rithm
(1) 给定任一满足核心对象条件的数据对象 p , 数据库 D 中所有从 p 密度可达到的数据对象 o 所组成 的集合{o o> D p }构成了一个完整的聚类 C , 且 p ∈C;
(2) 给定一个聚类 C 和它的任一核心对象 p , C 等价于集合{o o> D p }. 为了找到一个类, DB SCAN 从 D 中找到任意对象 p , 并查找 D 中关于 Ep s 和M inP ts 的从 p 密度可达 的所有对象. 如果 p 是核心对象, 也就是说, p 的半径为 Ep s 的邻域所包含的对象数不小于M inP ts, 则根据 该算法可以找到一个关于参数 Ep s 和M inP ts 的类. 如果 p 是一个边界点, 即 p 的半径为 Ep s 的邻域中包含 的对象数小于M inP ts, 则没有对象从 p 密度可达, p 被暂时地标注为噪声点 (no ise). 然后, DB SCAN 处理数 据库D 中的下一个对象. 获取从一个核心对象密度可达的所有数据对象是通过反复进行区域查询 (reg ion query) 来实现. 一次区 域查询返回给定查询区域中的所有对象, 这种查询由 R 3 2树帮助实施[9]. 因此, 在进行聚类之前, 必须建立 R 3 2树. DB SCAN 要求用户指定一个全局 Ep s 值 (为减少计算量,M inP ts 设定为 4). 为了确定 Ep s, DB SCAN 需要计算所有数据对象与它的第 k (k = 4) 个最邻近的对象之间的距离, 并将结果按距离排序, 产生 k 2d ist 图. k 2d ist 图中的横坐标表示数据对象与它的第 k 最近的对象间的距离; 纵坐标则为对应于某一 k 2d ist 距离 值的数据对象的个数. 建立 R 3 2树和绘制 k 2d ist 图都是非常耗费时间的工作, 大规模数据库尤其如此. 此外, 用户须反复试验, 选择合适的 k 2d ist 值以达到较好的聚类效果. 由于没有做任何预处理而直接对整个数据库进行操作, 在用DB SCAN 算法进行大规模数据库聚类时, 一方面, 需要大量的内存和 I O 开销; 另一方面, 由于使用全局 Ep s 值, 因此数据空间中所有对象的邻域大 小是一致的. 当数据密度和类间距离分布不均匀时, 若根据较密的那些类选取较小的 Ep s 值, 那么对于客观 上相对较稀的那些类中的对象, 它们邻域中的数据对象的数目将要小于M inP ts, 也就是说这些对象将被认 为是边界对象 (bo rder ob jects) , 从而不被用于所在类的进一步扩展. 随之而来的结果是, 较稀的类被划分成 多个性质相似的类; 与此相反, 若根据较稀的那些类来选取较大的 Ep s 值, 那么离得较近而密度较大的那些 类将很可能被合并为同一个类, 它们之间的差异也就因为选取较大的 Ep s 值而被忽略. 很明显, 在上述两种 情况下, 其实很难选取一个合适的 Ep s 值来进行聚类且得到比较准确的聚类结果.
原稿收到日期: 1999208226. 修改稿收到日期: 1999211222. 本课题得到国家自然科学基金 (项目编号 69743001) 和国家教委博士点基金资 助. 周水庚, 男, 1966 年生, 博士研究生, 高级工程师, 研究兴趣为数据库、数据仓库和数据挖掘以及信息检索等.
1154
计算机研究与发展
2 关于 D BSCAN 算法
E ster M a rt in 等人[4]提出的 DB SCAN 算法是一种基于密度的空间数据聚类方法, 其中心思想是: 对于 某一聚类中的每个对象, 在给定半径 (文中用 Ep s 表示) 的邻域 (neighbo rhood) 内数据对象个数必须大于某 个给定值, 也就是说, 邻域密度必须超过某一阀值 (文中用M inP ts 表示). DB SCAN 算法的聚类过程基于如 下事实, 即一个聚类可以由其中的任何核心对象 (co re ob jects) 唯一确定. 等价地, 可以表述为
摘 要 数据聚类在数据挖掘、模式识别、图像处理和数据压缩等领域有着广泛的应用. DB SCAN 是一种基于密度 的空间聚类算法, 在处理空间数据时具有快速、有效处理噪声点和发现任意形状的聚类等优点. 但由于直接对数据 库进行操作, 在数据量大的时候就需要较多的内存和 I O 开销; 此外, 当数据密度和聚类间的距离不均匀时聚类质 量较差. 为此, 在分析 DB SCAN 算法不足的基础上, 提出了一个基于数据分区的 DB SCAN 算法. 测试结果表明新 算法不仅提高了聚类速度, 而且改善了聚类质量. 关键词 空间数据库, 数据挖掘, 聚类, 数据分区, DB SCAN 算法 中图法分类号 T P 311
第 37 卷 第 10 期 2000 年 10 月
计算机研究与发展 JOU RNAL O F COM PU T ER R ESEA RCH & D EV ELO PM EN T
V o l137, N o110 O ct. 2000
基于数据分区的D BSCAN 算法
周水庚 周傲英 曹 晶
(复旦大学计算机科学系 上海 200433) (上海 (国际) 数据库研究中心 上海 200433)
A DATA-PART IT IO N ING-BASED D BSCAN AL GO R ITHM
ZHOU Shu i2Geng, ZHOU A o 2Y ing, and CAO J ing
(D ep a rtm en t of Com p u ter S cience, F ud an U n iversity , S hang ha i 200433) (S hang ha i ( In terna tiona l) D a tabase R esea rch Cen ter, S hang ha i 200433)
(2) DB SCAN 算法的一个基本数据结构为 R 3 2树. 在整个聚类过程中, 构建 R 3 2树是最花时间的 (尽管
DB SCAN 没有将这个时间计入算法总时间内) , 而且建 R 3 2树的时间复杂度和DB SCAN 算法的聚类时间复
杂度 (O (N logN ) ) 均不与数据总量呈线性关系. 因此, 通过划分数据, 将大数据量划分为多个小数据量, 是可
以减少时间消耗;
(3) 正如在第 2 节所分析的那样, 由于使用全局 Ep s 值, 当数据密度和
类间距离分布不均匀时, DB SCAN 将难以得到较高质量的聚类结果. 如果通
过数据分区, 选择局部 Ep s 值进行聚类, 应当可以减轻乃至避免上述聚类质
10 期
周水庚等: 基于数据分区的 DB SCAN 算法
1155
3 基于数据分区的D BSCAN 算法
大规模数据库聚类时, 数据分区是一种行之有效的方法. Guha 等人提出的 CU R E 算法就使用了数据分
区技术[5]. 不过在 CU R E 算法中, 数据分区仅仅为了缓解因数据量大而出现的内存需求紧张局面. 对于
空间数据库是管理诸如点和多边形等空间对象的数据库系统. 近年来, 卫星遥感和 X 光成像等现代技 术工具所产生的大量数据被存储到空间数据库中, 使得大规模空间数据库中的知识发现变得尤为重要. 数据 聚类 (clu stering) 是数据挖掘领域中的一个主要课题[1]. 它将数据库中的数据划分成具有一定意义的子类, 使得不同子类中的数据尽可能相异而同一子类中的数据尽可能相同. 迄今为止, 人们提出了许多数据聚类的
DB SCAN 来说, 数据划分还有其它好处:
( 1) 在聚类过程中, DB SCAN 一旦找到一个核心对象, 即以该对象为“中心”向外扩展. 在此过程中, 核
心对象将不断增多. 未处理的核心对象被保留在内存中. 如果数据库中存在非常庞大的聚类, 用于存储核心
对象信息的内存需求将很大且难以预料. 这时将数据库数据进行分区聚类, 就可以避免这种情况的出现;
2000 年
算法, 像 CLA RAN S[2 ], B IRCH [3 ], DB SCAN [4 ], CU R E [5 ], ST IN G [6 ], CL IQU E [7 ] 和W aveclu ster[8 ] 等等. 所有 这些算法都试图解决大规模数据库的数据聚类问题.
DB SCAN 算法是一种基于密度的空间聚类算法. 该算法利用基于密度的聚类 (或者类 clu ster) 概念, 即 要求聚类空间中的一定区域内所包含对象 (点或其它空间对象) 的数目不小于某一给定阈值. DB SCAN 算法 的显著优点是聚类速度快, 且能够有效处理噪声点 (ou tliers) 和发现任意形状的空间聚类. 但是, 由于它直接 对整个数据库进行操作, 且进行聚类时使用了一个全局性的表征密度的参数, 因此也具有两个比较明显的弱 点: ①当数据量增大时, 要求较大的内存支持, I O 消耗也很大; ②当空间聚类的密度不均匀, 聚类间距离相 差很大时, 聚类质量较差.
针对上述问题, 本文提出一种基于数据分区的DB SCAN 算法, 即根据数据的空间分布特性, 将整个数 据空间划分为多个较小的分区, 然后分别对这些局部分区进行聚类, 最后将各局部聚类进行合并. 测试结果 表明这种方法是行之有效的.
本文其它内容安排如下: 第 2 节简述已有DB SCAN 算法的基本思想, 分析其局限性; 第 3 节给出基于数 据分区的DB SCAN 算法; 第 4 节介绍测试结果; 第 5 节结束全文, 指出今后的工作重点.
Abstract C lu stering is a p rom ising app lica t ion techn ique fo r m any field s includ ing da ta m in ing, p a t tern recogn it ion, im age p rocessing, com p ression and o ther bu siness app lica t ion s. DB SCAN is a den sity ba sed clu stering a lgo rithm tha t can efficien t ly d iscover clu sters of a rb it ra ry shap e and can effect ively hand le no ise. How ever, it requ ires la rge vo lum e of m em o ry suppo rt and need s a lo t of I O co st s w hen dea ling w ith la rge2sca le da taba ses becau se it op era tes d irect ly on the en t ire da taba ses. Fu rtherm o re, clu stering qua lity w ill deg rade w hen the clu ster den sity and the d istance betw een clu sters a re no t even. In th is p ap er, an im p roved DB SCAN a lgo rithm is p resen ted on the ba sis of da ta p a rt it ion ing. Exp erim en ta l resu lt s show tha t the new a lgo rithm is sup erio r to the o rig ina l DB SCAN in efficiency. Key words sp a t ia l da taba se, da ta m in ing, clu stering, da ta p a rt it ion ing, DB SCAN a lgo rithm
(1) 给定任一满足核心对象条件的数据对象 p , 数据库 D 中所有从 p 密度可达到的数据对象 o 所组成 的集合{o o> D p }构成了一个完整的聚类 C , 且 p ∈C;
(2) 给定一个聚类 C 和它的任一核心对象 p , C 等价于集合{o o> D p }. 为了找到一个类, DB SCAN 从 D 中找到任意对象 p , 并查找 D 中关于 Ep s 和M inP ts 的从 p 密度可达 的所有对象. 如果 p 是核心对象, 也就是说, p 的半径为 Ep s 的邻域所包含的对象数不小于M inP ts, 则根据 该算法可以找到一个关于参数 Ep s 和M inP ts 的类. 如果 p 是一个边界点, 即 p 的半径为 Ep s 的邻域中包含 的对象数小于M inP ts, 则没有对象从 p 密度可达, p 被暂时地标注为噪声点 (no ise). 然后, DB SCAN 处理数 据库D 中的下一个对象. 获取从一个核心对象密度可达的所有数据对象是通过反复进行区域查询 (reg ion query) 来实现. 一次区 域查询返回给定查询区域中的所有对象, 这种查询由 R 3 2树帮助实施[9]. 因此, 在进行聚类之前, 必须建立 R 3 2树. DB SCAN 要求用户指定一个全局 Ep s 值 (为减少计算量,M inP ts 设定为 4). 为了确定 Ep s, DB SCAN 需要计算所有数据对象与它的第 k (k = 4) 个最邻近的对象之间的距离, 并将结果按距离排序, 产生 k 2d ist 图. k 2d ist 图中的横坐标表示数据对象与它的第 k 最近的对象间的距离; 纵坐标则为对应于某一 k 2d ist 距离 值的数据对象的个数. 建立 R 3 2树和绘制 k 2d ist 图都是非常耗费时间的工作, 大规模数据库尤其如此. 此外, 用户须反复试验, 选择合适的 k 2d ist 值以达到较好的聚类效果. 由于没有做任何预处理而直接对整个数据库进行操作, 在用DB SCAN 算法进行大规模数据库聚类时, 一方面, 需要大量的内存和 I O 开销; 另一方面, 由于使用全局 Ep s 值, 因此数据空间中所有对象的邻域大 小是一致的. 当数据密度和类间距离分布不均匀时, 若根据较密的那些类选取较小的 Ep s 值, 那么对于客观 上相对较稀的那些类中的对象, 它们邻域中的数据对象的数目将要小于M inP ts, 也就是说这些对象将被认 为是边界对象 (bo rder ob jects) , 从而不被用于所在类的进一步扩展. 随之而来的结果是, 较稀的类被划分成 多个性质相似的类; 与此相反, 若根据较稀的那些类来选取较大的 Ep s 值, 那么离得较近而密度较大的那些 类将很可能被合并为同一个类, 它们之间的差异也就因为选取较大的 Ep s 值而被忽略. 很明显, 在上述两种 情况下, 其实很难选取一个合适的 Ep s 值来进行聚类且得到比较准确的聚类结果.
原稿收到日期: 1999208226. 修改稿收到日期: 1999211222. 本课题得到国家自然科学基金 (项目编号 69743001) 和国家教委博士点基金资 助. 周水庚, 男, 1966 年生, 博士研究生, 高级工程师, 研究兴趣为数据库、数据仓库和数据挖掘以及信息检索等.
1154
计算机研究与发展
2 关于 D BSCAN 算法
E ster M a rt in 等人[4]提出的 DB SCAN 算法是一种基于密度的空间数据聚类方法, 其中心思想是: 对于 某一聚类中的每个对象, 在给定半径 (文中用 Ep s 表示) 的邻域 (neighbo rhood) 内数据对象个数必须大于某 个给定值, 也就是说, 邻域密度必须超过某一阀值 (文中用M inP ts 表示). DB SCAN 算法的聚类过程基于如 下事实, 即一个聚类可以由其中的任何核心对象 (co re ob jects) 唯一确定. 等价地, 可以表述为
摘 要 数据聚类在数据挖掘、模式识别、图像处理和数据压缩等领域有着广泛的应用. DB SCAN 是一种基于密度 的空间聚类算法, 在处理空间数据时具有快速、有效处理噪声点和发现任意形状的聚类等优点. 但由于直接对数据 库进行操作, 在数据量大的时候就需要较多的内存和 I O 开销; 此外, 当数据密度和聚类间的距离不均匀时聚类质 量较差. 为此, 在分析 DB SCAN 算法不足的基础上, 提出了一个基于数据分区的 DB SCAN 算法. 测试结果表明新 算法不仅提高了聚类速度, 而且改善了聚类质量. 关键词 空间数据库, 数据挖掘, 聚类, 数据分区, DB SCAN 算法 中图法分类号 T P 311
第 37 卷 第 10 期 2000 年 10 月
计算机研究与发展 JOU RNAL O F COM PU T ER R ESEA RCH & D EV ELO PM EN T
V o l137, N o110 O ct. 2000
基于数据分区的D BSCAN 算法
周水庚 周傲英 曹 晶
(复旦大学计算机科学系 上海 200433) (上海 (国际) 数据库研究中心 上海 200433)
A DATA-PART IT IO N ING-BASED D BSCAN AL GO R ITHM
ZHOU Shu i2Geng, ZHOU A o 2Y ing, and CAO J ing
(D ep a rtm en t of Com p u ter S cience, F ud an U n iversity , S hang ha i 200433) (S hang ha i ( In terna tiona l) D a tabase R esea rch Cen ter, S hang ha i 200433)
(2) DB SCAN 算法的一个基本数据结构为 R 3 2树. 在整个聚类过程中, 构建 R 3 2树是最花时间的 (尽管
DB SCAN 没有将这个时间计入算法总时间内) , 而且建 R 3 2树的时间复杂度和DB SCAN 算法的聚类时间复
杂度 (O (N logN ) ) 均不与数据总量呈线性关系. 因此, 通过划分数据, 将大数据量划分为多个小数据量, 是可
以减少时间消耗;
(3) 正如在第 2 节所分析的那样, 由于使用全局 Ep s 值, 当数据密度和
类间距离分布不均匀时, DB SCAN 将难以得到较高质量的聚类结果. 如果通
过数据分区, 选择局部 Ep s 值进行聚类, 应当可以减轻乃至避免上述聚类质
10 期
周水庚等: 基于数据分区的 DB SCAN 算法
1155
3 基于数据分区的D BSCAN 算法
大规模数据库聚类时, 数据分区是一种行之有效的方法. Guha 等人提出的 CU R E 算法就使用了数据分
区技术[5]. 不过在 CU R E 算法中, 数据分区仅仅为了缓解因数据量大而出现的内存需求紧张局面. 对于