方1052数据仓库与数据挖掘 实验报告.docx
《方1052数据仓库与数据挖掘 实验报告.docx》由会员分享,可在线阅读,更多相关《方1052数据仓库与数据挖掘 实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
方1052数据仓库与数据挖掘实验报告
石家庄铁道大学四方学院
学生实验报告书
实验课程名称数据仓库与数据挖掘
学生专业班级方1052信管
学生学号
学生姓名
指导老师姓名刘桂贤
2013-2014学年第1学期
实验项目名称
数据仓库的设计、实现及多维分析
实验成绩
实验日期
2013年9月21日
第一部分:
实验分析与设计
一、实验内容描述
问题描述:
此实验为设计型实验,选择一种数据仓库管理系统,如SQLServerAnalysisManager进行数据仓库的设计、实现,并进行多维数据分析。
二、实验基本原理与设计
三、主要仪器设备及软件环境
Windowsxp
SQLServer2000
第二部分:
实验调试与结果分析
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
如何向多维数据集添加度量值:
度量值是要进行分析的数据库中的量化值。
常用的度量值为销售、成本和预算数据。
度量值根据多维数据集不同的维度类别进行分析。
1.在多维数据集向导的“欢迎”步骤,单击“下一步”按钮。
2.在“从数据源中选择事实数据表”步骤,展开“教程”数据源,然后单击“sales_fact_1998”。
3.单击“浏览数据”按钮可以查看“sales_fact_1998”表中的数据。
数据浏览完毕后,关闭“浏览数据”窗口,然后单击“下一步”按钮。
4.若要定义多维数据集的度量值,在“事实数据表数据列”下,双击“store_sales”。
对“store_cost”和“unit_sales”列重复此步骤,然后单击“下一步”按钮。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
运行结果为:
第一步,建立系统数据源连接
第二步,启动AnalysisManager
第三步,建立数据库和数据源
第四步建立多维数据集
1、如何建立时间维度
2、如何建立产品维度
3、如何建立客户维度
4、如何生成商店维度
5、完成多维数据集的生成
6、设计存储和处理多维数据集
7、浏览多维数据集数据
(1)使用多维数据集浏览器查看多维数据集数据
(2)替换网格中的维度
(3)按时间筛选数据
(4)深化
三、实验小结、建议及体会
基于“学生成绩分析”主题数据仓库多维模型的建立,能很好地满足高校老师和学生对学生成绩信息进行快速查询以及分析的需要,为更多其他主题数据仓库的建立奠定了基础。
然而各主题数据仓库的建立,只是一个开始,我们下一步工作将是在建立好的数据仓库基础上进行数据挖掘,进一步去发现隐藏在这些学生成绩信息数据中更加有用的知识、规律和模式,使之为学校学生成绩分析工作服务。
将数据仓库技术应用到学生信息管理中,使我了解了数据仓库的应用以及如何创建数据仓库。
实验项目名称
Apriori算法
实验成绩
实验日期
2013年9月28日
第一部分:
实验分析与设计
一、实验内容描述(问题域描述)
此实验为综合型实验,要求学生综合利用先修课程高级程序设计语言、数据库、算法设计与分析,与本门数据挖掘课程的知识,选择一种编程工具,如VisualC++,实现经典挖掘算法Apriori或算法k-Means。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。
算法基于这样的事实:
算法使用频繁项集性质的先验知识。
Apriori使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。
首先,找出频繁1-项集的集合。
该集合记作L1。
L1用于找频繁2-项集的集合L2,而L2用于找L3,如此下去,直到不能找到频繁k-项集。
找每个Lk需要一次数据库扫描。
为了提高频繁项目集逐层产生的效率,Apriori算法利用了两个重要的性质用于压缩搜索空间:
(l)若X是频繁项集,则x的所有子集都是频繁项集。
(2)若x是非频繁项集,则X的所有超集都是非频繁项集。
2.2算法描述:
算法:
Apriori算法,使用逐层迭代找出频繁项集。
输入:
事务数据库D;最小支持度阈值min_sup。
输出:
D中的频繁项集L。
1)L1=find_frequent_1_itemsets(D);
2)for(k=2;Lk-1≠;k++){
3)Ck=aproiri_gen(Lk-1,min_sup);
4)foreachtransactiontD{//scanDforcount
5)Ct=subset(Ck,t);//getsubsetsoftthatarecandidates
6)foreachcandidatecCt
7)c.count++;
8)}
9)Lk={cCk|c.count≥min_sup}
10)}
11)returnL=∪kLk;
从事务数据库D中挖掘出所有频繁项集。
支持度大于最小支持度min_sup的项集Itemset称为频集FrequentItemset。
首先需要挖掘出频繁1-项集;然后,继续采用递推的方式来挖掘频繁k-项集(k>1),具体做法是:
在挖掘出候选频繁k-项集(Ck)之后,根据最小置信度minSup来筛选,得到频繁k-项集。
最后合并全部的频繁k-项集(k>0)。
挖掘频繁项集的算法描述如下:
(1)L1=find_frequent_1-itemsets(D);//挖掘频繁1-项集,比较容易
(2)for(k=2;Lk-1≠Φ;k++){
(3)Ck=apriori_gen(Lk-1,min_sup);//调用apriori_gen方法生成候选频繁k-项集
(4)foreachtransactiont∈D{//扫描事务数据库D
(5)Ct=subset(Ck,t);
(6)foreachcandidatec∈Ct
(7)c.count++;//统计候选频繁k-项集的计数
(8)}
(9)Lk={c∈Ck|c.count≥min_sup}//满足最小支持度的k-项集即为频繁k-项集
(10)}
(11)returnL=∪kLk;//合并频繁k-项集(k>0)
基于第1步挖掘到的频繁项集,继续挖掘出全部的频繁关联规则。
置信度大于给定最小置信度minConf的关联规则称为频繁关联规则FrequentAssociationRule。
在这一步,首先需要从频繁项集入手,首先挖掘出全部的关联规则(或者称候选关联规则),然后根据minConf来得到频繁关联规则。
挖掘频繁关联规则的算法描述如下:
(1)初始状态:
L=∪kLk;AR=Φ;//L是频繁项集集合,AR是频繁关联规则集合
(2)forallλk(λk是L的元素,是一个k-频繁项集,大小为n){
(3)forallαk(αk是λk的非空真子集){
(4)if(αk→βm的置信度>=minConf){//这里,m+k=n,其中αk→βm是一个关联规则
(5)AR=AR∪(αk→βm);
(6)}
(7)}
(8)}
(9)returnAR;
三、主要仪器设备及软件环境
Windowsxp
C++6.0
第二部分:
实验调试与结果分析
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
TID
Items
T1
I1,I3,I4
T2
I2,I3,I5
T3
I1,I2,I3,I5
T4
I2,I5
首先统计出一维项目集,即:
C1.这里预定义最小支持度minsupport=2,侯选项目集中满足最小支持度要求的项目集组合成最大的1-itemsets.为生成最大的2-itemsets,使用了sc_candidate函数中join步,即:
L1joinL1,并通过prune步删除那些C2的那些子集不在L1中的项目集.生成了侯选项目集C2.搜索D中4个事务,统计C2中每个侯选项目集的支持度.然后和最小支持度比较,生成L2.侯选项目集C3是由L2生成.要求自连接的两个最大2-itemsets中,第一个项目相同,在L2中满足该条件的有{I2,I3},{I2,I5}.这两个集合经过join步后,产生集合{I2,I3,I5}.在prune步中,测试{I2,I3,I5}的子集{I3,I5},{I2,I3},{I2,I5}是否在L2中,由L2可以知道{I3,I5},{I2,I3},{I2,I5}本身就是最大2-itemsets.即{I2,I3,I5}的子集都是最大项目集.那么{I2,I3,I5}为侯选3-itemset.然后搜索数据库中所有事务记录,生成最大的3-tiemsetsL3.此时,从L3中不能再生成侯选4-itemset.Apriori算法结束.
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
先输入数据集的各项数据,运行结果为:
三、实验小结、建议及体会
通过实验,我了解了Apriori算法的基本思想和编程方法,但是在编写的过程中发现了问题,就是Apriori算法效率不是很高,在每一步产生侯选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;每次计算项集的支持度时,都对数据库D中的全部记录进行了一遍扫描比较,如果是一个大型的数据库的话,这种扫描比较会大大增加计算机系统的I/O开销。
而这种代价是随着数据库的记录的增加呈现出几何级数的增加。