基于大数据的数据挖掘算法实现与应用毕业设计

发布时间:2017-07-29 09:42:54   来源:文档文库   
字号:

本科毕业设计(论文)

目基于大数据的数据挖掘算法实现与应用


毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

名:       日  期:       

指导教师签名:        日  期:       

使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:        日  期:       


学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名: 日期:

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期:

导师签名: 日期:


1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订


指导教师评阅书


评阅教师评阅书


教研室(或答辩小组)及教学系意见

摘要

近年来随着数据库和计算机网络的广泛应用,加上使用先进的自动数据生成和采集工具,人们所拥有的数据量急剧增加。数据迅速增加与数据分析方法滞后之间的矛盾越来越突出,人们也希望能够在对已有的大量数据分析的基础之上进行科学研究、商业决策或者企业管理,但是目前所拥有的数据分析工具很难对数据进行深层次的处理,使得人民只能望数兴叹。数据挖掘正是为了解决传统分析方法的不足,并针对大规模数据的分析处理而出现的,数据挖掘从大量的数据中提取出隐藏在数据之后的有用的信息,它越来越多的领域所采用,并取得了较好的效果,为人们的正确决策提供了很大帮助。

本文主要对数据挖掘的有关算法进行学习与应用。首先介绍了这些算法的基本思想与计算步骤,然后运用这些算法进行实际问题的求解。本文着重介绍的是关联规则的Apriori算法和神经网络中的BP算法。对Apriori算法,用其对当下高等学校排课的问题进行求解;对BP算法,则是用其解决了一个在政府投资项目的投资估算的问题。并对计算结果进行了分析比较。

关键词: 数据挖掘,Apriori算法,BP神经网络算法

Abstract

In recent years, with extensive use of databases and computer networks, coupled with the use of advanced automatic data generation and collection tools, a sharp increase in the amount of data that people have. Scientific research, business decisions or enterprise management data increase rapidly and data analysis method of the lag between the contradictions are becoming increasingly prominent, people also hope that in the analysis of the existing large amounts of data can be the basis of, but is currently owned by data analysis tool is difficult to the data were deep, making people have only a few look helplessly. Data mining is to solve the problem of the conventional method of analysis, and for large-scale data analysis and processing of data mining from large amounts of data to extract useful information hidden in the data, adopted by more and more areas and achieved good results, and provide a big help for people to make a correct decision.

This paper focuses on the relevant algorithms of data mining, and simply introduces these algorithms, and uses these algorithms to solve real problem. This paper mainly introduces the Apriori algorithm and BP algorithm in neural network.. In the Apriori algorithm, using the Apriori algorithm to solve the current higher school timetabling problem; BP algorithm is introduced, with its solves the A in government investment project investment estimation problem.

Keyword Data Mining; Apriori Algorithm; BP Algorithm in Neural Network

1 绪论 1

1.1 研究背景与意义 1

1.2 应用领域 2

1.3本文的主要工作 4

2 关联规则与Apriori算法 4

2.1基础理论 4

2.2 Apriori算法在学生成绩中的应用 9

2.3 Apriori算法在遥感数据挖掘中的应用 19

3 BP神经网络 22

3.1 基础理论 22

3.2 BP网络和BP算法 26

3.3 案例分析 28

参考文献 34

35

附录一 英文原文 36

附录二 中文译文 40

附录三 程序代码 43


1 绪论

1.1 研究背景与意义

就目前而言,关联规则挖掘技术已经被广泛应用在西方金融行业企业中,它可以成功预测银行客户需求。一旦获得了这些信息,银行就可以改善自身营销。现在银行天天都在开发新的沟通客户的方法。各银行在自己的ATM机上就捆绑了顾客可能感兴趣的本行产品信息,供使用本行ATM机的用户了解。如果数据库中显示,某个高信用限额的客户更换了地址,这个客户很有可能新近购买了一栋更大的住宅,因此会有可能需要更高信用限额,更高端的新信用卡,或者需要一个住房改善贷款,这些产品都可以通过信用卡账单邮寄给客户。当客户打电话咨询的时候,数据库可以有力地帮助电话销售代表。销售代表的电脑屏幕上可以显示出客户的特点,同时也可以显示出顾客会对什么产品感兴趣。

同时,一些知名的电子商务站点也从强大的关联规则挖掘中的受益。这些电子购物网站使用关联规则中规则进行挖掘,然后设置用户有意要一起购买的捆绑包。也有一些购物网站使用它们设置相应的交叉销售,也就是购买某种商品的顾客会看到相关的另外一种商品的广告。

但是目前在我国,“数据海量,信息缺乏”是商业银行在数据大集中之后普遍所面对的尴尬。目前金融业实施的大多数数据库只能实现数据的录入、查询、统计等较低层次的功能,却无法发现数据中存在的各种有用的信息,譬如对这些数据进行分析,发现其数据模式及特征,然后可能发现某个客户、消费群体或组织的金融和商业兴趣,并可观察金融市场的变化趋势。可以说,关联规则挖掘的技术在我国的研究与应用并不是很广泛深入。

近年来,电信业从单纯的语音服务演变为提供多种服务的综合信息服务商。随着网络技术和电信业务的发展,电信市场竞争也日趋激烈,电信业务的发展提出了对数据挖掘技术的迫切需求,以便帮助理解商业行为,识别电信模式,捕捉盗用行为,更好地利用资源,提高服务质量并增强自身的竞争力。下面运用一些简单的实例说明如何在电信行业使用数据挖掘技术。可以使用上面提到的K 均值、EM 等聚类算法,针对运营商积累的大量用户消费数据建立客户分群模型,通过客户分群模型对客户进行细分,找出有相同特征的目标客户群,然后有针对性地进行营销。而且,聚类算法也可以实现离群点检测,即在对用户消费数据进行聚类的过程中,发现一些用户的异常消费行为,据此判断这些用户是否存在欺诈行为,决定是否采取防范措施。可以使用上面提到的C4.5SVM 和贝叶斯等分类算法,针对用户的行为数据,对用户进行信用等级评定,对于信用等级好的客户可以给予某些优惠服务等,对于信用等级差的用户不能享受促销等优惠。可以使用预测相关的算法,对电信客户的网络使用和客户投诉数据进行建模,建立预测模型,预测大客户离网风险,采取激励和挽留措施防止客户流失。可以使用相关分析找出选择了多个套餐的客户在套餐组合中的潜在规律,哪些套餐容易被客户同时选取,例如,选择了流量套餐的客户中大部分选择了彩铃业务,然后基于相关性的法则,对选择流量但是没有选择彩铃的客户进行交叉营销,向他们推销彩铃业务。

目前数据挖掘的应用领域包括以下八个方面,而每个领域又都有自己的应用领域和庇用背景。 

    (1)金融。金融事务需要收集和处理大量的数据,通过对这些数据进行分析,发现其数据模式及特乱E,然后可能发现某个客户、消费群体或组织的金融和商业兴趣,也可观察金融fH场的变化趋势。数据挖掘在金融领域的应用广泛,包括数据清理、金融市场分析预测、帐户分类、信用评估等。 

    (2)医疗保健。医疗保健业有大鼍的数据需要处理.但这个行业的数据不同的信息管理系统管理,数据以不同的格式保存,从总体看,数据是无组织的。在这个行业中,数据挖掘的关键任务是进行数据清理、预测医疗保健的费崩。例如GTE实验室开发,它能进行多维分析,用了:分析GTE的医疗保健数据,对比数据和预测数据,在定量范围内解释偏差,生成超文本报表。 

    (3)市场业。市场业应用数据挖掘技术进行市场定位、消费者分析、辅助制定市场营销策略等。 

  (4)零售业。零售业是最早运用数据挖掘技术的行业。目前,主要运用于销售预测、库存需求、零售点的选择、价格分析等。 

    (5)制造业。制造业应用数据挖掘技术进行零部件故障诊断、资源优化、生产过程分析等。 

    (6)司法。数据挖掘也可应用于案件调杏、诈骗检测、犯罪行为分析等方面,这些都可以给司法T.作带来巨大的利益。 

    (7)工程和科学。存信息量极为庞大的天文、气象、生物技术等领域中,所获得的大量实验和观察数据靠传统的数据分析t具难以应付,因此,x寸功能强大的智能化自动分析上具要求迫切,这种需求推动r DM技术在科学研究领域的应用发展,目前L三获得了一些重要的研究成果,例如:Jetpr opulsion实验室利用决策树方法对上百万天体数据进行分析,帮助天文学家发现16个星的星体,效果要比人丁更快,更准确。 

