1、 本科毕业论文 (科研训练、毕业设计 ) 题 目: 基于孤立因子的层次聚类算法与应用 随机抽样与图像压缩 姓 名: 学 院:软件学院 系: 专 业:软件工程 年 级: 学 号: 指导教师(校内): 职称: 指导教师(校内 ): 职称: 年 月 日 基于孤立因子的层次聚类算法与应用随机抽样与图像压缩 第 2 页 共 24 页 基于孤立因子的层次聚类算法与应用 A Clustering Algorithm Based on Outlier-handling Factor and its Applications 摘要 数据挖掘是数据库系统和新的数据库应用的一个有希望的、欣欣向荣的学科前沿。作为一个
2、数据挖掘的功能,聚类分析能作为一个独立的工具来获得数据分布的情况,观察每个簇的特点,集中对特定的某些簇做进一步的分析。此外,聚类分析可以作为其他算法的预处理步骤,这些算法再在生成的簇上进行处理。由于数据库中收集了大量的数据,聚类分析已经成为数据挖掘研究领域中一个非常活跃的研究课题。 本文在分析 BIRCH 算法与 CLAP 算法的优缺点基础上,结合孤立点挖掘算法,提出一种基于孤立点预测的层次聚类算法 ,并且用 Visual C+实现了 CLOF 算法系统。系统包含了输入 /输出、数据预处理、 CLOF 算法核心和 图像 还原预处理四个模块。 CLOF 算法首先采用随机抽样,通过初步聚类的结果定
3、义子聚类和数据项的孤立因子,并采用全局因子和局部因子定义相结合,改进了孤立点的去除和吸收算法,提高了聚类的质量,降低了对数据输入顺序的敏感性,增强了对噪声数据处理的稳健性,并在大型数据库聚类、图像压缩和图像分割等方面进一步得到验证。 关键词 聚类 BIRCH 算法 CLAP 算法 图像压缩 A Clustering Algorithm Based on Outlier-handling Factor and its Applications Abstract: Data mining is a promising and flourishing frontier in database sys
4、tems and new database applications. As a data mining function, cluster analysis can be used as a stand-alone tool to gain insight into the distribution of data, to observe the characteristics of each cluster, and to focus on a particular set of clusters for further analysis. Alternatively, it may se
5、rve as a preprocessing step for other algorithms, such as characterization and classification, which would then operate on the detected clusters. Owing to the huge amounts of data collected in databases, cluster analysis has recently become a highly active topic in data mining research. In this pape
6、r, we propose a new hierarchical clustering algorithm to improve the performance of the BIRCH algorithm and CLAP algorithm, furthermore, we achieve the system of CLOF algorithm using Visual C+. The system contains four modules: input/output, data preprocess, the kernel of CLOF algorithm, the preproc
7、ess of image revivification. Keyword: Clustering BIRCH CLAP K-means 基于孤立因子的层次聚类算法与应用随机抽样与图像压缩 第 4 页 共 24 页 目 录 第一章 引言 . 5 第二章 CLOF 算法系统设计需求分析 . 7 2.1 引言 . 7 2.1.1 编写目的 . 7 2.1.2 项目背景 . 7 2.2 任务概述 . 8 2.2.1 目标 . 8 2.3 数据描述 . 9 2.3.1 静态数据 . 9 2.3.2 动态数据 . 9 2.4 功能需求 . 9 2.4.1 流程图 .10 2.4.3 数据与功能的对应关系
8、. 11 2.5 性能需求 . 11 2.5.1 时间要求 . 11 2.5.2 适应性 . 11 2.6 运行环境描述 . 11 2.6.1 硬件设备 . 11 2.6.2 支持软件 . 11 第三章随机抽样与图像压缩 .12 3.1 数据库的输入输出 .13 3.1.1 目的 .13 3.1.3 处理流程 .15 3.2 图像处理 .15 3.2.1 目的 .15 3.2.2 图片背景知识 .15 3.2.2.1BMP 文件组成 .15 3.2.3 图片处理类 .17 3.2.4 重构图片方法思想 .17 3.2.5 处理图像实例 .18 3.2.6 程序输入输出接口与实例 .19 第四章
9、 CLOF 算法系统测试结果 .20 第五章 结论 .22 致谢语 .22 参考文献 .23 基于孤立因子的层次聚类算法与应用随机抽样与图像压缩 第 5 页 共 24 页 第一章 引言 本文在分析 BIRCH1算法与 CLAP4算法的优缺点基础上,结合孤立点挖掘算法,提出一种基于孤立点预测的层次聚类算法,并且用 Visual C+实现了 CLOF 算法系统。系统包含了输入 /输出、数据 预处理、 CLOF 算法核心和图像还原预处理四个模块。 数据挖掘( Data Mining) 就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的,人们事先不知道的、但又是潜在的有用信息和知
10、识的过程。 它是一门涉及面很广的交叉学科,包括机器学习、数理统计、神经网络、数据库、模式识别、粗糙集、模糊数学等相关技术。 由于数据挖掘是一门受到来自各种不同领域的研究者关注的交叉性学科,因此导致了很多不同的术语名称。其中,最常用的术语是 “知识发现 “和 “数据挖掘 “。相对来讲,数据挖掘主要流行于统计界(最早出现于 统计文献中)、数据分析、数据库和管理信息系统界;而知识发现则主要流行于人工智能和机器学习界。 数据挖掘可粗略地理解为三部曲:数据准备( Data Preparation)、数据挖掘,以及结果的解释评估( Interpretation and Evaluation)。 根据数据挖
11、掘的任务 分 类 有如下几种:分类或预测模型数据挖掘、数据总结、数据聚类、关联规则发现、序列模式发现、依赖关系或依赖模型发现、异常和趋势发现等等。 根据数据挖掘的对象分 类 有如下若干种数据源:关系数据库、面向对象数据库、空间数据库、时态数据库、 文本数据源、多媒体数据、异质数据库、遗产( Legacy)数据库,以及 Web 数据源。 根据数据挖掘的方法可粗分为:统计方法、机器学习方法、神经网络方法和数据库方法。统计方法中,可细分为:回归分析(多元回归、自回归等)、判别分析(贝叶斯判别、费歇尔判别、非参数判别等)、聚类分析(系统聚类、动态聚类等)、探索性分析(主元分析法、相关分析法等)、以及模
12、糊集、粗糙集、支持向量机等。机器学习中,可细分为:归纳学习方法(决策树、规则归纳等)、基于范例的推理 CBR、遗传算法、贝叶斯信念网络等。神经网络方法,可细分为:前向神 经网络( BP 算法等)、自组织神经网络(自组织特征映射、竞争学习等)等。数据库方法主要是基于可视化的多维数据分析或 OLAP 方法,另外还有面向属性的归纳方法。 聚类( Clustering) 就是将物理或抽象对象的集合分组成为由类似的对象组成的多个类的过程。聚类分析源于许多研究领域,包括数据挖掘统计学 、 生物学 、 以及机器学习。聚类分析是以相似性为基础,把一组个体划分成若干个具有一定意义的子类 ,即“物以类聚”,其目的
13、是使得属于同一类别的个体之间尽可能相同,而不同类别上的个体间尽可能相异。聚类分析也称群分析,簇群分析等, 是数值分类学的一个分支,并在数据挖掘、图像分割、模式分类及决策制定等众多领域中广泛应用,同时由于不需要任何应用领域知识,因而受到广大数据挖掘研究人员的广泛重视。其中在面向大型数据库方面,目前流行的主要算法有 BIRCH1、基于孤立因子的层次聚类算法与应用随机抽样与图像压缩 第 6 页 共 24 页 CURE6等。 BIRCH 算法通过采用多阶段聚类技术,利用计算机有限的主存和辅存资源,尽可能多地去除孤立点,实现对大规模数据库的聚类分析,它具有良好的伸缩性和处理噪音能力,许多数据挖掘研究人员
14、在 BIRCH 算法的基础上提出了改进算法,提高了运行速度和改进了聚类质量, CLAP4算法就 是其中代表之一。 数据挖掘的大多数算法主要研究的问题是发现“大模式”,即输入数据的主要特征;另一方面是研究“小模式”问题即孤立点挖掘,孤立点探测和分析有非常广泛的应用,如欺诈监测、定制市场、医疗分析等领域。 10 在 BIRCH 算法中,孤立点是指在那些密度较低或数量相对少得多的子聚类,它们对整体的聚类模型影响很小,因而在重建 CF 树时,把它们当成孤立点从内存写入硬盘,留出更多的内存空间吸收余下的数据项;而在孤立点挖掘中,孤立点的定义是指那些没有“足够多”邻居的对象,它代表一些特别的意义。 其实两
15、者定义是一致的 ,都是指在它的某个领域中只有相对少的邻居,另外 BIRCH 算法检测孤立点是为了去除它,而孤立点挖掘则是为了寻找一些有特别意义的数据对象。 我们考虑把对孤立点的检测与对孤立点的去除结合在一起,在 BIRCH 算法和 CLAP 算法基础上,提出一个基于孤立因子的层次聚类算法 CLOF( Clustering aLgorithm based on Outlier-handling Factor and random-sampling)。 第二章 CLOF 算法系统设计需求分析 2.1 引言 我们通过本节内容来说明关于整个需求 规格说明书的综述,包括本文的编写目的、范围、名词和术语、
16、参考资料等。 2.1.1 编写 目的 1. 明确程序的编写目的及在整个项目过程中的作用。 2. 提高开发效率。 3. 作为以后工作的重要参考。 2.1.2 项目背景 在分析 BIRCH 算法与 CLAP 算法的优缺点基础上,结合孤立点挖掘算法,提出一种基于孤立点预测的层次聚类算法 ( CLOF) 。 BIRCH( Balance Iterative Reducing and Clustering using Hierarchies) 算法 由四阶段组成:()装载;()有选择地压缩;()全局 聚类;()有选择地提炼。阶段的主要任务是利用计算机可用的主存和辅存空间,通过一次扫描数据库的所有数据,建
17、立起初始的驻留内存的 CF 树;阶段是可选的阶段,决定于阶段 3 采取的全局算法;阶段的主要任务是采用一个全局或局部的聚类算法对 CF 树的子聚类进行聚类。阶段 4 也是可选的,通过数据库的再次扫描,进一步去除孤立点,提高聚类精度。可见 BIRCH 算法是通过采用多阶段聚类技术,利用计算机有限的主存和辅存资源,实现对大规模数据库的聚类分析。 在数据量高速增长的今天,大数据集的数据挖掘面临着: 解决可用内存量是有限的而数据集是任意大的问题,由于内存增长的速度远小于数据量的增长速度,大部分数据挖掘面临的问题是内存数据集之比非常小。 降低 I/O 成本,一方面要解决同样的容量存放更多的内容,另一方面
18、程序执行过程中尽量减少访问次数。 BIRCH 算法很好地解决数据挖掘所面临的问题。 BIRCH 特别适合大数据集,它将数据集首先以一种很紧凑的压缩格式存放,直接在压缩的数据集上进行聚类而不是在原始的数据集上聚类,它的 I/O 成本与数据集的大小呈线性关系,单遍扫描数据集就可生成较好的聚类 ,可选的另一遍或多遍扫描用于进一步地改进聚类质量。 BIRCH 试图利用可用的资源来生成最好的聚类结果。给定有限的主存,一个重要的考虑是最小的 I/O 时间。 BIRCH 采用了一种多阶段聚类技术:数据集合的单遍扫描产生了一个基本的聚类,一或多遍的额外扫描可以进一步地改进聚类质量。这个算法的计算复杂性是 O(
19、n),这里的 n是对象的 数 目。 BIRCH 算法具有对象数目的线性伸缩性,及较好的聚类质量。但是,既然 CF 树的每个节点由于大小限制只能包含有限数目的条目,一个 CF 树节点并不总是对于用户所认为的一个自然聚类。而且,如果簇 不是球形的, BIRCH 不能很好地工作,因为它用了半径或直径的概念来控制聚类的边界。 BIRCH 算法具有良好的算法伸缩性和处理噪声的能力,但也有下述 3 个缺点: 1. BIRCH 算法有一个聚类的预处理过程,需要扫描所有数据来产生一个初始聚类结果。然后,需要再次扫描所有数据,进一步优化初始的聚类结果。对于大规模数据基于孤立因子的层次聚类算法与应用随机抽样与图像
20、压缩 第 8 页 共 24 页 库,两次扫描所有的数据大大降低了算法效率。 2. 簇直径只是定义了一簇点之间的聚类距离,并没有定义叶节点的直径大小。所以,只要叶节点还有空位,就可以容纳新的点,既使新的点会使叶节点直径变得很大,降低了叶节点的紧密度 。这样的结果会降低搜索的精度,影响聚类质量。 3. BIRCH 算法采用自顶向下的搜索策略,是一种局部搜索算法,它找到的叶节点不一定是最好的。这会导致在数据项输入顺序不好时,产生错误的聚类。 CLAP( Clustering Algorithm Based on Random-sampling and Cluster-feature) 算法的描述:
21、CLAP 算法即基于随机抽样和聚类特征的聚类算法从 BIRCH 算法出发,针对其局限性,主要在三个方面进行改进: 采用高效的随机取样算法 8 ,从数据库中抽取一部分数据进行聚类 预处理,避免了预处理时对数据库的全面扫描,节省了运行时间; 设立了分叶直径 和簇直径 一起控制 CF 树的构造,要求插入新的叶节点后分叶的簇直径不超过 ,否则要求产生新的叶节点来容纳新的数据项 ,增加了叶节点的紧密度,提高了搜索效率,改进了聚类质量; 在寻找最“亲”的叶子结点方面,通过设立全局因子 , 采取全局搜索策略和局部搜索策略相结合,从而降低了数据输入顺序对聚类质量的影响。 实验测试结果表明,该算法在聚类速度和聚
22、类质量方面均优于 BIRCH 算法。 CLAP 算法的核心是通过定义分叶直径加强同一个叶子结点的子聚类之间 的紧密度,从而提高了聚类质量,但在对孤立点( Outlier) 的处理上没有作进一步的阐述。大部分数据挖掘方法将孤立点视为噪声或异常而丢弃。然而,在一些应用中(如欺骗检测),罕见的事件可能比正常出现的那些更有趣。因此孤立点挖掘则是为了寻找一些有特别意义的数据对象。 基于以上分析,我们在 BIRCH 算法与 CLAP 算法的基础上,结合孤立点挖掘算法,提出一种基于孤立点预测的层次聚类算法 ( CLOF) 。 2.1.3名词解释 BIRCH 算法: Balanced Iterative Re
23、ducing and Clustering using Hierarchies CLAP 算法: Clustering Algorithm Based on Random-sampling and Cluster-feature CLOF 算法: Clustering Algorithm Based on Outlier-handling Factor and Random-sampling CF 树 : Clustering Feature Tree 2.2 任务概述 在分析 BIRCH 算法与 CLAP 算法的优缺点基础上,结合孤立点挖掘算法 ,提出一种基于孤立点预测的层次聚类算法。该算法
24、首先采用随机抽样,通过初步聚类的结果定义子聚类和数据项的孤立因子,并采用全局因子和局部因子定义相结合,改进了孤立点的去除和吸收算法,提高了聚类的质量,降低了对数据输入顺序的敏感性,增强了对噪声数据处理的稳健性,并在大型数据库聚类、图像压缩和图像分割等方面进一步得到验证 2.2.1 目标 利用大型数据库聚类、图像压缩和图像分割等方法,在分析 BIRCH 算法与 CLAP 算法的优缺点基础上,结合孤立点挖掘算法,提出一种基于孤立点预测的层次聚类算法。,改进孤基于孤立因子的层次聚类算法与应用随机抽样与图像压缩 第 9 页 共 24 页 立点的去除和吸收算 法,提高了聚类的质量,降低了对数据输入顺序的
25、敏感性,增强了对噪声数据处理的稳健性。 2.3 数据描述 数据分为 静态数据和动态数据。所谓静态数据,指在运行过程中主要作为参考的数据,它们在很长一段时间内不会变化,一般也不会随着运行而改变。所谓动态数据,包括所有在运行中要发生变化的数据,以及在运行中要输入、输出的数据。 2.3.1 静态数据 美国家庭情况网络调查 Internet 数据库,共有 33832 条记录,每条记录有 29个属性。 公共图像文件 Mandrill.bmp (512*512 像素 ),分割成 1*2 图块,生成 2 维 向量近 13 万条作为原始数据。 图 1: Mandrill.bmp(512*512 像素 ) 图
26、2: Perpers(512*512 像素) 2.3.2 动态数据 聚类结果文档( *.txt):包含聚类数量,输出维数,中心点。 例: 4 2 8.18056680161943 11.5535762483131 162.8 43.1 60.9932432432432 16.8429054054054 3.84455958549223 123.020725388601 K 类, K 个中心点,最小半径,最小直径,平均半径,平均直径 。 产生 Internet数据库聚类结果。 经过算法处理后得到经过聚类处理的图像。 2.4 功能需求 基于孤立因子的层次聚类算法与应用随机抽样与图像压缩 第 10
27、页 共 24 页 2.4.1 流程图 这五大部分将进一步分成三大块由项目小组三个人负责完成。第一块为 数据的输入和输出及 图像处理 由本人负责 ;第二块为 K-MEAN 算法预处理和聚类处理 由刘裴寰负责 ;第三块为 CLOF 算法处理生成聚类结果 由吴楠楠负责。 2.4.2 功能描述 对最底层的功能所要完成的 功能进行详细描述,填入下表中: 功能名称 功能标识符 功能详细描述 数据输入 01 用 DAO 方法访问 ACCESS 数据库读入美国家庭情况网络调查 internet 数据库 构建 CDIB类读入 mandrill.bmp作为数据处理对象 K-MEAN 算法预处理 02 通过预处理获
28、得初步聚类结果 k 类、 k个聚类中心、平均半径 R、平均直径 D、最小半径 R、最小直径 D,提供给 CLOF算法核心模块使用 最为重要的 k个输入变量 (kn), CLOF 算法 03 CLOF 算法通过采用多阶段聚类技术,利用计算机有限的主存和辅存资源 ,尽可能多地去除孤立点,实现对大规模数据库的聚类分析 CLOF 算法由四阶段组成:()装载;()有选择地压缩;()全局聚类;()有选择地提炼 K-MEAN 算法 聚类 04 通过处理获得数据集 Xi( i=1, ,N;N 是随机选取的数据总量)和聚类结果K类,提供给图象还原模块使用 数据输出 05 用 DAO 方法访问 ACCESS 数据库读出经过聚类后得美国家庭情况网络调查internet 数据库 构建 CDIB 类读出经过处理后得mandrill.bmp 数据输入( ACCESS 数据库数据或图像) K-MEAN算法预处理 CLOF算法处理生成聚类结果 K-MEAN 算法聚类处理 数据输出ACCESS 数据库数据或图像