当前位置:文档之家› 数据挖掘报告(模板)

数据挖掘报告(模板)

第一章:数据挖掘基本理论数据挖掘的产生:随着计算机硬件和软件的飞速发展,尤其是数据库技术与应用的日益普及,人们面临着快速扩张的数据海洋,如何有效利用这一丰富数据海洋的宝藏为人类服务业已成为广大信息技术工作者的所重点关注的焦点之一。

与日趋成熟的数据管理技术与软件工具相比,人们所依赖的数据分析工具功能,却无法有效地为决策者提供其决策支持所需要的相关知识,从而形成了一种独特的现象“丰富的数据,贫乏的知识”。

为有效解决这一问题,自二十世纪90年代开始,数据挖掘技术逐步发展起来,数据挖掘技术的迅速发展,得益于目前全世界所拥有的巨大数据资源以及对将这些数据资源转换为信息和知识资源的巨大需求,对信息和知识的需求来自各行各业,从商业管理、生产控制、市场分析到工程设计、科学探索等。

数据挖掘可以视为是数据管理与分析技术的自然进化产物。

自六十年代开始,数据库及信息技术就逐步从基本的文件处理系统发展为更复杂功能更强大的数据库系统;七十年代的数据库系统的研究与发展,最终导致了关系数据库系统、数据建模工具、索引与数据组织技术的迅速发展,这时用户获得了更方便灵活的数据存取语言和界面;此外在线事务处理手段的出现也极大地推动了关系数据库技术的应用普及,尤其是在大数据量存储、检索和管理的实际应用领域。

自八十年代中期开始,关系数据库技术被普遍采用,新一轮研究与开发新型与强大的数据库系统悄然兴起,并提出了许多先进的数据模型:扩展关系模型、面向对象模型、演绎模型等;以及应用数据库系统:空间数据库、时序数据库、多媒体数据库等;日前异构数据库系统和基于互联网的全球信息系统也已开始出现并在信息工业中开始扮演重要角色。

被收集并存储在众多数据库中且正在快速增长的庞大数据,已远远超过人类的处理和分析理解能力(在不借助功能强大的工具情况下),这样存储在数据库中的数据就成为“数据坟墓”,即这些数据极少被访问,结果许多重要的决策不是基于这些基础数据而是依赖决策者的直觉而制定的,其中的原因很简单,这些决策的制定者没有合适的工具帮助其从数据中抽取出所需的信息知识。

而数据挖掘工具可以帮助从大量数据中发现所存在的特定模式规律,从而可以为商业活动、科学探索和医学研究等诸多领域提供所必需的信息知识。

数据与信息知识之间的巨大差距迫切需要系统地开发数据挖掘工具,来帮助实现将“数据坟墓”中的数据转化为知识财富。

数据挖掘的概念:数据挖掘,在人工智能领域,习惯上又称为数据库中知识发现(Knowledge Discovery in Database, KDD),也有人把数据挖掘视为数据库中知识发现过程的一个基本步骤。

知识发现过程以下三个阶段组成:(1)数据准备,(2)数据挖掘,(3)结果表达和解释。

数据挖掘可以与用户或知识库交互。

并非所有的信息发现任务都被视为数据挖掘。

例如,使用数据库管理系统查找个别的记录,或通过因特网的搜索引擎查找特定的Web页面,则是信息检索(information retrieval)领域的任务。

虽然这些任务是重要的,可能涉及使用复杂的算法和数据结构,但是它们主要依赖传统的计算机科学技术和数据的明显特征来创建索引结构,从而有效地组织和检索信息。

尽管如此,数据挖掘技术也已用来增强信息检索系统的能力。

数据挖掘的步骤:1.确定挖掘对象:定义清晰的挖掘对象,认清数据挖掘的目标是数据挖掘的第一步。

数据挖掘的最后结果往往是不可预测的,但是要解决的问题应该是有预见性的、有目标的。

在数据挖掘的第一步中,有时还需要用户提供一些先验知识。

这些先验知识可能是用户的业务领域知识或是以前数据挖掘所得到的初步成果。

这就意味着数据挖掘是一个过程,在挖掘过程中可能会提出新的问题;可能会尝试用其他的方法来检验数据,在数据的子集上展开研究。

2.数据收集:数据是挖掘知识最原始的资料。

“垃圾进,垃圾出”,只有从正确的数据中才能挖掘到有用的知识。

为特定问题选择数据需要领域专家参加。

因此,领域问题的数据收集好之后,和目标信息相关的属性也选择好了。

3.数据预处理:数据选择好以后,就需要对数据进行预处理。

数据预处理包括:去除错误数据和数据转换。

错误数据,在统计学中称为异常值,应该在此阶段发现并且删除。

否则,它们将导致产生错误的挖掘结果。

同时,需要将数据转换成合适的形式。

例如,在某些情况下,将数据转换成向量形式。

另外,为了寻找更多重要的特征和减少数据挖掘步骤的负担,我们可以将数据从一个高维空间转换到一个低维空间。

4.数据挖掘:数据挖掘步骤主要是根据数据建立模型。

我们可以在这个步骤使用各种数据挖掘算法和技术。