(8)保险业。对受险人员的分类将有助于确定适当的保险金额度。通过数据挖掘町以得到埘不同行业、不同年龄段、不问社会层次的人,他们的险金应该如何确定。另外,还可进行险种关联分析,分析购买了某种保险的人是否又同时购买另一种保险,也可预测什么样的顾客将会购买新险种。总之,在选择一种数据挖掘技术的时候,应根据问题的特点来决定采用哪种数据挖掘形式比较合适。应选择符合数据模型的算法,确定合适的模型和参数,只有选择好正确的数据挖掘工具,才能真正发挥数据挖掘的作用。

1.2本文的主要工作

本文在之前学者研究的基础上,对数据挖掘及其应用做了更进一步的研究和讨论,并由关联规则和Apriori算法引出两个具体的实例,分别为Apriori算法在学生排课中的应用和在遥感数据中的应用以及BP神经网络及BP算法在投资估算中的应用。

首先,简要介绍了数据挖掘的背景,现在社会属于一个信息爆炸的时代,各种信息数量庞大,因此人们对于信息的分析和整理成为了一个亟待解决的难题,而数据挖掘就能够从海量信息中找出有价值的信息去分析和总结,得出有利于人们解决问题的结论。关联规则与Apriori算法属于数据挖掘中比较典型的一种算法,该算法将发现关联规则的过程分为两个步骤:第一步通过迭代,检索出事务数据库中所有的频繁项集,即支持度不低于用户设定的阀值的项集;第二步利用频繁项集构造出满足最小置信度的股则。其中,找出所有的频繁项集是算法的核心,最后得到的关联规则的总体性能由该步决定。

最后,将算法应用于学生成绩分析和遥感数据分析中,使其数据更具有时效性,更加简洁明了。

2 关联规则与Apriori算法

2.1基础理论

2.1.1关联规则

关联规则是由R.Agrawal等人于1993年提出的,它反映了一个事物与其他事物之间的相互依存性和关联性。如果两个和多个事物之间存在一定的关联关系的知识发现构成,而且是单向的,它是对观察数据中初现的模式的简单归纳,而不是能够刻画出整个总体的强结论。

I=是项目的集合,称为项目。设D为事务T的集合,T是每个事务都有一个唯一的事务号。设XY是一个I中项目的集合,并且一个关联规则是形如的逻辑蕴含式,规定在事物集D中支持度是事物集中同时包含XY的事务数与所有事物数之比,反映规则的可靠程度。记为support),

support=P()

如果项集的支持度超过用户给定的最小支持度阀值,则称该项集为频繁项集。

规则在事物中的置信度是指同时包含XY的事务数与包含X的事务数(不考虑是否包含Y)之比,反映规则的把握程度。 记为confidence),

confidence=PY|X

同时满足最小支持度阀值和最小置信度阀值的规则成为强规则。给定一个事物集D,挖掘关联规则问题就是寻找支持度和置信度分别大于用户给定的最小阀值的关联规则。

根据不同的标准,关联规则可以有以下几种分类方法:

1. 根据规则所处理的类型值,可以分为布尔类型和量化类型。

加工布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变量之间的关系。数值型关联规则对数值字段进行处理,直接对原始数据处理,或者将原始数据进行之后在处理。

2. 根据规则中数据的层次可以分为单层关联规则和多层关联规则

在单层关联规则中,所有的变量都没有考虑到现实的数据是具有多个不同次的。在多层关联规则中,则对数据的多层性进行了充分的考虑。

3. 根据规则中涉及的数据的维数,可以分为单维和多维的关联规则

在单维关联规则中,只是设计数据的一个维,在多维关联规则中,要处理的数据将会涉及两个或多个维。

4. 根据关联规则中收集到的数据是否是同一时间的,又可以分为带有时序性的关联规则和一般意义上的关联规则

我们在用关联规则解决某一问题时一般遵循一下步骤:

1. 任务:描述变量之间的关联关系;

2. 结构:用概率表示的“关联规则”;

3. 评分函数:支持度和置信度的阀值;

4. 搜索方法:系统搜素方法(通常使用的是带有修剪的广度优先);

5. 数据管理技术:多重线性扫描;

2.1.2 Apriori算法及改进

Apriori算法是挖掘关联规则的最典型算法,该算法将发现关联规则的过程分为两个步骤:第一步通过迭代,检索出事务数据库中所有的频繁项集,即支持度不低于用户设定的阀值的项集;第二步利用频繁项集构造出满足最小置信度的股则。其中,找出所有的频繁项集是算法的核心,最后得到的关联规则的总体性能由该步决定。

该算法的思想简单描述为:

1={large 1-item sets}是指频繁项集-1);

2fork = 2; ; k++do begin

=apriori_gen()(将进行连接操作生成候选k项集的集合);

for all transactions tD do begin

=subset(, t) (识别包含在事物t中的候选集);

for all candidates c do

c.count++(支持度计算增值);

end

end;

={c| c.countminsup}

end;

Answer =

首先产生的频繁项集-1,然后是频繁项集-2,直到有某个r值使得为空,这时算法停止。这里在第k次循环中,先产生候选k项集的集合中的每一个项集是对俩个只有一个项不同的属于的频集做一个(k-2)连接起来产生的。中的项集是用来产生频集的候选集,最后的频集必须是的一个子集。

从以上分析中可以看出,最后可能会产生大量的候选集和迭代过程中需要大量的扫描数据库,是Apriori算法运行效率不高的重要原因。为了提高算法的运算效率,Mannila曾经提出过一个Apriori算法的改进,即修剪算法。因为一个项集是频繁项集当且仅当它的所有子集都是频集。那么,如果中某个候选项集中有一个(k-1)子集不是频集,那么即可以通过修剪算法剪掉。正因为有了修剪算法可以显著降低计算所有的候选项集支持度。可以减少产生大量的候选项集。

另一种解决方法是,可以另建一张辅助表F(以矩阵形式存储),用以存储这些信息,包含该记录的编号和它的字段长度。在随后的过程中,及时删除表中不可能出现在候选项集中的记录,即字段长度不大于将要生成的频繁项集-k,而且也不被包含在频繁项集中的记录。在每次的扫描时,只扫描表中存在的记录,不需要每条记录都扫描。

改进算法主要从两方面提高了运行效率:

因为计算机访问内存的速度比访问文件的速度快很多。所以将要查询的数据表出去放入内存中,存储为矩阵E,从而每次迭代过程中,程序不再需要每次都访问数据库,进行匹配,统计。而是直接访问内存中存储的矩阵,从而是运算速度增快。

通过辅助表F,减少访问表E中记录的无效记录,从而使访问次数减少,提高运算速度。

然而,在实际应用中,我们发现并不是所有被挖掘出的强关联规则都有意义或者都是有用的。例如,某一个调查机构帮一个谷类早餐零售商对5000名学生每天早上所从事的活动进行了一次调查。数据表明:60%的学生会在早上打篮球,75%的学生会在早上吃这家零售商的早餐,40%的学生会在早上既打篮球又吃这家零售商的早餐。假如我们设定最小支持度为0.4.,最小置信度为0.6。将产生一下关联规则:“(打篮球)→(吃早餐)”,因为该规则的支持度为0.4,置信度为0.66均大于阀值。应该为一个强规则。但是,这个规则很容易让人误解,因为吃早餐学生的站所有被调查学生的75%,大于66。也就是,打篮球和吃早餐实际上是负关联的,有个项包含在某个项集中,会减少它包含在其他项集中的可能性。因此只凭支持度和信任度阀值未必总能找出符合实际的或者是有意义的规则。如果没有认识到这一点,就有可能在使用关联规则进行问题分析时出错。

