《Apriori算法实验报告及程序》由会员分享,可在线阅读,更多相关《Apriori算法实验报告及程序(31页珍藏版)》请在金锄头文库上搜索。
1、Apriori 算法实验报告计算机学院目录1 APRIORI 实验 11.1 实验背景 11.1.1 国内外研究概况 11.1.2 发展趋势 11.2 实验内容与要求 11.2.1 实验内容 11.2.2 实验要求 11.2.3 实验目的 22 APRIORI 算法分析与实验环境 32.1 APRIORI 算法的描述 32.2 APRIORI 算法的步骤 32.3 开发环境 32.3.1 软件环境 32.3.2 硬件环境 42.4 本章小结 43 算法的设计 53.1 APRIORI 算法整体框架 53.2 主要的数据结构与函数 53.2.1 数据结构 53.2.2 主要的程序 63.2.3
2、连接与剪枝操作 63.3 本章小结 64 数据库的设计与数据的来源 74.1 正确性验证数据 74.2 实验数据 74.3 本章小结 85 实验结果与性能分析 95.1 APRIORI 实验界面 95.2 实验的正确性验证 95.3 实验性能分析 105.3.1 固定最小支持度改变数据量 105.3.2固定数据量改变最小支持度 115.3.3实验结果分析 115.4 本章小结 126 总结与体会 131 Apriori 实验1.1 实验背景现在, 数据挖掘作为从数据中获取信息的有效方法, 越来越受到人们的重视。关联 规则挖掘首先是用来发现购物篮数据事务中各项之间的有趣联系。从那以后, 关联规则
3、 就成为数据挖掘的重要研究方向,它是要找出隐藏在数据间的相互关系。目前关联规则 挖掘的研究工作主要包括:Apriori算法的扩展、数量关联规则挖掘、关联规则增量式 更新、无须生成候选项目集的关联规则挖掘、最大频繁项目集挖掘、约束性关联规则挖 掘以及并行及分布关联规则挖掘算法等。关联规则的挖掘问题就是在事务数据库 D 中找 出具有用户给定的满足一定条件的最小支持度 Minsup 和最小置信度 Minconf 的关联规 则。1.1.1 国内外研究概况1993年,Agrawal等人首先提出关联规则概念,关联规则挖掘便迅速受到数据挖掘 领域专家的广泛关注迄今关联规则挖掘技术得到了较为深入的发展oApr
4、iori算法是关 联规则挖掘经典算法。针对该算法的缺点,许多学者提出了改进算法,主要有基于哈希 优化和基于事务压缩等。1.1.2 发展趋势关联规则挖掘作为数据挖掘的重要研究内容之一, 主要研究事务数据库、关系数据 库和其他信息存储中的大量数据项之间隐藏的、有趣的规律。关联规则挖掘最初仅限于 事务数据库的布尔型关联规则 , 近年来广泛应用于关系数据库 , 因此, 积极开展在关 系数据库中挖掘关联规则的相关研究具有重要的意义。近年来,已经有很多基于 Apriori 算法的改进和优化。研究者还对数据挖掘的理论进行了有益的探索,将概念格和粗糙集 应用于关联规则挖掘中,获得了显著的效果。到目前为止,关联
5、规则的挖掘已经取得了 令人瞩目的成绩,包括:单机环境下的关联规则挖掘算法;多值属性关联规则挖掘;关 联规则更新算法;基于约束条件的关联规则挖掘;关联规则并行及分布挖掘算法等。1.2 实验内容与要求1.2.1 实验内容编程实现Apriori算法:要求使用a,b,c,d,e,F,g,h,i,j10个项目随机产生 数据记录并存入数据库。从数据库读取记录进行 Apriori 实验,获得频繁集以及关联规 则,实现可视化。并用课堂上 PPT 的实例测试其正确性。1.2.2 实验要求1、程序结构:包括前台工具和数据库;2、设定项目种类为10个,随机产生事务,生成数据库;3、正确性验证(可用课堂上的例子);4
6、、算法效率的研究:在支持度固定数据量不同的时候测量运行时间;在数据量固 定,支持度不同的时候测量运行时间;5、注意界面的设计,输入最小支持度和最小可信度,能够输出并显示频繁项目集 以及关联规则。1.2.3 实验目的1、加强对 Apriori 算法的理解;2、锻炼分析问题、解决问题并动手实践的能力。2 Apriori 算法分析与实验环境2.1 Apriori 算法的描述Apriori算法是一种找频繁项目集的基本算法。其基本原理是逐层搜索的迭代:频 繁K项Lk集用于搜索频繁(K+1)项集Lk+1,如此下去,直到不能找到维度更高的频繁 项集为止。这种方法依赖连接和剪枝这两步来实现。算法的第一次遍历仅
7、仅计算每个项 目的具体值的数量,以确定大型l项集。随后的遍历,第k次遍历,包括两个阶段。首 先,使用在第(k-1 )次遍历中找到的大项集Lk-1和产生候选项集Ck。接着扫描数据库, 计算Ck中候选的支持度。用Hash树可以有效地确定Ck中包含在一个给定的事务t中 的候选。如果某项集满足最小支持度, 则称它为频繁项集。2.2 Apriori 算法的步骤步骤如下:1、设定最小支持度s和最小置信度c;2、Apriori算法使用候选项集。首先产生出候选的项的集合,即候选项集,若候选项 集的支持度大于或等于最小支持度,则该候选项集为频繁项集;3、在Apriori算法的过程中,首先从数据库读入所有的事务,
8、每个项都被看作候选 1-项集,得出各项的支持度,再使用频繁1-项集集合来产生候选2-项集集合,因为先验原 理保证所有非频繁的1-项集的超集都是非频繁的;4、再扫描数据库,得出候选2-项集集合,再找出频繁2-项集,并利用这些频繁2-项 集集合来产生候选3-项集;5、重复扫描数据库,与最小支持度比较,产生更高层次的频繁项集,再从该集合里产 生下一级候选项集,直到不再产生新的候选项集为止。2.3 开发环境2.3.1 软件环境(1) 编程软件:Jdk开发包+eclipse集成开发环境Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它 只是一个框架和一组服务,用于通过插件组
9、件构建开发环境。幸运的是,Eclipse附带 了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。(2) 数据库软件:SQL Server 2008SQL Server 2008在Microsoft的数据平台上发布,可以组织管理任何数据。可以 将结构化、半结构化和非结构化文档的数据直接存储到数据库中。可以对数据进行查询、 搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,从数据中心最大的 服务器一直到桌面计算机和移动设备,它都可以控制数据而不用管数据存储在哪里。(3) 办公软件:Excel 2010Excel是一款试算表办公软件。它是微软办公
10、套装软件office的重要的组成部分, 它是集统计分析、数据处理和辅助决策等功能于一身,现在金融、统计财经、管理等众 多领域广泛应用。本实验主要用来为固定数据量改变最小支持数以及固定最小支持数改 变数据量两种情况进行时间分析提供可视化图表。2.3.2硬件环境 装有Windows 7旗舰版电脑。2.4 本章小结本章的内容主要是为了引出本实验的主要算法以及对算法的实现环境做了介绍3 算法的设计3.1 Apriori算法整体框架图3.1 Apriori实验流程图3.2 主要的数据结构与函数3.2.1 数据结构class Transaction public int pid;public String
11、 itemset; 该类表示表中的一条记录。class Daopublic ArrayList Query(String sql)该类用于访问数据库操作。class Kfppublic char kfpstr=new charApriori.ITEMSIZE;public int index=-1;public int support=0;public boolean isfp=true;该类代表一个频繁项目。3.2.2 主要的程序Java 中最常用的集合类是 List 和 Map 。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操
12、作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 HashMap:Map 接口的常用实现类,系统 vkey,value当成一个整体进行处理,系统总是根据Hash算法来计算的存储 位置,这样可以保证能快速存、取Map的vkey,value对。ArrayListvTransaction alTransactions:保存表中的所有记录ArrayListvKfp alKfpsl:临时存储频繁项目的集合,存储连接后的结果ArrayListvKfpSureFpset:保存频繁 k 项集ArrayListvKfp SureFpsetPrio:保存频繁 k-1 项集ArrayListv
13、String notFpList:保存一定不是频繁项目的集合,用于剪枝 HashMapvString, IntegerKfpSuppor :频繁项目集及其对应的支持数 HashMapvString,Double guanlianguize:关联规则及其置信度3.2.3 连接与剪枝操作对于连接操作的两个字符串(长度为k),它们必须有k-1个相同的字符才能做连接操 作。例如:abc和abd可以连接成abed,abd和bcd可以连接成abcd,而abc和ade就不 可以做连接操作。整个连接过程类似归并排序中的归并操作对于任一频繁项目集的所有非空子集也必须是频繁的,反之,如果某个候选的非空 子集不是频
14、繁的,那么该候选集肯定不是频繁的,将其剪枝。3.3 本章小结本章主要介绍了算法设计的整体流程并且也对主要程序和操作作了简要的说明。4数据库的设计与数据的来源本实验的数据均存储于数据库中。数据库yuzm中共产生6张表。表test为测试用 表,用于程序的正确性验证。还有5张表存储随机产生的实验数据。其中数据库的结构 如下图所示。E 口站库奘案囹 日口表 口貳统表国 H dbo.datal O dbo.dsta2 dbc.dataS dbo.dsta4 O d bo. data 5() 口 dbo.te5.t0 口视圍e 口同交词图4.1数据库结构4.1正确性验证数据表test为PPT上的实例,用于
15、正确性验证。数据的item个数为5,其中的九行数据 均由SQL语句产生,表的每一行都是一个“0”“1”的字符串,字符串长度等于商品种 类,其中“0”表示该商品不存在,“1”表示该商品存在。表的全部数据如图4.2。iditemQ110012 1010301100411010Siaioo6 11007101JQ0S11101g11100707图 4.2 表 test4.2实验数据5张表是通过算法随机产生的具有不同数据量的数据集,假设商品种类为10种,表 的每一行都是一个“0”“1”的字符串,字符串长度等于商品种类,其中“0”表示该商 品不存在,“1”表示该商品存在。其中表data1共随机产生1万行数据,表data2产生5万行数据,表data3产生2