然而,对于特定的任务,需要选择正确合适的算法,来解决相应的问题。

5.信息解释:首先,通过数据挖掘技术发现的知识需要专家对其进行解释,帮助解决实际问题。

然后,根据可用性、正确性、可理解性等评价指标对解释的结果进行评估。

只有经过这一步骤的过滤,数据挖掘的结果才能够被应用于实践。

6.可视化:可视化技术主要用来通过图形化的方式显示数据和数据挖掘的结果,从而帮助用户更好的发现隐藏在数据之后的知识。

它可以被应用在数据挖掘的整个过程,包括数据预处理、数据挖掘和信息解释。

数据和信息的可视化显示对用户来说非常重要,因为它能够增强可理解性和可用性。

第二章:系统分析系统用户分析:系统功能分析:系统算法分析:第三章:数据管理数据管理的方法:数据管理的具体实现:第四章:数据采集数据采集的方法数据收集:数据是挖掘知识最原始的资料。

“垃圾进,垃圾出”,只有从正确的数据中才能挖掘到有用的知识。

为特定问题选择数据需要领域专家参加。

因此,领域问题的数据收集好之后,和目标信息相关的属性也选择好了。

数据采集的具体实现过程第五章:数据预处理数据预处理的方法:数据预处理:数据选择好以后,就需要对数据进行预处理。

数据预处理包括:去除错误数据和数据转换。

错误数据,在统计学中称为异常值,应该在此阶段发现并且删除。

否则,它们将导致产生错误的挖掘结果。

同时,需要将数据转换成合适的形式。

例如,在某些情况下,将数据转换成向量形式。

另外,为了寻找更多重要的特征和减少数据挖掘步骤的负担,我们可以将数据从一个高维空间转换到一个低维空间。

数据预处理的具体实现过程:第六章:数据挖掘算法描述与流程图数据结构的设计算法的具体实现Apriori 算法:static List <ItemSet > Apriori(ArrayList D, ArrayList I, float sup)//传进的参数D 为事务数据集,I 为频繁一项集,sup 为支持度阈值{List <ItemSet > L = new List <ItemSet >();//所有频繁项集 if (I.Count == 0) return L;else{int [] Icount = new int [I.Count];//初始项集计数器,初始化为0 ArrayList Ifrequent = new ArrayList ();//初始项集中的频繁项集 //遍历事务数据集,对项集进行计数Regex r = new Regex (",");//正则表达式for (int i = 0; i < D.Count; i++){string [] subD = r.Split(D[i].ToString()); for (int j = 0; j < I.Count; j++){string[] subI = r.Split(I[j].ToString());bool subIInsubD = true;for (int m = 0; m < subI.Length; m++)//频繁项集 {bool subImInsubD = false;for (int n = 0; n < subD.Length; n++)//事物数据集if (subI[m] == subD[n]){subImInsubD = true;continue;}if(subImInsubD == false) subIInsubD = false; }if (subIInsubD == true){//int s = Icount[j];Icount[j]++;//支持频度+1//int t = Icount[j];//float confi = s / t;//ItemSet.confi = confi;}}}//从初始项集中将支持度大于给定值的项转到L中for (int i = 0; i < Icount.Length; i++){if (Icount[i] >= sup * D.Count)//判断支持度是否大于给定值,并且置信度大于给定值&&ItemSet.confi>=ItemSet.confidence*0.01 {Ifrequent.Add(I[i]);ItemSet iSet = new ItemSet();iSet.Items = I[i].ToString();iSet.Sup = Icount[i];L.Add(iSet);}}I.Clear();I = AprioriGen(Ifrequent);//将频繁项集作为参数传给AprioriGen生成新的候选项集L.AddRange(Apriori(D, I, sup));return L;}}Apriori—Gen方法:static ArrayList AprioriGen(ArrayList L){ArrayList Lk = new ArrayList();Regex r = new Regex(",");for (int i = 0; i < L.Count; i++){string[] subL1 = r.Split(L[i].ToString());for (int j = i + 1; j < L.Count; j++){string[] subL2 = r.Split(L[j].ToString());//比较L中的两个项集将它们的并集暂存于temp中string temp = L[j].ToString();//存储两个项集的并集for (int m = 0; m < subL1.Length; m++){bool subL1mInsubL2 = false;for (int n = 0; n < subL2.Length; n++){if(subL1[m] == subL2[n]) subL1mInsubL2 = true; }if(subL1mInsubL2 == false) temp = temp + ","+ subL1[m]; }//当temp包含的项为(L中项集的大小)+1并且所求候选项集中没有与temp一样的项集string[] subTemp = r.Split(temp);if (subTemp.Length == subL1.Length + 1){bool isExists = false;for (int m = 0; m < Lk.Count; m++){bool isContained = true;for (int n = 0; n < subTemp.Length; n++) {if(!Lk[m].ToString().Contains(subTemp[n])) isContained = false;}if (isContained == true) isExists = true; }if (isExists == false) Lk.Add(temp);}}}return Lk;}第七章:结果显示与解释评估参数设置:在程序开始计算之前,需要输入两个参数:最小支持度阈值与最小置信度阈值。

相关主题