为了消除这种错误,应该在关联规则的置信度超过某个度量标准时,定义它为有意义的。因此,我们引入了增益(Lift):

Lift() = P(Y|X)/P(Y) = P()/P(X) * P(Y)

Lift = 1,前项和后项独立;

Lift > 1,表明前后两项是正相关的,说明XY实际同时发生的概率大于XY独立时同时发生的随机概率;

Lift < 1,表明前后两项是负相关。

正如上例中Lift(打篮球→吃早餐)= 0.66 / 0.75 = 0.88 < 1,因此,尽管该规则的支持度和置信度都很高,但是规则是没有意义的。最终所要的关联规则必须是我们常识之外和意料之外的关联,而且该规则必须具有潜在作用。所以一个规则的最终取决于用户本身的判断和需求。

2.2 Apriori算法在学生成绩中的应用

2.2.1 问题引入

国内各高校评价学生学业以及综合苏辙都以学生的各科考试成绩为重要指标,各高校进过长期的运作都积累了存储了大量的学生成绩信息,但是各高校对这些成绩并不是很重视,对成绩的分析处理一般都还停留在古老的查询、统计的时代,例如统计优、良、及格、不及格的人数;计算平均分、标准差,计算绩点;统计绩点 。而对于学生取得的这些成绩与课程之间的关系有没有关联没有做深入的了解,没有发现这些存储的成绩是重要的排课依据。依然采取的人工排课方式,由教学院长或者各系主任编写,他们凭借多年的教学经验,再结合有关规定,来决定给学生开哪些课,以及课程顺序。这不免会有一定的主观性,忽略了多年来积累的学生成绩这一宝贵的资源。如果能够合理开发利用这些资源,利用数据挖掘的方法分析这些学生成绩,找到课程之间的相关关系,必将对课程的开设安排具有重要的指导作用。

以国内某大学01届计算机专业学生在校四年的学习成绩为数据源,选取成绩数据库中《计算机网络》 、《外语》 、《高等数学》 、《计算机基础》 《操作系统》 、《数据库原理》等8门课程作为研究对象,找出某门课程对与其他课程的开设是否有影响,为学校教科老师以后排课提供参考,为以后学生选课提供依据。

2.2.2 建模过程

1)数据清洗:

原始数据库中包含全校各个专业、各个年级、各个学科的所有成绩,某些记录难免会有一些差错或者从经验上看没有关联的数据,为了便于进行数据挖掘,只选择01届计算机专业的学生的8门课程成绩作为挖掘对象,去掉其他所有不需要的字段,删除完全空白记录,如果某条记录中的某一两门课程成绩缺少,则该条记录缺少的成绩补为该科成绩的平均分,对于某条记录中的某门课程成绩有多于一个成绩的情况,则该门成绩按第一次成绩计算。则清洗后的数据表部分数据如表2-1所示。

2-1

2)数据转换:

由于学生的数据都是由数值形式表示的连续的数,而编写的Aprior算法程序是是处理离散数值的,因此,需要将所收集到的数据进行转化,转换为优、良、中、及格、不及格5个等级。将大于等于90分的成绩记为优用数字1表示,将大于等于80且小于90的成绩记为良用数字2表示,将大于等于70且小于80的成绩记为中用数字3表示,将大于等于60且小于70的成绩记为及格用数字4表示,将小于60的成绩记为不及格用数字5表示。将8门课程依次用大写字母ABCDEFGH表示。转换后的数据格式如表2-2所示:

2-2

3)数据挖掘:(该部分由程序实现)

数据挖掘过程主要是利用Apriori算法,采用广度优先的迭代搜素,首先找出频繁1-项集,用查找频繁2-项集,依次类推,直到求出所有的频繁项集。当发现某频繁项集的数目为零,则计算停止。最后,输出所有的项目的频繁集。设最小支持度为30%,产生频繁子集50个,从产生的频繁项目集中产生子集,根据关联规则挖掘算法原理,设置最小置信度60%,得到的关联规则15个,部分规则如表2-3所示:

2-3

利用Apriori算法程序查找频繁项集运行框图如图2-1

2-1

2.2.3 结果分析

由得到的结果可知,有很多课程的相关关系和教学经验是相符的,例如,说明《C语言》成绩在80—90分之间,《C++程序设计》也在80—90分之间的支持度为66.8%,置信度为89.2%,说明学好《C语言》对写好《C++程序设计》起到关键作用,以后排课时可以将《C语言》排在前。

又如上图中的第三条规则说明,《外语》成绩在70—80分之间,《C++程序设计》成绩在80—90分之间的支持度为61.6%,置信度为79.8%,第四条规则说明《计算机基础》成绩在70—80分之间的支持度为72.6%,置信度为85.7%;这两个规则表示《外语》对学好计算机专业课也很重要。

规则说明《数据库原理》成绩在80-90分之间,《计算机网络》也在80-90分之间的支持度为58.4%,置信度为76.5%,第六条规则说明《C++程序设计》在80-90分之间,《计算机网络》也在80-90分之间的支持度为56.9%,置信度为83.4%,这两个规则虽然可信度和置信度都较高,但实际究竟有没有关联还需要做深入的讨论。

上面第二条规则说明《计算机基础》成绩在70-80分之间,《高等数学》在80-90分之间的支持度为55.8%,置信度为87.2,虽然支持度和置信度都达到了要求,但是根据老师多年的教学经验,这两者之间并没有很强的关系,因此在实际排课中我们要实际经验联系数据做出安排。

2.2.4 模型改进

在上面建模过程中,在数据转换时,将成绩离散化为1-5的值,这样每一门课都会有5个不同的表示,例如A1A2A3A4A510门课就会有50个不同的符号来表示每一个项目。虽然之中划分对于分析没门课程之间的联系会给出更加有利和详细的证据。但是,在扫描数据库时,我们需要扫描匹配50个符号。当课程数目较少时,这种做法的运行效率还是可以接受的,但是,实际情况中,每一个专业大学四年所学课程通常都是在三四十门以上。如果仍谈按照以上的方式进行数据处理,就会产生上百个项目,当学生人数又很多的时候,上百个项目,扫描数据库中上百条记录,程序的运行效率会很低。

综上所述,为了兼顾程序的运行效率和得到确实可信的结果,当需要扫描大数据的数据库时,在数据转换时,不再将成绩按照标准划分成五个等级,而是将成绩划分为2个等级,如果成绩大于该科的平均分,则该成绩记为1,否则该科成绩记为0,结果如表2-4所示:

2-4

2-5

然后再利用matlab程序,将该表导入内存中:

Data=xlsread(E:\bookl);

这样就将excel中的数据读入data中。

将数据存储到计算机内存中,当运行Apriori算法程序时,不需要每次都扫描数据库,只需扫描一次数据库文件,以后每次迭代中都只是扫描存储到计算机内存中的矩阵。加快了数据访问速度。

模型改进之后,需要访问的数据量减少了一半以上,数据的访问次数也减少了很多,因此程序的运行效率会有显著的提高。这是今后在做大数据挖掘时,加快程序运行速度的一个解决办法。

2.3 Apriori算法在遥感数据挖掘中的应用

2.3.1问题引入

遥感影响数据属于空间数据,通过遥感影像数据结合其他数据来获取感兴趣的知识,在精确农业、土地规划、资源勘察、环境保护等领域有着非常广泛的应用。但是随着遥感平台的丰富和传感器技术的发展,获取的RSI数据量十分巨大,并且很多遥感数据是复杂且带有噪声的,加大了我们对其进行高效处理和提取有用知识的难度。因此,我们迫切需要一种新技术从这些海量的遥感数据中提取有效的信息。我们从一副遥感数据中提取了植被的覆盖类型,从空间数据库中查去过去一年中的降水量,有DEM提取该地区的坡度图,预测该林区林火风险等级。

