毕业设计论文_BS架构的数据挖掘系统
中南大学
本科生毕业设计论文(设计)
题目 基于B/S的数据挖掘系统设计与实现 学生姓名
指导老师
学院 信息科学与工程学院 专业班级 电子信息工程0903班 完成时间 2013-5-23
目录
中文摘要
英文摘要
第一章 概论
1.1 课题研究的意义
1.1.1 研究背景
1.1.2 研究意义
1.1.3 术语解释
1.2 国内外研究情况
1.2.1 B/S模式的研究情况
1.2.2 数据挖掘的研究情况
第二章 课题方案研究
2.1 课题要求及规划
2.2 常用开发方式介绍
2.3 Visual Studio 2008和Microsoft SQL Server 2008 R2方案
2.3.1 B/S模式
2.3.2 Microsoft SQL Server 2008 R2
2.3.3 Visual Studio 结合 SQL Server 2008 R2开发模式
第三章 系统设计及算法
3.1 系统总体结构
3.2 系统子功能模块
3.2.1 欢迎和算法介绍模块
3.2.2 数据源和算法选择模块
3.2.3 挖掘结果演示模块
3.3 DMX语言和挖掘模型
3.3.1 模型建立
3.3.2 模型训练
3.3.3 模型使用
3.4 数据挖掘算法
3.4.1 Microsoft中的数据挖掘算法
3.4.2 决策树和线性回归算法
第四章 调试测试结果
3.1 同数据源不同算法
3.2 不同数据源相同算法
3.3 结果分析
第五章 总结及展望
5.1 总结
5.2 展望
参考文献
附录
摘要
数据挖掘(Data Mining)是在大型数据存储库中,自动地发现有用信息的过程。它用来探查大型数据库,发现先前未知的有用模式,并且还能预测未来观测结果。数据挖掘的目的在于如何善用数据,从运营历史的记录奖励,挖掘出深藏其中的宝贵经验。近年来,随着数据挖掘技术的进步发展,它在商业智能领域发挥了极大的作用。它成为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。如何使数据挖掘技术更好地应用于生活生产、交易决策活动中,具有较高的研究价值。
在本文中,从理论和实践上分析了B/S架构下利用ASP.NET 技术开发数据挖掘系统的可行性。展示了该系统对数据源进行挖掘后得到的预测结果,并着重分析了对相同数据源应用不同的挖掘算法及不同的数据源应用相同的挖掘算法得出的不同结果,从而分析算法应用的优劣情况。并详细介绍了系统的架构方法和调试结果,分析了所利用的ASP.NET 、ADO 等WEB 网络技术和数据挖掘中如何采用DMX 语言对挖掘模型的训练,数据挖掘算法比较等。最后,本文通过上述研究成果,总结了该课题的研究过程并探索了该课题的深入方向。
关键词:数据挖掘 商业智能 B/S模式 SSAS
Abstract
Data Mining (Data Mining) is a large data repository, automatically discover useful information. It used to probe a large database, a useful model to discover previously unknown, and can predict future observations. The purpose of data mining is how to make the best use of data from the historical record of the operator reward, digging deep which valuable experience. Recent years, with the progress and development of data mining technology in the field of business intelligence played a significant role. It became the tool into the existing data in the enterprise knowledge to help companies make informed business decisions. How to make data mining techniques used in the production of life, the trading decisions activities, has high research value.
In this article, from the theoretical and practical analysis of the feasibility of the use of the the ASP.NET technology development data mining system B / S structure. Shows the prediction results after the excavation of the system data source, and analyzed the results of different results for different mining algorithms to the same data source applications and different data sources, applications the same mining algorithms to analyze the advantages of the algorithm is applied inferior. And gave details of the system architecture and debug the results of analysis of how to use ASP.NET, ADO WEB network technology and data mining DMX language training of mining models, data mining algorithms compare. Finally, through the research, summed up the subject of the research process and explore the subject in depth direction.
Keywords: data mining, business intelligence B / S mode SSAS
第一章 概述
1.1 课题研究的意义
1.1.1 数据挖掘研究背景
1989年8月在美国底特律召开的第11届国际人工智能联合会议的专题讨论会上首次出现KDD (Knowledge Discovery in Databases)这个术语。KDD ,及知识发现,是从数据集中识别出有效的、新颖的、潜在有用的,以及最终可理解的模式的一个过程。知识发现将信息变为知识,从数据矿山中找到蕴藏的知识金块,将为知识创新和知识经济的发展作出贡献。
为了将数据转化为知识,需要利用数据仓库、联机分析处理(OLAP )工具和数据挖掘(Data Mining)等技术。数据挖掘是在KDD 基础上细化出来的一个概念。最初,数据挖掘只是指在KDD 过程中,利用算法处理数据的一个过程,是KDD 中进行只是学习的阶段,是其中的核心技术。所谓数据挖掘即是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。它经由数据转换、核心算法以及结果表达得以实现。它涉及到对数据库中的大量数据进行抽取、转换、分析以及模型化处理,从中提取辅助决策的关键性数据。数据挖掘可以帮助决策者寻找规律,发现被忽略的要素,预测趋势,进行决策,也是对数据内在和本质的高度抽象与概括。
数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但是潜在有用的信息和知识的一种过程。所以它要求数据源必须是真实的、海量的、含噪声的;发现的只是是用户感兴趣的只是;并且发现的结果是可接受、可理解、可运用的。在技术中,发现的知识并不要求是放之四海而皆准的通用模型,而仅仅要求它是能够适用于特定的数据源的结果。
数据挖掘使数据库技术进入了一个更高级的阶段,它不仅能对过去的数据进行查询和遍历,并且能够找出过去数据之间的潜在联系,从而促进信息的传递。
1.1.2 课题研究的意义
从KDD 这个概念提出至今,数据挖掘技术在各个领域都有着极大的前景。 在医学上,对于庞大的医疗信息记录,数据挖掘技术可以从中挖掘出有用信息和规律,并将这些规律用于医生的诊断过程、对潜在的高患病率的人群进行排查和预防、以及帮助政府制定医疗政策、社区群体进行医疗防护等方面。
在司法政治领域,数据挖掘技术也可以通过分析固定人群的信息数据,从而预测出人们的行为模式,从而更好的帮助人们做出升学、置业等重要决策,也可以帮助制定更能够惠于民的政治策略。
数据挖掘更常用的领域是在现今的商业活动中,决策者往往需要通过既成数据和以往的经验来做出决策判断。决策过程可通过商业智能来帮助决策者。商业智能通常被理解为将企业中现有的数据,如企业业务系统的订单、库存、交易账目、客户和供应商等来自企业所处行业和竞争对手的数据等,转化为知识,帮助企业做出明智的业务经营决策的一种解决方案。
伴随着信息化进程的深入,海量的信息大量积聚,如何能从这些信息中获取有用的知识,并指导人们的日常工作生活,成为了一个至关重要的问题。可以说,把握了海量数据分析处理的方法,就把握了在未来信息化社会里最为重要的一种科技技术力量。
特别要指出的是,数据挖掘技术从一开始就是面向应用的。它不仅是面向特定数据库的简单检索查询调用, 而且要对这些数据进行微观、中观乃至宏观的统计、分析、综合和推理 , 以指导实际问题的求解, 企图发现事件间的相互关联, 甚至利用已有的数据对未来的活动进行预测。但往往由于这些专业知识领域获取困难,使得决策者无法从中得到正确的结论。因此商业智能解决方案变得简洁,易于操作已经成为了一个必然的趋势。
1.1.3 术语解释
(1)B/S架构:全称为Browser/Server,即浏览器/服务器结构。将系统功能实现
的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser ),如Netscape Navigator或Internet Explorer,服务器安装Oracle 、Sybase 、Informix 或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。
(2)数据挖掘:数据挖掘一般是指从大量的数据中自动搜索隐藏于其中的有着
特殊关系性(属于Association rule learning )的信息的过程。用来探查大
型数据库,发现先前未知的有用模式,并且还能预测未来观测结果。
(3)商业智能:商业智能描述了一系列的概念和方法,通过应用基于事实的支
持系统来辅助商业决策的制定。商业智能技术提供使企业迅速分析数据的技术和方法,包括收集、管理和分析数据,将这些数据转化为有用的信息,然后分发到企业各处。
(4)SPSS (Statistical Product and Service Solutions):即统计产品与服务解
决方案。是采用数据挖掘技术的统计产品与服务解决方案。
(5)SSAS (SQL Server Analysis Services):即微软SQL 服务器分析服务。
是Microsoft SQL Sever中提供的集成商业智能分析方案,包含创建复杂数据挖掘解决方案所需的如下功能和工具。可以组合使用这些功能和工具,以发现数据中存在的趋势和模式,然后使用这些趋势和模式对业务难题作出明智决策。
(6)SSIS (SQL Server Integration Services ):即微软SQL 服务器集成服务。
是用于生成企业级数据集成和数据转换解决方案的平台。
1.2 国内外研究情况
1.2.1 B/S模式研究情况
B/S是Brower/Server的缩写,它是在C/S模式的基础上发展起来的一种网络架构技术,近年来随着Internet 技术的兴起,这种方便快捷的技术已经日趋完善,为许多人所采用。在B/S结构中,客户机上只要安装一个浏览器(Browser ),如Netscape Navigator或Internet Explorer,服务器安装Oracle 、Sybase 、Informix 或 SQL Server等数据库和所需要的处理工具。用户即可通过Web Server浏览器同数据库进行数据交互。
相比传统的C/S模式,B/S模式具有维护和升级方式简单、成本低的优点。它可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,无需维护客户端。
在这种结构下,用户界面完全通过WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成由表现层(UI )、业务逻辑层(BLL )、数据访问层(DAL )构成的3层架构(3-tier architecture),从而实现软件高内聚,低耦合的设计准则。
该结构下各层的作用和联系见图一:
图一 B/S模式结构图
数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.
业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
表示层:主要表示WEB 方式,也可以表示成WINFORM 方式,WEB 方式也可以表现成:aspx ,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
B/S结构,利用了不断成熟的WWW 浏览器技术,结合浏览器的多种Script 语言(VBScript、JavaScript …) 和ActiveX 技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。
1.3.2数据挖掘研究情况
数据库中发现知识一词从首次出现于1989年在美国底特律召开的第十一届国际联合人工智能学术会议上,到1995年在加拿大蒙特利尔召开的首届KDD&Data Mining 国际学术会议,再到以后每年都要召开一次的KDD&Data Mining 国际学术会议,经过十多年的努力,数据挖掘技术的研究已经取得了丰硕的成果,不少软件公司已研制出数据挖掘软件产品,并在北美、欧洲等国家得到应用。
经过了24
年的发展,数据挖掘技术已被广泛应用于各个领域。其中一些典
型应用如加州理工学院喷气推进实验室与天文科学家合作开发的SKICAT 系统,能够帮助天文学家发现遥远的类星体,是人工智能技术在天文学和空间科学上的第一批成功应用之一,生物学研究中用数据挖掘技术对DNA 进行分析;利用数据挖掘技术识别顾客的购买行为模式,对客户进行了分析;对银行或保险公司经常发生的诈骗行为进行预测;IBM 公司开发的AS (Advanced Scout )系统针对NBA 的比赛数据,帮助教练优化战术组合等。
与国外相比,国内对数据挖掘的研究稍晚,没有形成整体力量。1993年国家自然科学基金首次支持数据挖掘领域的研究项目,目前,国内的许多科研单位和高等院校竞相开展数据挖掘和知识发现的基础理论及其应用研究,这些单位包括清华大学、中科院计算技术研究所、空军第三研究所、海军装备论证中心等。
在国内应用数据挖掘的企业还是以通信企业(移动、联通、电信)为首,应用的深度和广度都处于领先地位。随着电子商务的普及,各大商务网站已经大规模使用数据挖掘技术,并且迅速从中取得商业价值。例如,国内很多网上商城已经开始使用数据挖掘技术进行客户聚类或者商品关联推广。
展望未来,Gartner 的报告已经指出,数据挖掘会成为未来10年内重要的技术之一。网络化时代使得信息膨胀成为必然,如何准确、高效地从丰富而膨胀的数据中筛选出对经营决策有用的信息已经成为企业和机构迫切需要解决的问题。
未来的数据挖掘技术将侧重在海量数据挖掘、云计算、并行数据挖掘技术、面向数据挖掘的隐私保护技术和数据挖掘集成等方面。
(1)海量数据挖掘:是指应用一定的算法,从海量的数据中发现有用的信息和知识。
(2)云计算:目前云计算的相关应用主要有云物联、云安全、云存储。云存储是在云计算(cloud computing) 概念上延伸和发展出来的新概念,是指通过集
群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。
(3)并行数据挖掘:并行数据挖掘技术能够高效率的进行数据挖掘。处理并行数据挖掘的策略主要涉及三种算法:并行关联规则挖掘算法、并行聚类算法和并行分类算法。
(4)数据挖掘集成:数据挖掘体系框架由三部分组成:数据准备体系、建模与挖掘体系、结果解释与评价体系。其中最为核心的部分是建模与挖掘体系,它主要是根据挖掘主题和目标,通过挖掘算法和相关技术(如统计学、人工智能、数据库、相关软件技术等) ,对数据进行分析,挖掘出数据之间内在的联系和潜在的规律。大体上,数据挖掘应用集成可分为几类:数据挖掘算法的集成、数据挖掘与数据库的集成、数据挖掘与数据仓库的集成、数据挖掘与相关软件技术的集成、数据挖掘与人工智能技术的集成等。
第二章 课题方案研究
2.1 课题要求及规划
课题需要设计一个有利于商业决策者分析、使用数据挖掘系统,它是基于B/S模式的,具有数据挖掘功能的商业智能网站。使用者能够以web 浏览的方式对数据进行查看和分析,并且实现数据预测功能,并且界面友好、操作简单。
(1) 系统功能性要求
任务需要以.NET 技术为支持,做出一个可供使用者以web 浏览的方式对数据进行查看和分析,并且实现数据预测功能的B/S架构的系统。由于数据挖掘要求数据仓库(Data Warehouse )中的数据源具有纯净性,所以需要在数据仓库中得到较为纯净且有代表意义的数据源进行挖掘演示。
系统要求用户能够针对不同的数据源,选用不同的数据挖掘算法,通过对服务器端的数据库进行数据挖掘分析,得出的预测结构通过HTLM 返回用户浏览器端。并比较实际数据源和数据挖掘预测结果,进行算法优劣对比。
(2) 系统性能要求。
系统要求运行性能稳定可靠,具有良好的可扩展性和易维护性,一般应用功能页面调用能够在3秒内完成,复杂报表输出功能操作能够在5秒内完成。当出现操作失败时,程序应该给出详尽的提示信息,不能因此造成程序或系统死机。数据挖掘预测结果需要达到一定的正确率。否则就失去了数据挖掘的意义。错误的预测往往会带来更严重的问题。
在课题的实现过程中,在数据源、数据挖掘算法的选择、DMX 语言对于挖掘模型的创建和训练、B/S架构的方法等方面应该重点关注。
首先,数据挖掘的前提是需要有大量的洁净数据集,即数据没有丢失,数据的类型统一且符合标准。如何得到纯净的数据集,是数据挖掘是否能得以成功的关键点。为方便国内外数据挖掘研究,一些大学或图书馆提供了许多免费的数据源,但这些数据源是未经整理且杂乱的且不能确保完整度的。
其次,针对不同的数据源,需要选用不同的数据挖掘算法。如决策树模型适合处理非数值型才数据,聚类分析模型适合在杂乱的数据集中进行分类处理。当看到数据源时,如何选择合适的数据挖掘算法也是十分重要的。于是,如何选取挖掘模型也具有一定难度。
并且,数据挖掘分析服务中,需要编写DMX 语言进行数据挖掘模型的创建和操作。由于DMX 语言是基于数据定义语言(DDL )、数据操作语言(DML )及函数和运算符等所组成的。应该重点掌握其语法特点和逻辑思路。
最后,B/S架构需要利用ASP.NET 技术进行搭建,如何利用C#脚本语言进行前台搭建,使得系统能方便使用者查询也需要重点考虑。
2.2 常用开发方式介绍
B/S架构的常用开发工具包括B/S一般是由ASP 、PHP 、JSP 和SQL 、Oracle 、Access 数据库技术。依据不同的脚本语言和分层架构方式不同,以及所需要的功能强度要求不一样,可以选择不同的开发语言和后台数据库。
ASP 以VB Script 或C#作为脚本开发语言,是在微软平台上常用的动态网页技术。PHP 借用C 、Java 和Perl 语言的语法,是跨平台的动态网页技术。而JSP 是近年来新出现的技术,结合JAVA Script语言,能够更好的在各平台上开发。
而数据挖掘(Data Mining)软件包市场大概可以分为三类:
(1)一般分析目的用的软件包。如Microsoft SQL Server、SAS Enrerprise Miner 、IBM Intelligence Miner等
(2)针对特定功能或产业而研发的软件。如KDI (针对零售行业)、Options&Choices(针对保险业)、HNC (针对银行信用卡欺诈或坏账检测)等
(3)整合DSS/OLAP/Data Mining的大型分析系统。
2.3 visual studio 2008和Microsoft SQL Server 2008 R2方案
2.3.1 ASP.NET技术下的B/S模式架构
本次设计利用ASP.NET 技术完成B/S(浏览器/服务器模式)模式搭建。在用户终端上安装浏览器软件,在服务器上存放数据并且安装服务应用程序。用户通过浏览器访问服务器,查看相关信息。
Active Server Pages (ASP )提供服务器端脚本编写环境,用户使用ASP 可以创建和进行动态、交互的Web 服务器应用程序,可以组合HTML 页、脚本命令和ActiveX 组件以创建交互的Web 页和基于Web 的功能强大的应用程序。
ASP 页是包括HTML 标记、文本和脚本命令的文件。ASP 页可以调用ActiveX 组件来执行任务,例如连接到数据库或进行商务计算等。通过ASP 可以为Web 页添加交互内容或用HTML 页构成整个Web 应用程序,这些应用程序使用HTLM 页作为客户端的界面。
当浏览器从Web 服务器上请求.asp 文件时就开始运行ASP 脚本,然后Web 服务器调用ASP ,ASP 全面读取请求的文件,执行所有的脚本命令,并将Web
页传送给浏览器。
图二 B/S架构工作原理示意图
由于脚本在服务器上而不是在客户端上运行,传送到浏览器上的Web 页在Web 服务器上生成,所以不必担心浏览器能否处理脚本,Web 服务器已经完成了所有脚本的处理,并将标准的HTML 页传送到了浏览器。由于只有脚本的结构返回到浏览器,所以服务器端脚本不易复制,用户看不到创建链接时正在浏览的页的脚本命令。
ASP 脚本语言通常采用VB 或C#两种,此次设计中采用C#作为ASP 脚本语言。VS 中提供如text 文本框、button 按钮等基本的控件,通过点击控件可进行编程。
利用VS 中的控件,可设计好此系统的界面,并将控件拖入界面的适当位置,双击控件进行网站的脚本动作编程,即可供使用者通过浏览器访问服务器,服务器处理数据后以一个简洁明晰的结果,反馈给使用者。
除了微软公司提供的ASP .NET 的WEB 技术,微软公司近年来退出的ADOMD.NET 插件,为数据挖掘系统的开发提供了另一种可行且便利的方法。ADOMD.NET 是一个标准的.NET 数据提供者,它主要用来与多维数据源进行通信。它使用支持 XML for Analysis version 1.1标准的数据提供者连接数据源,使用TCP/IP或 HTTP 流传输和接受SOAP 请求。使用ADOMD.NET 可以获取和操作多维数据,KPI 和挖掘模型。ADOMD.NET 也可以通过两种方式浏览和操纵元数据:OLEDB Schema Rowsets 或ADOMD.NET 对象模型。
在ADOMD.NET 插件中包含有几个常用控件,这将是在本系统中高频使用到的:
AdomdConnection: 连接多维数据源和多维数据源的元数据。例如:可以通过AdomdConnection 连接SQL Server 2000 Analysis Services 的本地立方
(.cub) 文件,并获取多维数据源的立方的属性以获取它的元数据。AdomdConnection 对象继承IDbConnection 接口。
AdomdCommand :执行MDX 查询,返回CellSet 或AdomdDataReader 对象。当与多维数据源建立连接后,就需要通过AdomdCommand 对象执行MDX 语句,并以CellSet 或者AdomdDataReader 对象的形式返回结果。
AdomdDataReader:快速有效的读取多维数据方法。AdomdDataReader 继承IDbDataAdapter 接口,通过执行AdomdCommand 对象的Execute 或者ExecuteCellSet 方法获取结果。
CellSet :多维数据结果集。通过执行AdomdCommand 对象的Execute 或者ExecuteCellSet 方法返回的MDX 查询语句的结果。一旦AdomdCommand 返回一个CellSet 对象,我们就可以查看包含在CellSet 中的多维数据集。CellSet 常用于多维数据集需要缓存或者更新的时候。
2.3.2 Microsoft SQL Server中的商业智能
在Microsoft SQL Server 2008中集成了常用的数据挖掘算法,通过调用这些算法,就可以在一定程度上避免在数据挖掘过程中的复杂算法设计。在BI 组件中,可以提供数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策的解决方案。其主要可以实现自动预测趋势和行为、关联分析、聚类、概念描述、偏差检测等五种功能。
Microsoft SQL SERVER 2008中包含Bussiness Intelligence Development Studio (BI 应用程序开发工具集),该工具集提供了包括SSPS 、SSAS 和SSIS 三大部分的专门针对商业智能的解决方案。有两种方法可以进行数据挖掘开发:一是使用BI 工具集可进行数据挖掘开发,同时可以使用SQL Server Management Studio 来操做和维护BI 数据库对象。二是利用微软提供的ADOMD.NET 插件,在微软的Microsoft Visual Studio2008开发环境中,完成SQL Server Analysis Service 型数据库的连接操作,并利用它提供的运行DMX 数据挖掘语言的相应的接口函数在VS2008开发环境中完成数据挖掘模型的训练。
DMX 语言是为了能够使普通的数据库开发人员能够轻松使用,而不仅仅是为了专家而设计的语言。用DMX 语言进行数据挖掘的优势在于:数据挖掘功能可以全部用语句来实现,我们可以将这些语句嵌入其它的MIS 或ERP 系统中,实现有机整合。所以它具有非常好的普适性。在Microsoft 中为了进行SSAS 的数据挖掘开发,就需要使用到DMX 语言对数据挖掘的模型进行创建、训练以及使用(预测)。使用DMX 语言处理过后的挖掘模型即可得到预测结果值。
这样,通过Microsoft SQL Server 2008 R2数据库环境,就可以完成全部的基
本数据挖掘功能。它是易于上手且功能强大的数据挖掘工具。
2.3.3 Visual Studio 结合 SQL Server 2008 R2开发模式
在诸多数据挖掘开发方案中,本次设计选择的是Visual Studio 2008结合Microsoft SQL Server 2008 R2的开发方案。
这是因为,一方面SQL Server能让用户利用Microsoft.NET 与Visual Studio开发定制化应用程序,以及通过Microsoft BizTalk Server 内的面向服务架构(SOA )与业务程序来访问数据。基于Visual Studio集成开发环境的ASP.NET 技术,以及SQL Server 都是由微软公司开发完善的,所以利用两者结合可以具有很好的兼容性和普适性。
另一方面,信息工作者也能使用SQL Server直接访问他们每日使用的数据,如Micrsoft Office 2007 System。它所提供高信赖度、高生产力与商业智能的信息平台,能够符合用户的所有数据需求。
其开发方式通常是下面这种流程(见图三)。在本设计中,以Microsoft SQL Server 2008 R2开发版本,主要利用其中的Analysis Services(即SSAS )模块进行数据挖掘功能的开发和管理。同时,利用微软提供的ADOMD.NET 插件,可以在微软的Microsoft Visual Studio2008开发环境中,完成了SQL SERVER ANALYSIS SERVICE 型数据库的连接操作,并利用它提供的运行DMX 数据挖掘语言的相应的接口函数在VS2008开发环境中完成数据挖掘模型的训练。
图三 数据挖掘系统开发流程
第三章 系统设计及算法
3.1 系统总体结构
本系统主要需要在Visual Studio 开发平台上,以.NET 技术为支持,做出一个可供使用者以web 浏览的方式对数据进行查看和分析,并且实现数据预测功能的,有数据挖掘功能的系统。在设计中将主要的功能模块分成身份验证模块和数据挖掘演示模块两个部分。系统的功能结构图见图四:
图四 系统功能结构图
用户登录模块:此功能要求能够区分系统使用者和游客等不同身份的使用者。系统在登录功能里,根据用户名和密码,来赋予不同使用者对系统的使用权限。从而提高系统的安全性。
数据挖掘模块:该模块是系统的核心模块。通过对数据仓库中的数据模型的创建和训练,成为可供挖掘的分析型数据集。在该功能模块里使用者可以通过选择不同的数据源和不同的数据挖掘算法对其进行挖掘算法的演示,挖掘得到的结果会按要求显示出来,并且能够通过比对实际值,来估计挖掘算法的优良程度。
数据仓库和BI 数据挖掘模块:这个模块是系统的底层的数据库部分,它位于服务器端。该部分是SQL SERVER ANALYSIS SERVICE型的数据库,该
类型的数据库是专门用于SQL 数据分析的数据仓库。在此模块中,还内部集成了Microsoft SQL Server中的一些常用的数据挖掘算法,通过DMX 语言对数据仓库中的数据模型的创建和训练,同时为其选择合适的数据挖掘算法,就能使之成为可供挖掘的分析型数据集。
3.2 系统子功能模块
本文在这个部分将以系统的功能结构,分模块介绍该系统的设计思路和方法。
3.2.1 欢迎界面和算法介绍模块
使用者从浏览器端打开此系统,首先会显示出系统的欢迎页面(见图四)。点击DMX 数据挖掘即可进入挖掘系统。在挖掘系统中,首先会展示系统中的源数据,包括一个三国志4游戏人物的特征数据表和一个高中学生考学情况的数据表(见图五)。
图四 系统欢迎界面
因为数据挖掘在DMX 创建挖掘模型阶段,并不会将源数据中的每一列都一一映射到挖掘模型中,而是会挑选出关键列的事例和属性,生成挖掘模型。所以,在挖掘前,需要向使用者展示源数据情况,方便其了解源数据的各种具体参数,也利于使用者选择挖掘算法,进行下一步操作。
这个模块里,并没有集成主要的系统逻辑代码。而是通过拖动VS 开发平台的控件来实现这些功能的。
图五 源数据展示
2.2 挖掘算法选择模块
在这个模块(界面见图六)里,用户需要按自己的需求选择相应的数据源和对应算法。系统提供sanguo 、shengxue 两个数据源和决策树、线性回归两种算法。使用者就可以得到四种预测结果。通过比对这些结果可以评估算法的适合及优良程度。
图六 数据源和挖掘算法选择界面
3.2.3 挖掘结果展示模块
使用者提交了源数据及算法的选择后,会跳转到对应的挖掘结果展示模块(界面见图七)。模块中会显示出挖掘模型里用到的参考项、预测项以及预测项的实际数值项,并将这些结果都通过表格展示出来。
系统的主要逻辑代码都集中在这个模块的设计中。在VS 中设计了4个aspx 文件,对四种挖掘组合进行编程。
此处选取其中的一种情况,结合源代码解释一下开发方式。其他三种情况是类同的,就不一一介绍了。
首先,需要编写数据库的连接代码。
SqlConnection con = new SqlConnection();
constr2 = "server=ADMIN-PC\SQLEXPRESS;uid=sa;pwd=123;database=flag; Max Pool Size=100; Min Pool Size=8";
con.ConnectionString = constr2;
con.Open();
SqlCommand sm = new SqlCommand();
sm.Connection = con;
con.Close();
AdomdConnection conn = new AdomdConnection();
connstr = "Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=sany;Data Source=AI";
conn.ConnectionString = connstr;
conn.Open();
string tdb = conn.Database;
Label1.Text = "连接成功";
连接数据库后,需要用DMX 语言处理挖掘模型,具体方法在下一节详细介绍。数据挖掘预测完毕之后,要以表格形式显示相关的数据结果,显示结果的代码部分见下:
DataTable dt = new DataTable();
dt.TableName = "resulttable";
DataColumn dc = new DataColumn();
DataRow dr = null;
dt.Columns.Add(new DataColumn("Description"));
//定义一个列表,并将其内元素设为空,为其添加描述性行头。
string name;
foreach (Position p in cs.Axes[0].Positions)
{
dc = new DataColumn();
name = "";
foreach (Member m in p.Members)
{
name = name + m.Caption + " ";
}
dc.ColumnName = name;
dt.Columns.Add(dc);
}//生成数据列对象的列名称
int pos = 0;
foreach (Position py in cs.Axes[1].Positions)
{
dr = dt.NewRow();
name = "";
foreach (Member m in py.Members)
{
name = name + m.Caption + "\r\n";
}
dr[0] = name;
for (int x = 1; x
{
dr[x] = cs[pos++].FormattedValue;
}
dt.Rows.Add(dr);
}//向表格中逐列添加数据值
return dt;
}
挖掘结果显示完毕之后,用户可以通过首页按钮返回系统首页,然后重新选择其他的数据源和算法。
3.3 数据挖掘模型建立和训练
本次设计中,需要使用DMX (Data Mining Extension)语言,DMX 的意义在于为数据挖掘定义统一的概念和统一的查询表达方式,它如同与数据库中SQL 语言所起的作用。DMX 语言由数据定义语言(Data Definition Language,DDL ),
数据操作语言(Data Manipulation Language,DML ),以及函数和运算符等所组成。
DMX 语言的产生,是因为,在数据挖掘市场上有许多数据挖掘产品,每个产品都以自己特有的方式来描述和构建数据挖掘应用程序,大多数数据挖掘工具包都有它们自己的算法、自己的模型模式浏览和存储格式、自己的数据清理工具乃至自己的报表生成工具。这样的方式将数据挖掘系统与企业操作系统隔离开了,从而增加了实现数据挖掘解决方案的难度和成本。
DMX 语言在Microsoft SQL Server中,是用于创建数据挖掘模型的结构、训练这些模型,以及浏览、管理与预测模型的表达式语言。采用表达式语言很容易让数据库开发人员所理解,所以它具有比较好的可读性和可维护性。区别于高级的开发语言,DMX 语言不涉及复杂的算法,它只是提供了可供讨论的数据挖掘问题的详细语言。DMX 只有通过DMX 语言训练过的挖掘模型,才能进行高层的、自定义化的数据挖掘阶段的开发。
基于挖掘阶段,可分为三个部分。分别为模型建立、模型训练、模型的使用。
3.3.1 模型建立
使用DMX 建立模型的意义主要在于告诉计算机,你将以什么样的算法提取出什么样的模式来处理数据,从而推演出新的范例。
数据挖掘的过程是直接作用于事例和属性的。在挖掘之前,必须要通过定义挖掘结构和建立挖掘模型,把数据库中数据表里的数据转换成供挖掘的事例和属性。
挖掘结构帮助定义挖掘模型时要依据的数据。它指定源数据视图、列的数量和类型,指定算法和模式以及分为定型集和预测集的可选分区,起一个描述符的作用。而挖掘模型是一个对象,它将数据行转换为事例,并使用特定的数据挖掘算法进行计算机学习。
用DMX 建立模型的过程,就是数据挖掘过程里挖掘结构定义的部分。 在本次设计中,分别对两个数据源进行了数据挖掘模型的建立,建立过程的主要代码见下(红色部分为创建挖掘模型的DMX 语言,黑色部分的是使用ADOMD.NET 技术对多维数据集的连接和接收数据的C#语言):
AdomdCommand cmd1 = new AdomdCommand();
cmd1.Connection = conn;
cmd1.CommandText = "create mining model cmm(xuhao long key,wuli long continuous,zhihui long continuous,shengfen2 text discrete predict)
//此处创建了一个名为cmm 的数据挖掘模型、其中包含了xuhao 、wuli 、
zhihui 、shenfen2四列,它们的类型分别是long 、long continues、longcontinues 和text 。其中需要特别注意的是前三列是定型集、shengfen2列是预测集。
using microsoft_decision_trees";//此处定义了所选择的挖掘算法和处理模式 cmd1.Execute();
conn.Close();
3.3.2 模型训练
在模型的创建阶段,定义了数据挖掘的模式,并描述了具体的事例和属性。在模型训练阶段,则是实际的将AS 型数据库中的数据源一一对应到模型中。在模型的训练阶段,也需要指定所训练的挖掘结构,然后再插入对应的源数据。
在语法上,建立模型和训练模型十分相似。具体代码见下(红色部分为创建挖掘模型的DMX 语言,黑色部分的是使用ADOMD.NET 技术对多维数据集的连接和接收数据的C#语言):
conn.Open();
AdomdCommand cmd2 = new AdomdCommand();
cmd2.Connection = conn;
cmd2.CommandText = "insert into mining model cmm
//挖掘模型的名称为cmm
(xuhao,wuli,zhihui,shengfen2)
select(sanguo,select xuhao,wuli,zhihui,shengfen from sanguo.dbo.[sanguozhi]')"; //从sanguo 数据库的sanguozhi 表中查找xuhao 、wuli 、zhihui 、shenfen 这4列源数据,以填充模型,完成对模型的训练。
cmd2.Execute();
conn.Close();
3.3.3 模型使用(预测)
完成模型的创建和训练后,则可使用模型进行数据挖掘预测。预测期间源查询中未提供得任何输入都认为是MISSING ,Microsoft SQL Server会将被定义为PREDICT 的预测列自动认为成是MISSING 的,而如何处理缺失的数据是由各个数据挖掘算法决定的。
从数据挖掘算法中需要先提取模式,然后便可使用提取的模式进行审查,或推导出新范例的信息。而数据挖掘这一过程的难度则是以某种方式形成这些范例,从而使提取的模式是有用的、可提供信息的和准确的。
在用DMX 语言预测模型的时候,因为在Microsoft SQL Server中已经集成了9种数据挖掘算法,它们将会对模型中的事例和属性进行模式的提取,从而推导出未知的PREDICT 项的情况。
模型使用(训练)过程的具体代码见下(红色部分为创建挖掘模型的DMX 语言,黑色部分的是使用ADOMD.NET 技术对多维数据集的连接和接收数据的C#语言):
AdomdCommand cmd = new AdomdCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT t.xuhao,t.[name],t.wuli,t.zhihui,
t.shengfen,cmm.shengfen2 FROM cmm PREDICTION JOIN
select(Sanguo,'SELECT [name], xuhao, wuli, zhihui, shengfen FROM
dbo.sanguozhi') AS t ON cmm.wuli = t.wuli AND cmm.zhihui = t.zhihui AND t.shengfen=cmm.shengfen2";
//
AdomdDataReader rdr = cmd.ExecuteReader();
DataTable dtNew = new DataTable();
dtNew.TableName = "sanguozhi";
dtNew.Columns.Add("xuhao", typeof(string));
dtNew.Columns.Add("name", typeof(string));
dtNew.Columns.Add("wuli", typeof(string));
dtNew.Columns.Add("zhihui", typeof(string));
dtNew.Columns.Add("shengfen", typeof(string));
dtNew.Columns.Add("shengfen2", typeof(string));
3.4 数据挖掘算法
数据挖掘经过十几年的研究,已经取得了一些成绩。近年来,国际上有很多针对于数据挖掘的算法和理论被提出及完善。
数据挖掘算法可以说是数据挖掘的核心,好的算法能够更好的预测模型,提高准确率,也可以更高效的完成挖掘任务。
在这一小节,将针对Microsoft SQL Server提供的决策树、贝叶斯分类器、关联规则、聚类分析、时序聚类、线性回归、逻辑回归、人工神经网络、时序算法模型的九种算法模型进行介绍,同时会着重介绍在本系统中采用到的决策树算法模型和线性回归算法模型的原理和应用。
3.4.1 Microsoft SQL Server中的数据挖掘算法
Microsoft 中提供的算法是长期研究和实践后得出的常用模板。它能够解决常见的问题,甚至在某些专业领域也能得到良好的运用。以下分类介绍以下九种算法:
(1)决策树模型:决策树是从一个或多个预测变量中,针对类别因变量的层级,预测事例或对象的关系,是数据挖掘中的一项主要的技巧。决策树的目标是针对类别因变量加以预测或解释反应结果。
(2)贝叶斯分类器:通过训练样本学习记忆分类,根据所使用属性的关系,产生这些训练样本的中心概念,再用学习后的中心概念对未归类的数据对象进行类别预测,以得到受测试数据对象的目标值。它采用监督式的学习方式,因此在进行分类之前,需要实现知道分类的类型。
(3)关联规则模型:是分析数据库中不同变量或个体之间的关系程度,用这些股则找出目标行为模式的方法。支持度和信赖度是该规则的主要参数,它们是指对于X 和Y 项目组,支持度是同事发生X 、Y 事件的概率,而信赖度是在X 事件发生的情况下,Y 事件发生的概率。
(4)聚类模型:聚类算法是指通过样本的分组,寻找到多变量结果当中的差异之处的一种算法。
(5)回归模型:是以一个活多个自变量描述、预测或控制一特定因变量的分析算法。
(6)神经网络模型:以神经元的数学模型为基础来描述的。模型由由网络拓扑.节点特点和学习规则来表示。它由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。
(7)时序算法:时序算法是专门针对于按时间变化而发生的一系列有规则的变化而来的算法。其目的主要是在于对时序的未来数值提供良好的预测。
3.4.2 决策树和线性回归模型
决策树是数据挖掘中一项主要的技巧。它是以实例为基础的归纳学习算法,着眼于从一组无次序/无规律的事例中推想出决策树表示形式的分类规则。它是基于贪心算法而来的一种算法。它是以自顶向下递归,逐个击破的方法构建的。是一种非常灵活的算法。
它的创建包括三种方式:
(1) 针对类别预测变量,计算以单变量分裂为基础的二元决策树。
(2) 针对顺序预测变量,计算以单变量分裂为基础的二元决策树(或者至
少是顺序尺度的)
(3) 针对两类方式的预测变量,计算以单变量分裂为基础的二元决策树。 我们一般认为,决策树是将最有可能发生的事情预测出来,但是在现实使用中,精确预测的操作很难实现。所以,在典型应用中,将事例被错误分类的情况发生的比例。因此,成本越小,事例遭到混合分类的情况就相对减少,预测的精确性就越高。在构建决策树的过程中,遵循成本最小化的贪心算法。
而线性回归模型其实可以认为是决策树算法的一种变体。如果选择线性回归算法,将会调用到带有参数的决策树算法的特例,这些参数不但会限定算法行为,而且会要求输入数据的类型。它的用途非常广泛,尤其是对于那些不能以实验方法取得的社会现象的研究分析。
对于线性回归算法,极为重要的是了解其自变量与因变量关系方向及强度,以及以自变量所建立模型对因变量做出的预测。
第四章 调试测试结果
3.1 同数据源不同算法
用决策树模型对三国志源数据进行挖掘结果图(图八):
用线性回归模型对三国志数据源进行挖掘结果图(图九):
3.2 不同数据源相同算法
用决策树模型对三国志数据源进行挖掘结果图(图八):
用决策树模型对高中升学数据源进行挖掘结果图(图九):
3.3 结果分析
通过上述结果的比对,对于同数据源不同算法的情况,可以发现两种算法的得出来的预测结果差异性并不是很大,这是因为,一是线性回归算法从本质上说就是一种带参的决策树算法,其次,系统所选取的数据源类型不多且数据量也比较小。
而针对于不同数据源相同的算法这种情况,发现利用Microsoft SQL Server中自集成的算法模型,对不同的数据源和数据类型进行预测,都能够得到较好的
预测结果。这就验证了数据挖掘的可行性和有效性。
第五章
5.1 总结
本此设计主要完成了以下的工作: 总结及展望
1.调研总结和详细阐述了数据挖掘的技术和方法,对开发数据仓库和数据挖掘的工具进行了研究,并最终选择了Microsoft SQL Server 2008 R2 及
Microsoft Visual Studio 2008相结合的开发方式进行数据挖掘系统的研发。为成功建立数据挖掘系统奠定了基础。
2.详细研究了如何用Microsoft SQL Server中的DMX 语言进行数据挖掘模型的创建、训练、使用(预测)的方法。
3.总结和阐述了经常使用的一些数据挖掘算法,并且重点介绍了决策树和线性回归算法。
4.运用维度建模的方法建立了系统的信息模型,通过编程实现了一个模拟演示的B/S架构的数据挖掘系统系统,并对此系统在数据挖掘的功能上进行了比对研究。
5.2 展望
在本次设计中,虽然依照要求完成了数据挖掘系统基本框架的开发。但是,还是有很多方面可以做到更好,精益求精。
数据挖掘技术是一个新兴的技术,它本身就是迅速发展的高技术高科技产物。由于时间、条件和自身水平的限制,在加上本人学习数据挖掘时间不太长,所以本文所做的工作还不能说是一个完整的决策系统。本文只是实现了这个系统的基本过程,就系统本身而言还存在许多不足,需要进一步完善。
本次设计在这几个方面还可以进行完善:
因此今后还需要在数据挖掘方面继续学习,以便建立更便于使用、功能更完善的数据挖掘系统。