课程设计高级数据库技术数据挖掘.docx
- 文档编号:10814181
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:28
- 大小:262.66KB
课程设计高级数据库技术数据挖掘.docx
《课程设计高级数据库技术数据挖掘.docx》由会员分享,可在线阅读,更多相关《课程设计高级数据库技术数据挖掘.docx(28页珍藏版)》请在冰豆网上搜索。
课程设计高级数据库技术数据挖掘
高级数据库技术
题目名称:
数据挖掘的相关算法研究
学院:
专业年级:
计
学生姓名:
班级学号:
指导教师:
二○○九年十二月
摘要
本论文主要讨论的是数据挖掘的相关算法研究,运用数据挖掘的相关技术,建立基于数据挖掘的数据模型,对数据仓库中的数据进行处理。
本文选取了四种数据挖掘算法,分别是:
粗糙集、关联规则、决策树、遗传算法,以上数据挖掘算法是比较基础的算法,这四种算法分别实现了四种不同的功能,本文会模拟一个数据库系统进行数据挖掘处理。
关键词:
数据挖掘;数据仓库;数据库系统
目录
摘要1
第1章绪论1
1.1引言1
1.2选题背景1
1.3选题意义1
1.4国内外发展动态1
第2章算法分析3
2.1数据挖掘的算法分析3
2.1.1数据挖掘技术背景3
2.1.2数据挖掘的任务3
2.1.3数据挖掘的模式3
2.2数据挖掘的算法研究4
2.2.1决策树算法4
2.2.2关联规则算法4
2.2.3粗糙集算法5
2.2.4遗传算法算法5
第3章算法的代码实现9
3.1决策树9
3.2关联规则12
3.3粗糙集17
3.4遗传算法18
参考文献21
第1章绪论
1.1引言
数据挖掘是20世纪90年代中期兴起的一项新技术,它是知识发现过程中的关键步骤,也被称为数据库中的知识发现或KDD的同义词。
所谓数据挖掘,就是从数据库中抽取隐含的、未知的、具有潜在应用价值的信息的过程。
经过十几年的研究和实践,数据挖掘技术已经吸收了许多学科的最新研究成果而形成独具特色的研究分支。
勿庸置疑,数据挖掘研究和应用具有很大的挑战性。
1.2选题背景
面对当今社会信息化数据的迅速增长,“数据的爆长性增长与知识的相对贫乏”已成为现在人类最大的问题,人类分析数据和从中提取有用信息的能力已远远不能满足实际需要,所以我们要用数据挖掘技术来解决这些问题。
1.3选题意义
数据挖掘技术在科学研究方面具有重大意义,如在信息量极大的生物技术、天文、气象等领域,靠传统的数据分析方法对这些大量实验和海量观察数据进行研究无法取得很好效果,若借助数据挖掘技术分析海量数据,可以大幅度提高发现知识的效率。
目前在一些应用领域,数据挖掘技术已经取得很好的效果。
1.4国内外发展动态
1989年8月在美国底特律召开的第11届国际人工智能会议上首先出现KDD术语,随后引起国际人工智能和数据库等领域专家的广泛关注。
1995年在加拿大蒙特利尔召开了首届KDD&DataMining国际学术会议,从此以后KDD&DataMining国际学术会议每年召开一次,经过十来年的努力,数据挖掘技术的研究已经取得了丰硕的成果,不少软件公司研制出数据挖掘软件产品,并在北美、欧洲等国家得到应用。
如IBM公司开发的QUEST,AngossSoftware开发的基于规则和决策树的KnowledgeSeeker,加拿大SimonFraser大学开发的DBMinner等。
我国数据挖掘技术的研究也引起了学术界的高度重视,成为信息科学界的热点课题。
国内许多科研单位和高等院校竞相开展知识发现的基础理论及其应用研究,北京大学现在正开展对数据立方体代数的研究,复旦、浙大、中科大、吉大、中科院数学研究所等单位开展了对关联规则开采算法的优化和改造,南京大学、四川联大和上海交大等单位研究了非结构化数据的知识发现以及Web数据挖掘等。
传统企业基于4P(product产品,place渠道,price价格,promotion促销)的竞争模式已逐渐被基于客户关系的经营理念所取代,未来市场的竞争已演变成为服务手段的竞争,建立和发展长期的客户关系是企业成功的关键,因此在客户关系管理中运用数据挖掘与其相关的技术已成为企业赢得核心竞争优势的重要手段。
它是强调以“客户关系一对一理论”为基础,旨在改善企业与客户之间的新型管理机制,同时也是包括一个组织机构判断、选择、争取、发展和保持客户所要实施的全部商业过程。
提供恰当的服务要求商家同客户进行多种交互,了解客户需求,投其所好,并把不相关的商品的数目降到最少。
给合适的人意味着客户的需求各不相同。
交互活动要在一个高度细化的市场上进行,以满足不同的需要。
要在正确的时间是因为同客户的交互是一个连续的过程。
最后,通过正确的渠道是因为商家可以通过各种途径(如邮寄、Email、电话购物等)与客户交互。
对于不同的客户,商家必须保持选择最有效的方式,这样才有助于客户交互。
第2章算法分析
2.1数据挖掘的算法分析
随着信息技术的迅猛发展,人们拥有的数据信息急剧增大。
面对庞大的数据信息,传统数据分析方法已经无法满足人们的需求,例如传统的统计方法,它只能获得数据表面信息,很难进行深层次的处理,不能获得数据属性间的内在关系和隐含信息,因此无法获得重要的有价值的知识。
这就需要开发新的技术来智能地和自动地分析海量原始数据,以使数据得到充分利用。
这就是数据挖掘计算产生的需求背景。
2.1.1数据挖掘技术背景
1.数据挖掘技术包括三个主要部分:
算法和技术;数据;建模能力。
2.数据挖掘和机器学习(MachineLearning)。
机器学习是计算机科学和人工智能AI发展的产物。
机器学习分为两种学习方式:
自组织学习(如神经网络),以及从例子中归纳出规则(如决策树)。
数据挖掘是八十年代投资AI研究项目失败后,AI转入实际应用时提出的。
它是一个新兴的,面向商业应用的AI研究。
选择数据挖掘这一术语,表明了与统计、精算、长期从事预言模型的经济学家之间没有技术的重叠。
3.数据挖掘和统计
统计也开始支持数据挖掘。
统计本包括预言算法、抽样、基于经验的设计等。
4.数据挖掘和决策支持系统
数据仓库OLAP(联机分析处理)、DataMart(数据集市)、多维数据库决策支持工具融合将数据仓库、OLAP与数据挖掘融合在一起,构成企业决策分析环境。
2.1.2数据挖掘的任务
数据挖掘的任务是从数据中发现模式。
模式是一个用语言L来表示的一个表达式E,它可用来描述数据集F中数据的特性,E所描述的数据是集合F的一个子集FE。
E作为一个模式要求它比列举数据子集FE中所有元素的描述方法简单。
例如,“如果成绩在81~90之间,则成绩优良”可称为一个模式,而“如果成绩为81、82、83、84、85、86、87、88、89或90,则“成绩优良”就不能称之为一个模式。
2.1.3数据挖掘的模式
模式有很多种,按功能可分有两大类:
预测型(Predictive)模式和描述型(Descriptive)模式。
1.预测型模式是可以根据数据项的值精确确定某种结果的模式。
挖掘预测型模式所使用的数据也都是可以明确知道结果的。
例如,根据各种动物的资料,可以建立这样的模式:
凡是胎生的动物都是哺乳类动物。
当有新的动物资料时,就可以根据这个模式判别此动物是否是哺乳动物。
2.描述型模式是对数据中存在的规则做一种描述,或者根据数据的相似性把数据分组。
描述型模式不能直接用于预测。
例如,在地球上,70%的表面被水覆盖,30%是土地。
2.2数据挖掘的算法研究
经过上文对数据挖掘的分析,本文选择以下四种数据挖掘算法进行研究:
2.2.1决策树算法
数据挖掘是知识发现(KDD)的核心环节,其主要任务有分类、聚类、回归分析、概括等。
分类是其中的一个重要起点,它的目的是构造一个分类函数或分类模型,该模型能把数据库中的数据项映射到给定类别中的某一个。
其方法有决策树,神经网络,统计学,粗糙集和遗传算法。
决策树算法实现的是将数据资料依据某种原则进行分类,使其可以归属于某种模式,以便于聚类组合。
其算法具有速度快、精度高、生成的模式简单等优点。
决策树算法首先对数据进行采集,根据第一原则进行数据分类,然后判断类别数目是否为2。
如果类别数为2,则数据处理完毕;如果类别数不为2,则对于每个类别下的数据根据第二原则进行数据分类,直到分类后的类目数为2。
该算法流程图如2-1所示:
2.2.2关联规则算法
关联规则挖掘较早提出于超市购物篮的分析,是数据挖掘领域里最为活跃的研究方向之一。
它主要用来分析数据库中不同属性间有价值的相互依存关系,其目的就是在海量数据集中发现数据项集之间的有趣联系。
本系统采用了AIS分层搜索算法,该算法可以不仅可以体现关联规则的精髓,而且方便对数据进行统计。
在扫描数据库的过程中,该算法同时产生候选数据项集并对其进行计数,当读取一天记录后,算法从记录中寻找是否有前一条搜索后生成的频繁数据项集,所有这样的频繁数据项集和该记录中的其他数据项通过扩展操作形成新的候选数据项集。
AIS分层搜索算法可以通过以下几个步骤实现:
(1)生成1维频繁数据项集;
(2)形成边界集Lt;
(3)生成候选数据项集;
(4)统计候选数据项集合的支持度;
(5)产生K维频繁数据项;
(6)产生所有频繁数据项。
2.2.3粗糙集算法
粗糙集理论是一种描述不完整性和不确定性的数学理论,它从新的角度对知识进行定义,把知识看作是关于论域的划分,从而认为知识是有粒度的。
在粗糙集理论中,知识被认为是一种将对象进行分类的能力。
此分类不同于决策树的分类,决策树的分类是百分之百的肯定结果,而粗糙集的分类并不是一个十分肯定的结果,其准确性在于条件属性的数量,条件属性越多,结果越精确,反之越模糊。
粗糙集就是根据数据库中的每个数据项的属性,进行分析,然后对决策属性做出模拟估计,为使用者提供一个参考数据。
该算法流程图如2-2所示:
2.2.4遗传算法算法
遗传算法是一种基于生物自然选择与遗传机理的随机搜索算法,其基本思想是基于达尔文的进化论和孟德尔遗传学说。
与传统搜索算法不同,遗传算法从一组随机产生的初始解(称为种群),开始搜索过程。
种群中的每个个体是问题的一个解,称为染色体,染色体是一串符号,可以用二进制字符串表示。
这些染色体在后续迭代中不断进化,称为遗传。
在每一代中用适应度来衡量染色体的好坏,生成下一代染色体称为后代。
根据适应度的大小选择部分后代,淘汰部分后代,从而保持种群大小是常数,适应度高的染色体被选中的概率就比较高。
这样,经过若干代之后,算法收敛于最好的染色体,它很可能就是问题的最优解或次优解。
遗传算法的特点:
使用参数的编码集,而不是参数本身进行工作,它是在点群中而不是一个单点中进行寻优;遗传算法仅使用问题本身所具备的目标函数进行工作,而不需要其他任何先决条件和辅助信息;它使用的转换规则不是确定性规则。
遗传算法的算法流程图如2-3所示:
图2-1决策树算法流程图
图2-2粗糙集算法流程图
图2-3遗传算法的算法流程图
第3章算法的代码实现
经过对数据挖掘算法的研究,便可以对各算法进行代码编写,由于现成的数据库可以程序实现,本文只用c语言作为模拟语言编写。
3.1决策树
#include"defns.i"
#include"types.i
shortMaxAtt,MaxClass,MaxDiscrVal=2;
ItemNoMaxItem;
Description*Item;
DiscrValue*MaxAttVal;
char*SpecialStatus;
String*ClassName,
*AttName,
**AttValName,
FileName="DF";
shortVERBOSITY=0,
TRIALS=10;
BooleanGAINRATIO=true,
SUBSET=false,
BATCH=true,
UNSEENS=false,
PROBTHRESH=false;
ItemNoMINOBJS=2,
WINDOW=0,
INCREMENT=0;
floatCF=0.25;
Tree*Pruned;
BooleanAllKnown=true;
main(Argc,Argv)
intArgc;
char*Argv[];
{
into;
externchar*optarg;
externintoptind;
BooleanFirstTime=true;
shortBest,BestTree();
PrintHeader("decisiontreegenerator");
/*Processoptions*/
while((o=getopt(Argc,Argv,"f:
bupv:
t:
w:
i:
gsm:
c:
"))!
=EOF)
{
if(FirstTime)
{
printf("\nOptions:
\n");
FirstTime=false;
}
switch(o)
{
case'f':
FileName=optarg;
printf("\tFilestem<%s>\n",FileName);
break;
case'b':
BATCH=true;
printf("\tWindowingdisabled(nowthedefault)\n");
break;
case'u':
UNSEENS=true;
printf("\tTreesevaluatedonunseencases\n");
break;
case'p':
PROBTHRESH=true;
printf("\tProbabilitythresholdsused\n");
break;
case'v':
VERBOSITY=atoi(optarg);
printf("\tVerbositylevel%d\n",VERBOSITY);
break;
case't':
TRIALS=atoi(optarg);
printf("\tWindowingenabledwith%dtrials\n",TRIALS);
Check(TRIALS,1,10000);
BATCH=false;
break;
case'w':
WINDOW=atoi(optarg);
printf("\tInitialwindowsizeof%ditems\n",WINDOW);
Check(WINDOW,1,1000000);
BATCH=false;
break;
case'i':
INCREMENT=atoi(optarg);
printf("\tMaximumwindowincrementof%ditems\n",
INCREMENT);
Check(INCREMENT,1,1000000);
BATCH=false;
break;
case'g':
GAINRATIO=false;
printf("\tGaincriterionused\n");
break;
case's':
SUBSET=true;
printf("\tTestsondiscreteattributegroups\n");
break;
case'm':
MINOBJS=atoi(optarg);
printf("\tSensibletestrequires2brancheswith>=%dcases\n",
MINOBJS);
Check(MINOBJS,1,1000000);
break;
case'c':
CF=atof(optarg);
printf("\tPruningconfidencelevel%g%%\n",CF);
Check(CF,Epsilon,100);
CF/=100;
break;
case'?
':
printf("unrecognisedoption\n");
exit
(1);
}
}
/*Initialise*/
GetNames();
GetData(".data");
printf("\nRead%dcases(%dattributes)from%s.data\n",
MaxItem+1,MaxAtt+1,FileName);
/*Builddecisiontrees*/
if(BATCH)
{
TRIALS=1;
OneTree();
Best=0;
}
else
{
Best=BestTree();
}
/*Softenthresholdsinbesttree*/
if(PROBTHRESH)
{
printf("Softeningthresholds");
if(!
BATCH)printf("forbesttreefromtrial%d",Best);
printf("\n");
SoftenThresh(Pruned[Best]);
printf("\n");
PrintTree(Pruned[Best]);
}
/*Savebesttree*/
if(BATCH||TRIALS==1)
{
printf("\nTreesaved\n");
}
else
{
printf("\nBesttreefromtrial%dsaved\n",Best);
}
SaveTree(Pruned[Best],".tree");
/*Evaluation*/
printf("\n\nEvaluationontrainingdata(%ditems):
\n",MaxItem+1);
Evaluate(false,Best);
if(UNSEENS)
{
GetData(".test");
printf("\nEvaluationontestdata(%ditems):
\n",MaxItem+1);
Evaluate(true,Best);
}
exit(0);
}
3.2关联规则
#include
#include
#include
#include
#include
usingnamespacestd;
#defineMAX10
#defineSUPP3
#defineCONF3
#defineDEBUGtrue
structRecord{
intid;
charname[100][64];
intcount;//该纪录买的商品数
};
structProduct{
charname[64];
intappearTime;
};
structItemset{
charname[10][32];
intcount;
};
RecordmyRecord[MAX];
ProductmyProduct[MAX];
ItemsetmyItem[MAX],cItemset[MAX];
intrecordindex=0,productindex=0,Itemsetindex=0,step=1;
FILE*fpout,*fpin,*fpdebug;
voidReadData()
{
charline[1024],name[64];
inti,j,n;
boolflag=true;
while(fgets(line,1024,fpin)!
=NULL)
{
n=0;
j=0;
for(i=0;i { if(line[i]! ='') { name[j]=line[i]; j++; i++; } else { if(j>0) { name[j]='\0'; strcpy(myRecord[recordindex].name[n],name); j=0; n++; } while(line[i]=='') i++; } } name[j]='\0'; strcpy(myRecord[recordindex].name[n],name); n++; myRecord[recordindex].count=n; recordindex++; } } boolproductcmp(structProduct&a,structProduct&b) { if(strcmp(a.name,b.name)<0) returntrue; elsereturnfalse; } voidProductRegister() { inti,j,k; boolflag=false; for(i=0;i { for(j=0;j { flag=false; for(k=0;k { if(strcmp(myProduct[k].name,myRecord[i].name[j])==0) { myProduct[k].appearTime++; flag=true; break; } } if(flag==false) { strcpy(myProduct[productindex].name,myRecord[i].name[j]); myProduct[productindex].appearTime++; productindex++; } } } sort(myProduct,myProduct+productindex,productcmp); } voidWriteOut() { inti,j; fprintf(fpdebug,"第%d项集\n",step); for(i=0;i { for(j=0;j fprintf(fpdebug,"%s",myItem[i].name[j]); fprintf(fpdebug,"\n"); } } voidFindL1() { inti,j; for(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 高级 数据库技术 数据 挖掘
![提示](https://static.bdocx.com/images/bang_tan.gif)