2.3.2 问题求解

1、数据处理

首次,为了将关联规则用于遥感图像数据,需要对得到的数据进行离散化处理。即需要将图像数据转化为事物数据库的形式。经过查阅资料,对收集到的数据按下列标准进行离散化处理。

2-6植被覆盖分割标准

2-7坡度分割标准

2-8降水分割标准

2-9山火发生概率属性分割标准

2-10得到的事物数据库形式为

2.数据挖掘

利用Apriorit算法进行数据挖掘:

扫描数据库,对每个项进行计数,得到候选项集1.

判断得到的每个候选项集的频数是否满足支持度,如果不满足支持度,将该项剪枝。

将得到的剪枝后剩下的数据进行自连接,得到新的候选项集2

扫面数据库对每个项集进行统计计数。

判断得到的每个候选项集的频数是否满足支持度,如果不满足支持度,将该项剪枝。

将剪枝剩下的项集执行连接操作。

循环执行,(4)(5)(6)。

Apriori算法执行完成得到了所有的频繁子集,但是,根据领域知识,本问题感兴趣的是什么情况下山火容易出现,因此,在本问题中,需要选择植被覆盖度、坡度、降水量为参量,山火发生概率为为结果参数。因此,得到的关联规则应该是{植被覆盖度、坡度、降水量山火发生概率}

对得到的频繁子集进行关联规则挖掘后得到的结果为:

2-11

2.3.3结果分析

从上表中可以发现,坡度高,降水量多容易发生林场火灾;坡度低,降雨量低,植被覆盖率低,发生林火的概率不是很大。

Apriori算法引入遥感影像数据挖掘领域,对影像关联挖掘中的事物中的事物、项、基集、关联规则进行定义,考虑关联规则的支持度和置信度,提取感兴趣的知识点。

3 BP神经网络

3.1 基础理论

3.1.1 神经网络介绍

神经网络是指用大量的简单计算单元(即神经元)构成的非线性系统,它在一定程度和层次上模仿了人脑神经系统的信息处理、存储及检索功能,因而具有学习、记忆和计算等处理功能。神经网络的一些显著特点包括:非线性映射能力;不需要精确的数学模型;擅长从输入输出数据中学习有用的知识;能够并行计算;易于软硬件实现等等。

3.1.2 神经网络原理

神经网络是由很多节点组成的,这些节点用某一种模式连接在一起,这些节点被称为神经元或单元,是十分简单的处理器。神经元的计算能力依靠两个原则:一是组合输入信号的规则;二是将组合的输入信号计算成输出信号的激励规则。输出信号通过连接权传送给其他节点,权通常会使正在通信的信号产生兴奋或抑制。神经网络最大的吸引力在于它可以从输入的数据中进行学习,这些数据应该是网络正常工作时期望处理的。

虽然有很多不同类型的神经网络,但是他们都具有以下的共同特征:简单的处理节点;连接模式;网络传播信号的规则;组合输入信号的规则;计算输出信号的规则;修改权值的学习规则。

简单处理节点:

每个处理节点通常有两种权:一种是来自网络其他节点的输入权,另一种是传输到其他节点的输出权。但是,输入节点只有输出权,输出节点只有输入权。

连接模式:

连接模式是指节点的连接方法。在有点网络中,每个节点都可以和其他节点相连;还有的网络中,节点被安排成有序的层次结构,节点的连接只能是直接相邻的层的节点。连接是由权的参数表示的,权的三个参数分别是:权连接来自哪个节点;权连接到哪个节点;表示权值的一个数值。

负权值会抑制连接到节点的活动,正权值会激活连接到的节点,权的绝对值指定了连接强度。

连接模式由矩阵表示,矩阵中的项表示从节点j到节点i的权值。有时候在描述整个网络的连接模式时使用不知一个权矩阵,因为复杂的网络一般都会把节点层次化。

网络控制信号的传播规则:

对于一个特殊的神经网络结构类型,存在某个规则控制何时更新节点,信号何时送给其他的节点。其他的网络模型,会随机的选择一个节点更新,而对另外的一些网络结构,要求一组节点更新必须在另一组节点之前更新。

组合输入信号的规则:

组合输入信号的典型方法是对它们的值求加权和,即

是节点j组合输入;是节点i的输出;n是输入的连接数。

计算输出信号的规则:

每一个节点都具有一个计算输出值的规则,这些值将传输到其他的节点或以输出结果的形式表现,该规则成为激励函数。输出的值称为节点的激励。其中最常用的激励函数是:二值阀值函数和Sigmoidal函数。

二值阀值函数将激励限制为10,常用于分类问题,取决于净输入与某个阀值。有时为了方便,在净输入值上增加一个偏差量,它是阀值的负值,在这种情况下,净输入有下式计算:,如果将偏差认为是来自一个激励总为1的节点的权,就可以将上式改写为:取为1。输出的值在输入值大于等于0的时候为1,小于0的时候为0

Sigmoidal函数是最常用的激励函数值之一,他的输出范围[0,1]。其次,它还是连续可微的,使得神经元的权值可以使用误差反向传播算法来调节。它的表达式为:

修改权值的学习规则:

在学习开始,通常节点的安排是固定的,激励函数的选择也是固定的,在学习期间,任务是修正权值得到期望的输出。

在训练开始,通常将权值设为很小的随机数。当第一个样本输入到网络时,网络是不会得到期望的结果的。网络的实际的输出与期望的输出的不同就构成了误差。这个误差可用来修正权值。规则就是一种误差修正规则。对于单输入权的输出节点,激励y与目标t的误差为:=t - y。输出节点的信号是x,规则表明,需要调整的量为:为学习率,取值为实数。新权为:

3.1.3 神经网络的基本模型

在这里我们主要介绍前馈神经网络结构和多层感知器模型。前馈神经网络是指拓扑结构为有向无环图的神经网络,在前馈网络中,各层的神经元接受前一层神经元的输入,并将本层的输出给下一层,没有反馈。除了输入层之外的隐藏层和输出层都会实现一定的运算,被称为计算节点。

两层感知器网络,该网络只有输入层和输出层。输出层为计算节点,基函数取线性函数,激励函数取二值阀值函数。一般用于线性分类。

多层感知器网络,该网络有一个输入层、一个输出层、和多个隐藏层,隐藏层和输出层为计算节点。多层感知器的基函数取线性函数,激励函数可以去多种形式。如果所有的计算节点都取二值阀值函数,则网络为多层离散感知器;如果所有的隐藏层都取Sigmoidal函数,就是BP网。此时,网络权值和阀值可用误差反向传播学习算法学习。通常,BP网用来分类,则输出层节点一般用Sigmoidal函数或二值阀值函数;用来函数逼近,输出层节点就应该选用线性函数。

3.2 BP网络和BP算法

3.2.1 BP算法简介

反向传播算法将学习过程分为两个阶段:从输入层到学习层的整箱传播过程和从输入层到输入层的反向传播过程。在训练期间,每一个输入样本都有一个目标向量,训练的目标是找到一个网络权集。在训练开始前,给权赋较小的随机值。所有的隐藏层节点都取Sigmoidal函数。直到所有的输出落在目标节点所指定的容许范围内,通常认为网络完成了学习任务。

算法过程如下:

While not STOP

STOP = TRUE

For 每个向量

执行正向传播找出实际的输出

通过比较实际输出与目标输出获得误差向量

If 实际输出不再容许范围

STOP = FALSE

End if

执行误差向量的反向传播

使用反向传播确定权的变化量

更新权值

End for

End while

3.2.2 BP算法的数学原理

=

假设有p个训练样本,对应的期望输出记为,节点i的信号是是学习效率(权值调整的程度),是节点i同节点j相连接的权值改变量。学习的过程就是通过误差校正权值,使得接近

当一个样本输入到网络,产生输出时,均方误差应为各输出单元误差平方之和,即:

并且.根据微分的链式法则,可以得到

此处引入记号

因为有,所以有

对于激励函数f,则输出为:

倒数为:

综合上面的计算有:

由此可以得到一个节点权的该变量为:

上面给出的误差可用于节点,但是隐藏层节点的误差并不直接与目标输出有关。因此,对于隐藏层节点,误差可由下式给出:

3.3 案例分析

3.3.1 问题引入

今年来,我国政府农业项目投资增长迅速,年度投资高达数千亿元人民币。在政府农业项目投资迅速增长的同时,陆续出现了一些不和谐现象。这些现象的出现有许多方面的原因,但是可行性研究阶段投资估算不准确是一个重要的原因。投资估算是工程项目在前期可行性研究阶段的重要工作环节,它对新建项目投资方案的决策起着重要的决定作用。同时,也决定着新建项目的经济和社会效益。根据给出的全断面掘进机TBM在挖掘隧道的过程中收集到的数据,做出分析,预测新建隧道单位的成洞米造价。

3.3.2 建模过程

1)模型建立

本章选用BP网络求解该问题,BP网络是一种多层网格结构,由输入层,隐藏层和输出层组成,各层之间采用全互连接,但是同一层单元间不互连接。

网络隐藏层只有一层,即选用3层网络:输入层,一层隐藏层,输出层。因为3层网络已经满足任何要求,如果选用较多的隐藏层,会使网络结构庞大,需要较长的学习和训练时间才能是网络达到稳定。

隐藏层单元个数按照柯尔莫哥洛夫定理,取值为2m+1

初始权值选用随机函数(-11)之间的随机数。

节点输出函数选择Sigmoid,将任何数据的输入都可以转化为(01)之间的数。

2)求解过程

首先需要查阅资料,处理给出的数据。

查阅资料根据工程特征因素量化描述。工程特征的选取应参照历史工程资料的统计和分析,根据专家的经验确定。通过对影响隧道工程的造价的因素分析,确定了隧道长度、围岩类别、TBM机类型、工时利用率、衬砌类型、衬砌方法、喷锚支护、道床类型8种因素作为工程特征,并根据下表将其离散化。

3-1

离散化后的数据形式为:

3-2

1.数据处理及挖掘:

选用三层BP网络,输出函数为Sigmoid函数,输入单元为八个依次为隧道长度、围岩类别、TBM机类型、工时利用率、衬砌类型、衬砌方法、喷锚支护、道床类型,分别用I1-I8表示;输出单元1个,表示单位成洞米造价,用O1表示,隐藏层单元17个,初始权值为(-11)之间的随机数。

网络训练所需的样本数取决于输入-输出非线性映射的复杂度,映射关系越复杂,为保证一定映射精度所需要的样本数会越多,但是,当样本数多到一定程度时,网络的精度就很难提高。所以,根据网络输入-输出映射复杂度,对于该问题的解决,选取了15个样本用于训练阶段,4个测试样本。

BP网络模型如下:

3-1

具体训练运算过程如下:

1. 初始化网络权重。

2. 将样本以输入八个输入单元中。前向求出各个隐藏层和输入层的输出。

3. 求输出层与预期输出的偏差E

4. 反向误差传播,求隐藏层误差。

5. 调整取值和神经元偏置。

6. 判断训练是否结束。是,则结束;否,则返回2进行迭代运算。

在训练BP网络过程中,发现在样本训练过程中迭代次数超过200次,容许误差为

15个样本在经过每个样本迭代200次的训练后,将四个检测样本输入BP网络中,检测网络能否达到预期效果。但是,为了使结果的准确性,每一个检测样本都运行十次,取十次的平均值。最后得到的检测结果如表3-3所示:

3-3

从上表可知,求平均值之后的的预测值与实际值的误差满足工程预算的估算精度的要求。

3.3.3 模型改进

从上面的模型求解中,可以看出,模型在训练阶段每一个样本数据都需要200次迭代才能达到容许的误差限内,对于本列,样本数据较少,还是可以满足要求的,但是对于大数据的挖掘,这必然会影响算法的执行速度。因此需要改进算法,以加快网络的学习速度。

增加动量项是一个重要的方法,该方法是从前一次的取值调整中取出一部分叠加到本次的权值调整量中。即将换位:

还有一种自适应学习率也是一种加快迭代的方法,即:经过权值调整后如果总误差上升,则本次调整无效,乘以<1,当总误差开始下降后,再让乘以>1)。

4 结语

随着信息技术的飞速发展,数据的产生和存储达到了空前繁荣的阶段。数据挖掘技术,为这些海量数据的合理有效利用提供了一个方法。数据挖掘是一个多学科的交叉研究领域,不仅大学里的学术人员在研究它,商业公司的专家和技术人员也在密切的关注它和使用它;它不仅涉及人工智能领域以及统计学的应用,而且涉及数据库的管理和使用。

通过本文的讲述,不难发现数据挖掘应用的算法是多种多样的,从最初的统计学原理到现在研究最热的神经网络的,数据挖掘的应用是十分广泛的,小到学校的课程的安排,大到政府投资的预计估算,这些领域无不充斥着数据挖掘的影子。可能对于某些事情,凭借经验完全可以做出决策,例如学校课程的安排,但是这些决策没有坚强的理论基础做支撑,有时候是很难站住脚的。但是如果我们能运用数据挖掘的有关知识,为这些经验提供理论科学依据,就会让这些经验显得更加可信。还有一些事情被大量的数据包围,很难从数据中找到做出关联,很难做出对这些事情的决策;在这种情况下,更需要我们运用正确的方法,分析数据,做出决策,而数据挖掘技术就是最正确的方法。

在准备和撰写本文的这段时间内,充分的学习和了解了数据挖掘的有关知识,以及数据挖掘技术的研究现状,还有数据挖掘在近现代企业和商业中的应用。其中着重研究了数据挖掘算法中的有关关联规则挖掘的Apriori算法和有指导的学习算法—BP算法。再对这些算法的深入学习之后,并运用这些算法解决了与之密切相关的两个实际问题。

参考文献

[1]Xian jun Ni. Research of Data Mining Based on Neural Networks.北京:水利水电出版社,2003

[2]史忠植.知识发现[M].北京:清华大学出版社,2002

[3]张志霞,许童羽等.高等学校成绩分析方法的研究[J].沈阳农业大学学报,2008-06103):322324

[4]李金忠.关联规则Apriori算法[J].电脑编程技巧与维护,20086):3537

[5]常朝德,代永卫等.关联规则在公安情报信息系统中的应用[J].计算机工程与应用,2008445):7578

[6]赵辉.数据挖掘技术在学生成绩分析中的研究及应用[D].大连:大连海事大学,2007

[7]陆楠.关联规则的挖掘及其算法的研究[D],长春:吉林大学,2007

[8]周根贵.数据仓库与数据挖掘[M].浙江:浙江大学出版社,2004

[9]Pang-Ning Tan, Michael Steinbach, Vipin Kumar.范明,范宏建等译.数据挖掘导论[M].北京:人民邮电出版社,2006

[10]王伟.人工神经网络原理入门与应用[M].北京:北京航空航天大学出版社,1996

[11]焦李成.神经网络系统理论[M].西安:西安电子科技大学出版社,2000

[12]廉师友.人工智能技术导论[M].西安:西安电子科技大学出版社,2000

[13]陈明.神经网络模型[M].大连:大连理工大学出版社,1995

[14]阎平凡,张长水.人工神经网络与模拟进化计算[M].北京:清华大学出版社,2000

[15]张立明。人工神经网络的模型及其应用[M].上海:复旦大学出版社,2000

[16]韩力群,人工神经网络理论设计及应用[M].北京:化学工业出版社,2002

[17]董辉.基于遗传BP神经网络的数据挖掘系统设计[J].农业网络与信息,2004,(6):710

[18]韩彦峰,段向前.人工神经网络在数据挖掘中的应用[J].西安建筑科技大学学报,2005371):121124

[19]周丽萍,胡振峰.BP神经网络在建筑工程估价中的应用[J].

西安建筑科技大学学报,2005372):261264

在本次毕业设计完成之际,首先感谢四年来我学习成长和生活的母校,给我提供了丰富的学习资源和很多的成长平台,并给我创造了良好的学习和生活环境.

同时我也要感谢我的毕业设计指导老师王永丽老师,从大一开始跟着王老师上课,王老师严谨的教学风格,高度的敬业精神,和蔼可亲的教师形象深深影响着我,在整个设计过程中,王老师给予了细致的指导,提出了很多宝贵的意见与建议.

感谢本科期间所有的老师给我的帮助和教导,没有你们的教导就不会有我现在的知识积淀,也不会为我走进社会奠定良好的知识和能力基础.更不会是我顺利完成这篇论文.

感谢我的爸爸妈妈,感谢他们二十多年的宠爱和教导,他们用自己的实际行动教会了我怎样求知怎样做人.有了他们作为我前进道路上坚强的后盾,我才更有勇气去努力的走得更高更远.

感谢一起愉快度过四年大学生活的同窗,感谢我的舍友,总是能够和我分享快乐共担困难,在我最需要的时候给我最好的陪伴和照顾,谢谢你们给了我大学一份最难得的回忆.

最后,向百忙之中抽时间对本文进行审阅的各位老师表示衷心的感谢.

附录一 英文原文

The application of neural networks in the data mining has become wider. Although neural networks may have complex structure, long training time, and uneasily understandable representation of results, neural networks have high acceptance ability for noisy data and high accuracy and are preferable in data mining. In this paper the data mining based on neural networks is researched in detail, and the key technology and ways to achieve the data mining based on neural networks are also researched.

With the continuous development of database technology and the extensive applications of database management system, the data volume stored in database increases rapidly and in the large amounts of data much important information is hidden. If the information can be extracted from the database they will create a lot of potential profit for the companies, and the technology of mining information from the massive database is known as data mining.

Data mining tools can forecast the future trends and activities to support the decision of people. For example, through analyzing the whole database system of the company the data mining tools can answer the problems such as “Which customer is most likely to respond to the e-mail marketing activities of our company, why”, and other similar problems. Some data mining tools can also resolve some traditional problems which consumed much time, this is because that they can rapidly browse the entire database and find some useful information experts unnoticed.

Neural network is a parallel processing network which generated with simulating the image intuitive thinking of human, on the basis of the research of biological neural network, according to the features of biological neurons and neural network and by simplifying, summarizing and refining. It uses the idea of non-linear mapping, the method of parallel processing and the structure of the neural network itself to express the associated knowledge of input and output. Initially, the application of the neural network in data mining was not optimistic, and the main reasons are that the neural network has the defects of complex structure, poor interpretability and long training time. But its advantages such as high affordability to the noise data and low error rate, the continuously advancing and optimization of various network training algorithms, especially the continuously advancing and improvement of various network pruning algorithms and rules extracting algorithm, make the application of the neural network in the data mining increasingly favored by the overwhelming majority of users. In this paper the data mining based on the neural network is researched in detail.

There are seven common methods and techniques of data mining which are the methods of statistical analysis, rough set, covering positive and rejecting inverse cases, formula found, fuzzy method, as well as visualization technology. Here, we focus on neural network method.

Neural network method is used for classification, clustering, feature mining, prediction and pattern recognition. It imitates the neurons structure of animals, bases on the M-P model and Hebb learning rule, so in essence it is a distributed matrix structure. Through training data mining, the neural network method gradually calculates (including repeated iteration or cumulative calculation) the weights the neural network connected. The neural network model can be broadly divided into the following three types:

(1) Feed-forward networks: it regards the perception back-propagation model and the function network as representatives, and mainly used in the areas such as prediction and pattern recognition;

(2) Feedback network: it regards Hopfield discrete model and continuous model as representatives, and mainly used for associative memory and optimization calculation;

(3) Self-organization networks: it regards adaptive resonance theory (ART) model and Kohonen model as representatives, and mainly used for cluster analysis.

At present, the neural network most commonly used in data mining is BP network. Of course, artificial neural network is the developing science, and some theories have not really taken shape, such as the problems of convergence, stability, local minimum and parameters adjustment. For the BP network the frequent problems it encountered are that the training is slow, may fall into local minimum and it is difficult to determine training parameters. Aiming at these problems some people adopted the method of combining artificial neural networks and genetic gene algorithms and achieved better results.

Data expression is to transform the data after preprocessing into the form which can be accepted by the data mining algorithm based on neural network. The data mining based on neural network can only handle numerical data, so it is need to transform the sign data into numerical data. The simplest method is to establish a table with one-to-one correspondence between the sign data and the numerical data. The other more complex approach is to adopt appropriate Hash function to generate a unique numerical data according to given string. Although there are many data types in relational database, but they all basically can be simply come down to sign data, discrete numerical data and serial numerical data three logical data types. Fig. 3 gives the conversion of the three data types. The symbol “Apple” in the figure can be transformed into the corresponding discrete numerical data by using symbol table or Hash function. Then, the discrete numerical data can be quantified into continuous numerical data and can also be encoded into coding data.

There are many methods to extract rules, in which the most commonly used methods are LRE method, black-box method, the method of extracting fuzzy rules, the method of extracting rules from recursive network, the algorithm of binary input and output rules extracting (BIO-RE), partial rules extracting algorithm (Partial-RE) and full rules extracting algorithm (Full-RE).

Self-organization process is a process of learning without teachers. Through the study, the important characteristics or some inherent knowledge in a group of data, such as the characteristics of the distribution or clustering according to certain feature. Scholars T. Kohonen of Finland considers that the neighboring modules in the neural network are similar to the brain neurons and play different rules, through interaction they can be adaptively developed to be special detector to detect different signal. Because the brain neurons in different brain space parts play different rules, so they are sensitive to different input modes. TKohonen also proposed a kind of learning mode which makes the input signal be mapped to the low-dimensional space, and maintain that the input signal with same characteristics can be corresponding to regional region in space, which is the so-called self-organization feature map(S0FM).

Evaluating whether a data mining implementation algorithm is fine the following indicators and characteristics can be used: (1) whether high-quality modeling under the circumstances of noise and data half-baked; (2) the model must be understood by users and can be used for decision-making; (3) the model can receive area knowledge (rules enter and extraction) to improve the modeling quality. Existing neural network has high precision in the quality of modeling but low in the latter two indicators. Neural network actually can be seen as a black box for users, the application restrictions makes the classification and prediction process can not be understood by users and directly used for decision-making. For data mining, it not enough to depend on the neural network model providing results because that before important decision-making users need to understand the rationale and justification for the decision-making. Therefore, in the ANN data mining knowledge base should be established in order to accede domain knowledge and the knowledge ANN learning to the system in the data mining process. That is to say, in the ANN data mining, it is necessary to use knowledge method to extract knowledge from the data mining process and realize the inosculation of the knowledge processing and neural network. In addition, in the system an effective decision and explanation mechanism should also be considered to be established


附录二 中文译文

神经网络在数据挖掘中的应用已经越来越广泛。虽然神经网络可能有复杂的结构,训练时间长,而且效果不安可以理解的表示,神经网络对噪声数据和高精度高接受能力强,并有较好的数据挖掘。本文基于神经网络的数据挖掘研究的细节,以及关键技术和方法来实现基于神经网络的数据挖掘了研究。

随着数据库技术的不断发展数据库管理和广泛的应用系统中,存储在数据库中的数据量迅速增加,并且在大量数据中的很多重要的信息是隐藏的。如果信息可以从数据库中提取他们将为公司创造大量的潜在利润,从大量的数据库中挖掘信息的技术成为数据挖掘。

数据挖掘工具可以预测未来的发展趋势和活动,以支持人的决定。例如,通过分析公司的整个数据库系统中的数据挖掘工具可以回答的问题,如“哪些顾客是最有可能响应本公司的电子邮件营销活动,为什么”,以及其他类似的问题。一些数据挖掘工具还可以解决所消耗太多的时间的一些传统的问题,这是因为它们能迅速浏览整个数据库并找到一些有用的信息专家被忽视。

神经网络是其与模拟人类的图像直觉思维,生物神经网络的研究的基础上,根据生物神经元和神经网络的特征,并通过简化,概括和澄清所产生的并行处理网络。它使用非线性映射的概念,并行处理的方法和神经网络本身的结构来表达的输入和输出的相关联的知识。最初,在数据挖掘的神经网络的应用并不乐观,主要理由是该神经网络具有结构复杂,可解释性差,训练时间长的缺陷。但它的优点,如高的承受能力的噪声数据和低误码率,各网络训练算法的连续推进和优化,尤其是连续地前进和各种网络剪枝算法和规则提取算法的改进,使神经网络的应用在数据挖掘越来越受到广大用户的青睐。本文基于神经网络的数据挖掘详细研究。

有七种常见的方法和数据挖掘技术这是统计分析,粗糙集,涵盖了正,逆拒绝的情况下,公式发现,模糊方法,以及可视化技术的方法。在这里,我们专注于神经网络方法。

神经网络方法用于分类,聚类,特征挖掘,预测和模式识别。它模仿动物的神经元结构,在MP模型和海布学习规则库,所以它在本质上是一个分布式的矩阵结构。通过训练数据挖掘,神经网络方法逐步计算(包括反复迭代或累积计算)的神经网络连接权重。神经网络模型,大致可分为以下三种类型:

1)前馈网络:它视知觉反向传播模型和功能网络为代表,和主要用于区域例如预测和模式识别;

2)反馈网络:它认为的Hopfield离散模型和连续模型为代表,主要用于联想记忆和优化计算;

3)自组织网络:它认为自适应共振理论(ART)模型和基于Kohonen模型为代表,主要用于聚类分析。

目前,数据挖掘中最常用的神经网络是BP网络。当然,人工神经网络是发展科学,和一些理论还没有真正形成,如收敛性,稳定性,局部最小和参数调整的问题。为BP网络频繁问题它遇到是训练速度慢,可能陷入局部最小值,这是难以确定的训练参数。针对这些问题,一些人通过结合人工神经网络和遗传算法的基因的方法,取得了较好的效果。

数据表达到预处理可以通过基于神经网络的数据挖掘算法可以接受的形式后转换数据。基于神经网络的数据挖掘只能处理数字数据,所以它是需要的标志数据转换成数字数据。最简单的方法是建立一个表,所述符号数据和数值数据之间的一对一的对应关系。在其它更复杂的方法是采用合适的散列函数,根据给定的字符串以产生一个唯一的数字数据。虽然也有在关系数据库中的许多数据类型,但它们都基本上可以简单地归结为签名数据,离散的数字数据和串行数字数据三个逻辑数据类型。图3给出了三种数据类型的转换。图中的符号“苹果”可以通过使用符号表或散列函数可以转变成相应的离散数字数据。然后,将离散的数字数据可以被量化成连续的数字数据,也可编码成编码数据。

有许多方法来提取规则,其中最常用的方法是LRE方法,黑箱方法,提取模糊规则的方法中,从递归网络中提取的规则的方法中,二进制输入和输出规则提取的算法(BIO-RE),部分规则提取算法(部分-RE)和完整的规则提取算法(全-RE)。

自组织过程是学习没有教师的过程。通过研究,重要的特征或在一组数据,如根据特定特征的分布或群集的特性的一些固有的知识。芬兰学者T. Kohonen的认为邻近模块中的神经网络是类似于脑的神经元和玩不同的规则,通过交互它们可以自适应地发展成为特殊检测器,以检测不同的信号。

因为在不同的大脑部位空间大脑神经元扮演着不同的规则,所以他们是不同的输入模式敏感。 T'Kohonen神经还提出了一种学习模式,使得输入信号映射到低维空间,并且保持所述输入信号具有相同的特性,可对应于区域区域中的空间,这是所谓的自组织特征映射(S0FM)。

评估数据挖掘算法的实现是否是好的以下指标和特性,可用于:(1)不论是根据噪声和数据半生不熟的情况下,高品质的造型; 2)模型必须由用户理解并可以用于决策; 3)该模型可以接收领域的知识(规则进入和提取),以提高建模质量。现有的神经网络具有高精度建模,但是低的在后两个指标的质量。神经网络实际上可以看作是一个黑盒子的用户,则应用程序的限制使得分类和预测过程中不能被用户理解并直接用于决策。对于数据挖掘,它没有足够的依赖于神经网络模型提供的结果,因为之前重要的决策用户需要了解的依据和理由决策。因此,在神经网络的数据挖掘知识基础应建立在为加入域的知识和知识的学习神经网络的系统中的数据挖掘过程。也就是说,在神经网络的数据挖掘,有必要使用知识方法从数据挖掘过程中提取知识,实现知识处理和神经网络的吻合。此外,在系统中一个有效的决策和解释的机制,也应考虑到建立.


附录三 程序代码

①首先要在工程名文件夹里自己定义date.txt文档存放数据,然后在main函数中用FILE* fp=fopen("date.txt","r");将数据导入算法。

②定义int countL1[10];找到各一维频繁子集出现的次数。

定义char curL1[20][2];实现出现的一维子集。

由于给出的数据最多有4个数,所以同样的我们要定义到4维来放数据。

int countL2[10]; //各二维频繁子集出现的次数

char curL2[20][3]; //出现的二维子集

int countL3[10]; //各三维频繁子集出现的次数

char curL3[20][4]; //出现的三维子集

char cur[50][4];

③定义int SizeStr(char* m) 得到字符串的长度。实现代码如下:

int SizeStr(char* m)

{

int i=0;

while(*(m+i)!=0)

{

i++;

}

return i;

}

④比较两个字符串,如果相等返回true,否则返回false

bool OpD(char* x,char* y)

{

int i=0;

if(SizeStr(x)==SizeStr(y))

{

while(*(x+i)==*(y+i))

{

i++;

if(*(x+i)==0 && *(y+i)==0)

return true;

}

}

return false;

}

⑤通过void LoadItemL1(char **p) 得到所有1元的字串和各自出现的次数

void LoadItemL1(char **p)

{

int i,j,n=0,k=0;

char ch;

char* s;

int f;

memset(cur,0,sizeof(cur));

for(i=0;i<20;i++)

{

curL1[i][0]=0;

curL1[i][1]=0;

}

for(j=0;j<10;j++)

countL1[j]=0;

for(i=0;i<10;i++)

for(j=0;j<4;j++)

{

ch=*(*(p+i)+j);

if(ch==0)

break;

cur[n][0]=ch;

n++;

}

curL1[0][0]=cur[0][0];

curL1[0][1]=cur[0][1];

k=0;

for(i=0;i<50;i++)

{

if(cur[i]==0)

break;

s=cur[i];

f=1;

for(j=0;j<=k;j++)

{

if(OpD(s,curL1[j]))

{

f=0;

break;

}

}

if(f==1)

{

++k;

curL1[k][0]=cur[i][0];

curL1[k][1]=cur[i][1];

}

}

for(i=0;i<20;i++)

for(j=0;j<50;j++)

{

char* m;

m=curL1[i];

if(*m==0)

break;

if(OpD(m,cur[j]))

countL1[i]++;

}

printf("L1: \n ");

printf("项集 支持度计数\n");

for(i=0;i<10;i++)

{

if(curL1[i]==0)

break;

if(countL1[i]>=2)

printf("{I%s}: %d\n",curL1[i],countL1[i]);

}

}

⑥通过void SubItem2(char **p) 得到所有的2元子串

void SubItem2(char **p)

{

int i,j,k,n=0;

char* s;

memset(cur,0,sizeof(cur));

for(i=0;i<20;i++)

{

curL2[i][0]=0;

curL2[i][1]=0;

curL2[i][2]=0;

}

for(i=0;i<10;i++)

countL2[i]=0;

for(k=0;k<10;k++)

{

s=*(p+k);

if(SizeStr(s)<2)

continue;

for(i=0;i

for(j=i+1;j

{

if(*(s+j)==0)

break;

*(cur[n]+0)=*(s+i);

*(cur[n]+1)=*(s+j);

*(cur[n]+2)=0;

*(cur[n]+3)=0;

n++;

}

}

}

⑦通过void LoadItemL2(char **p) 得到各个2元频繁子串出现的次数

void LoadItemL2(char **p)

{

int k,i,j;

char* s;

int f;

SubItem2(p);

curL2[0][0]=cur[0][0];

curL2[0][1]=cur[0][1];

curL2[0][2]=cur[0][2];

k=0;

for(i=0;i<50;i++)

{

if(cur[i]==0)

break;

s=cur[i];

f=1;

for(j=0;j<=k;j++)

{

if(OpD(s,curL2[j]))

{

f=0;

break;

}

}

if(f==1)

{

++k;

curL2[k][0]=cur[i][0];

curL2[k][1]=cur[i][1];

curL2[k][2]=cur[i][2];

}

}

for(i=0;i<20;i++)

for(j=0;j<50;j++)

{

s=curL2[i];

if(*s==0)

break;

if(OpD(s,cur[j]))

countL2[i]++;

}

printf("L2: \n");

printf("项集 支持度计数\n");

for(i=0;i<10;i++)

{

if(curL2[i]==0)

break;

if(countL2[i]>=2)

printf("{I%c,I%c}: %d\n",curL2[i][0],curL2[i][1],countL2[i]);

}

}

⑧通过定义void SubItem3(char **p) 得到所有3元的子串

void SubItem3(char **p)

{

char *s;

int i,j,h,m;

int n=0;

memset(cur,0,sizeof(cur));

for(j=0;j<20;j++)

{

curL3[j][0]=0;

curL3[j][1]=0;

curL3[j][2]=0;

curL3[j][3]=0;

}

for(i=0;i<10;i++)

countL3[i]=0;

for(m=0;m<10;m++)

{

s=*(p+m);

if(SizeStr(s)<3)

continue;

for(i=0;i

for(j=i+1;j

{

for(h=j+1;h

{

if(*(s+h)==0)

break;

*(cur[n]+0)=*(s+i);

*(cur[n]+1)=*(s+j);

*(cur[n]+2)=*(s+h);

*(cur[n]+3)=0;

n++;

}

}

}

}

⑨同样我们要得到得到各个3元频繁子串出现的次数

void LoadItemL3(char** p)

{

int k,i,j;

char* s;

int f;

SubItem3(p);

curL3[0][0]=cur[0][0];

curL3[0][1]=cur[0][1];

curL3[0][2]=cur[0][2];

curL3[0][3]=cur[0][3];

k=0;

for(i=0;i<50;i++)

{

if(cur[i]==0)

break;

s=cur[i];

f=1;

for(j=0;j<=k;j++)

{

if(OpD(s,curL3[j]))

{

f=0;

break;

}

}

if(f==1)

{

++k;

curL3[k][0]=cur[i][0];

curL3[k][1]=cur[i][1];

curL3[k][2]=cur[i][2];

curL3[k][3]=cur[i][3];

}

}

for(i=0;i<20;i++)

for(j=0;j<50;j++)

{

s=curL3[i];

if(*s==0)

break;

if(OpD(s,cur[j]))

countL3[i]++;

}

printf("L3: \n");

printf("项集 支持度计数\n");

for(i=0;i<10;i++)

{

if(curL3[i]==0)

break;

if(countL3[i]>=2)

printf("{I%c,I%c,I%c}: %d\n",curL3[i][0],curL3[i][1],curL3[i][2],countL3[i]);

}

}

⑩定义void LoadItemL4(char** p) 得到各个3元子串出现的次数

void LoadItemL4(char** p)

{

int i;

char* s;

int j=0;

for(i=0;i<10;i++)

{

s=*(p+i);

if(SizeStr(s)==4)

j++;

}

printf("四维子集出现的次数: %d\n",j);

printf("没有四维的频繁子集,算法结束! \n");

}

通过void Support(char* w,int g) 得到关联规则,并输出结果

void Support(char* w,int g)

{

int i,j,k,n=0;

char* s;

float c=0.8,d=0;

memset(cur,0,sizeof(cur));

s=w;

for(i=0;i

{

*(cur[n]+0)=*(s+i);

*(cur[n]+1)=0;

*(cur[n]+2)=0;

*(cur[n]+3)=0;

n++;

}

for(i=0;i

for(j=i+1;j

{

if(*(s+j)==0)

break;

*(cur[n]+0)=*(s+i);

*(cur[n]+1)=*(s+j);

*(cur[n]+2)=0;

*(cur[n]+3)=0;

n++;

}

for(i=0;i<10;i++)

{

if(SizeStr(cur[i])==1)

{

for(j=0;j<10;j++)

{

if(OpD(cur[i],curL1[j]))

{

d=countL3[g]/(float)countL1[j];

if(d>=c)

printf("{I%s}: %f",curL1[i],d);

break;

}

}

}

if(SizeStr(cur[i])==2)

{

for(j=0;j<10;j++)

{

if(OpD(cur[i],curL2[j]))

{

d=countL3[g]/(float)countL2[j];

if(d>=c)

printf("{I%c,I%c}: %f \n",curL2[j][0],curL2[j][1],d);

break;

}

}

}

}

}

最后通过main函数完成整过程序

int main(int argc, char* argv[])

{

int i=0,j=0,k;

char buf[10][6];

char* p[10];

char ch;

memset(buf,0,sizeof(buf));

FILE* fp=fopen("date.txt","r");

if(fp==NULL)

return 0;

ch=fgetc(fp);

while(ch!=EOF)

{

if(ch==0xa || ch==0xd)

{

i++;

ch=fgetc(fp);

j=0;

continue;

}

buf[i][j]=ch;

j++;

ch=fgetc(fp);

}

for(k=0;k<10;k++)

{

*(p+k)=buf[k];

}

LoadItemL1(p);

LoadItemL2(p);

LoadItemL3(p);

LoadItemL4(p);

printf("产生关联规则: \n");

printf("非空子集: 置信度:\n");

for(i=0;i<10;i++)

{

if(curL3[i]!=0 && countL3[i]>=2)

Support(curL3[i],i);

}

return 0;

}


毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

名:       日  期:       

指导教师签名:        日  期:       

使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:        日  期:       


学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名: 日期:

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期:

导师签名: 日期:


指导教师评阅书


评阅教师评阅书


教研室(或答辩小组)及教学系意见


学位论文原创性声明

本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。

学位论文作者(本人签名):

学位论文出版授权书

人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。

论文密级:

公开 保密_____月至____月)(保密的学位论文在解密后应遵守此协议)

作者签名:_______ 导师签名:_______

_________________ _________________


本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。

本声明的法律后果由本人承担。

 

作者签名:

二〇〇年二十

 

毕业设计(论文)使用授权声明

本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。

本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。

(保密论文在解密后遵守此规定)

 

作者签名:

二〇〇年二十


时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。

首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。

首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。

其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。

另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。

最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。

四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。

回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。

学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。

在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。

最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。

本文来源:https://www.2haoxitong.net/k/doc/fe834356e55c3b3567ec102de2bd960591c6d958.html

《基于大数据的数据挖掘算法实现与应用毕业设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式