数据挖掘技术的算法与应用读书报告
Posted 马如林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘技术的算法与应用读书报告相关的知识,希望对你有一定的参考价值。
数据挖掘作为现在比较有用的支持决策系统的一种手段有着广泛的应用。其有很多种方法,本文主要基于关联规则类等相关问题进行论述。按照挖掘过程进行组织。首先,有数据仓库的建立和数据挖掘的概述。其次是关联规则的挖掘,后来就是挖掘结果的可视化等方面的内容。在其中不仅有基本概念、原理、方法等。还有对最新的方法的分析研究和提高等。 目录 第一章数据仓库... 5 1.1 概论... 5 1.2 数据仓库体系结构... 6 1.3 数据仓库规划、设计与开发... 6 1.3.1 确定范围... 7 1.3.2 环境评估... 7 1.3.3 分析... 7 1.3.4 设计... 7 1.3.5 开发... 8 1.3.5 测试... 8 1.3.6 运行... 8 1.4 小结... 8 第二章数据挖掘... 8 2.1 概论... 8 2.2 数据挖掘研究的内容和本质... 9 2.2.1、广义知识... 9 2.2.2、关联知识... 10 2.2.3、分类知识... 10 2.2.4、预测型知识... 10 2.3 数据挖掘流程... 11 2.3.1、确定业务对象... 11 2.3.2、数据准备... 11 2.3.3 数据挖掘... 12 2.3.4 结果分析... 12 2.3.5 知识的同化... 12 2.4 数据挖掘未来研究方向及热点... 12 2.4.1 网站的数据挖掘... 13 2.4.2 生物信息或基因数据挖掘... 13 2.4.3 文本的数据挖掘... 14 2.5 小结... 14 第三章 关联规则... 14 3.1 概论... 14 3.2 基本概念... 15 3.3 关联规则种类... 15 3.4 频集算法的几种优化方法... 17 3.4.1 基于划分的方法... 17 3.4.2 基于Hash的方法... 17 3.4.3 基于采样的方法... 17 3.4.4 减少交易的个数... 18 3.4.5 其他的频集挖掘方法... 18 3.5 多层和多维关联规则的挖掘... 18 3.6 关联规则价值衡量的方法... 20 3.6.1 系统客观层面... 20 3.6.2 用户主观层面... 20 第一章 数据仓库 1.1 概论 传统数据库在日常的管理事务处理中获得了巨大的成功,但是对管理人员的决策分析要求却无法满足。因为,管理人员常常希望能够对组织中的大量数据进行分析,了解业务的发展趋势。而传统数据库只保留了当前的业务处理信息,缺乏决策分析所需要的大量历史信息。为满足管理人员的决策分析需要,就需要在数据库的基础上产生适应决策分析的数据环境——数据仓库(DW,Data Warehouse)。 [1] 目前,数据仓库一词尚没有一个统一的定义,著名的数据仓库专家W。H。Inmon在其著作《Building the Data Warehouse》一书中给予如下描述:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。对于数据仓库的概念我们可以从两个层次予以理解,首先,数据仓库用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。 根据数据仓库概念的含义,数据仓库拥有以下四个特点: 1 、面向主题。操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织。主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。 2 、集成的。面向事务处理的操作型数据库通常与某些特定的应用相关,数据库之间相互独立,并且往往是异构的。而数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。 3 、相对稳定的。操作型数据库中的数据通常实时更新,数据根据需要及时发生变化。数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。 4 、反映历史变化。操作型数据库主要关心当前某一个时间段内的数据,而数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。 通过利用数据仓库系统,人们可以获得许多方面的知识。[7] 1.2数据仓库体系结构 企业数据仓库的建设,是以现有企业业务系统和大量业务数据的积累为基础。数据仓库不是静态的概念,只有把信息及时交给需要这些信息的使用者,供他们做出改善其业务经营的决策,信息才能发挥作用,信息才有意义。而把信息加以整理归纳和重组,并及时提供给相应的管理决策人员,是数据仓库的根本任务。因此,从产业界的角度看,数据仓库建设是一个工程,是一个过程。整个数据仓库系统是一个包含四个层次的体系结构,具体由下图表示:
数据挖掘环境可示意如下图:


数据挖掘过程的分步实现,不同的步会需要是有不同专长的人员,他们大体可以分为三类。 业务分析人员 :要求精通业务,能够解释业务对象,并根据各业务对象确定出用于数据定义和挖掘算法的业务需求。 数据分析人员 :精通数据分析技术,并对统计学有较熟练的掌握,有能力把业务需求转化为数据挖掘的各步操作,并为每步操作选择合适的技术。 数据管理人员 :精通数据管理技术,并从数据库或数据仓库中收集数据。
从上可见,数据挖掘是一个多种专家合作的过程,也是一个在资金上和技术上高投入的过程。这一过程要反复进行牞在反复过程中,不断地趋近事物的本质,不断地优先问题的解决方案。数据重组和细分添加和拆分记录选取数据样本可视化数据探索聚类分析神经网络、决策树数理统计、时间序列结论综合解释评价数据知识数据取样数据探索数据调整模型化评价。 [9] 2.4 数据挖掘未来研究方向及热点 当前,DM/KDD研究方兴未艾,其研究与开发的总体水平相当于数据库技术在70年代所处的地位,迫切需要类似于关系模式、DBMS系统和SQL查询语言等理论和方法的指导,才能使DM/KDD的应用得以普遍推广。预计在本世纪,DM/KDD的研究还会形成更大的高潮,研究焦点可能会集中到以下几个方面: 发现语言的形式化描述,即研究专门用于知识发现的数据挖掘语言,也许会像SQL语言一样走向形式化和标准化; 寻求数据挖掘过程中的可视化方法,使知识发现的过程能够被用户理解,也便于在知识发现的过程中进行人机交互; 研究在网络环境下的数据挖掘技术(WebMining),特别是在因特网上建立DM/KDD服务器,并且与数据库服务器配合,实现WebMining; 加强对各种非结构化数据的开采(DataMiningforAudio&Video),如对文本数据、图形数据、视频图像数据、声音数据乃至综合多媒体数据的开采; 处理的数据将会涉及到更多的数据类型,这些数据类型或者比较复杂,或者是结构比较独特。为了处理这些复杂的数据,就需要一些新的和更好的分析和建立模型的方法,同时还会涉及到为处理这些复杂或独特数据所做的费时和复杂数据准备的一些工具和软件。 交互式发现; 知识的维护更新。 但是,不管怎样,需求牵引与市场推动是永恒的,DM/KDD将首先满足信息时代用户的急需,大量的基于DM/KDD的决策支持软件产品将会问世。 就目前来看,将来的几个热点包括网站的数据挖掘(Web site data mining)、生物信息或基因(Bioinformatics/genomics)的数据挖掘及其文本的数据挖掘(Textual mining)。下面就这几个方面加以简单介绍。 2.4.1 网站的数据挖掘 需求随着 Web技术的发展,各类电子商务网站风起云涌,建立起一个电子商务网站并不困难,困难的是如何让您的电子商务网站有效益。要想有效益就必须吸引客户,增加能带来效益的客户忠诚度。电子商务业务的竞争比传统的业务竞争更加激烈,原因有很多方面,其中一个因素是客户从一个电子商务网站转换到竞争对手那边,只需点击几下鼠标即可。网站的内容和层次、用词、标题、奖励方案、服务等任何一个地方都有可能成为吸引客户、同时也可能成为失去客户的因素。而同时电子商务网站每天都可能有上百万次的在线交易,生成大量的记录文件(Logfiles)和登记表,如何对这些数据进行分析和挖掘,充分了解客户的喜好、购买模式,甚至是客户一时的冲动,设计出满足于不同客户群体需要的个性化网站,进而增加其竞争力,几乎变得势在必行。若想在竞争中生存进而获胜,就要比您的竞争对手更了解客户。 电子商务网站数据挖掘,在对网站进行数据挖掘时,所需要的数据主要来自于两个方面:一方面是客户的背景信息,此部分信息主要来自于客户的登记表;而另外一部分数据主要来自浏览者的点击流(Click-stream),此部分数据主要用于考察客户的行为表现。但有的时候,客户对自己的背景信息十分珍重,不肯把这部分信息填写在登记表上,这就会给数据分析和挖掘带来不便。在这种情况之下,就不得不从浏览者的表现数据中来推测客户的背景信息,进而再加以利用。 就分析和建立模型的技术和算法而言,网站的数据挖掘和原来的数据挖掘差别并不是特别大,很多方法和分析思想都可以运用。所不同的是网站的数据格式有很大一部分来自于点击流,和传统的数据库格式有区别。因而对电子商务网站进行数据挖掘所做的主要工作是数据准备。目前,有很多厂商正在致力于开发专门用于网站挖掘的软件。 2.4.2 生物信息或基因数据挖掘 生物信息或基因数据挖掘则完全属于另外一个领域,在商业上很难讲有多大的价值,但对于人类却受益非浅。例如,基因的组合千变万化,得某种病的人的基因和正常人的基因到底差别多大?能否找出其中不同的地方,进而对其不同之处加以改变,使之成为正常基因?这都需要数据挖掘技术的支持。 对于生物信息或基因的数据挖掘和通常的数据挖掘相比,无论在数据的复杂程度、数据量还有分析和建立模型的算法而言,都要复杂得多。从分析算法上讲,更需要一些新的和好的算法。现在很多厂商正在致力于这方面的研究。但就技术和软件而言,还远没有达到成熟的地步。 2.4.3 文本的数据挖掘 人们很关心的另外一个话题是文本数据挖掘。举个例子,在客户服务中心,把同客户的谈话转化为文本数据,再对这些数据进行挖掘,进而了解客户对服务的满意程度和客户的需求以及客户之间的相互关系等信息。从这个例子可以看出,无论是在数据结构还是在分析处理方法方面,文本数据挖掘和前面谈到的数据挖掘相差很大。文本数据挖掘并不是一件容易的事情,尤其是在分析方法方面,还有很多需要研究的专题。目前市场上有一些类似的软件,但大部分方法只是把文本移来移去,或简单地计算一下某些词汇的出现频率,并没有真正的分析功能。 随着计算机计算能力的发展和业务复杂性的提高,数据的类型会越来越多、越来越复杂,数据挖掘将发挥出越来越大的作用。 [9] 2.5 小结 本章主要介绍数据挖掘的相关知识。看看是否发现有什么可以研究的,并了解其过程以及未来研究的方向热点等问题。 第三章 关联规则 3.1 概论 数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。 关联规则挖掘发现大量数据中项集之间有趣的关联或相关联系。它在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究。关联规则挖掘的一个典型例子是购物篮分析。关联规则研究有助于发现交易数据库中不同商品(项)之间的联系,找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响。分析结果可以应用于商品货架布局、货存安排以及根据购买模式对用户进行分类。 Agrawal等于 1993年首先提出了挖掘顾客交易数据库中项集间的关联规则问题,以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。他们的工作包括对原有的算法进行优化,如引入随机采样、并行的思想等,以提高算法挖掘规则的效率;对关联规则的应用进行推广。 最近也有独立于 Agrawal的频集方法的工作,以避免频集方法的一些缺陷,探索挖掘关联规则的新方法。也有一些工作注重于对挖掘到的模式的价值进行评估,他们提出的模型建议了一些值得考虑的研究方向。 现在面临一个尴尬的境地——数据丰富信息匮乏(data rich but information poor)!快速增长的海量数据,已经远远的超过了人们的理解能力,如果不借助强有力的工具,很难弄清大堆数据中所蕴含的知识。结果,重要决策只是基于制定决策者的个人经验,而不是基于信息丰富的数据。数据挖掘就这样应运而生,数据挖掘填补了数据和信息之间的鸿沟。 [11] 3.2 基本概念
在1993年,R.Agrawal等人首次提出了关联规则的概念。
支持度(support)和置信度(confidence)两个阈值是描述关联规则的两个重要概念,支持度反映关联规则在数据库中的重要性,置信度衡量关联规则的可信程度。如果某条规则同时满足最小支持度(min-support)和最小置信度(min-confidence),则称它为强关联规则。
3.3 关联规则种类 我们将关联规则按不同的情况进行分类: (1) 基于规则中处理的变量的类别,关联规则可以分为布尔型和数值型。布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变量之间的关系;而数值型关联规则可以和多维关联或多层关联规则结合起来,对数值型字段进行处理,将其进行动态的分割,或者直接对原始的数据进行处理,当然数值型关联规则中也可以包含种类变量。例如:性别=“女”=>职业=“秘书” ,是布尔型关联规则;性别=“女”=>avg(收入)=2300,涉及的收入是数值类型,所以是一个数值型关联规则。 (2) 基于规则中数据的抽象层次,可以分为单层关联规则和多层关联规则。在单层的关联规则中,所有的变量都没有考虑到现实的数据是具有多个不同的层次的;而在多层的关联规则中,对数据的多层性已经进行了充分的考虑。例如:IBM台式机=>Sony打印机,是一个细节数据上的单层关联规则;台式机=>Sony打印机,是一个较高层次和细节层次之间的多层关联规则。 (3) 基于规则中涉及到的数据的维数,关联规则可以分为单维的和多维的。在单维的关联规则中,我们只涉及到数据的一个维,如用户购买的物品;而在多维的关联规则中,要处理的数据将会涉及多个维。换成另一句话,单维关联规则是处理单个属性中的一些关系;多维关联规则是处理各个属性之间的某些关系。例如:啤酒=>尿布,这条规则只涉及到用户的购买的物品;性别=“女”=>职业=“秘书”,这条规则就涉及到两个字段的信息,是两个维上的一条关联规则。 4 关联规则挖掘的算法(1) 经典频集方法
Agrawal等于1993年首先提出了挖掘顾客交易数据库中项集间的关联规则问题,其核心方法是基于频集理论的递推方法。以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。他们的工作包括对原有的算法进行优化,如引入随机采样、并行的思想等,以提高算法挖掘规则的效率;提出各种变体,如泛化的关联规则、周期关联规则等,对关联规则的应用进行推广。 (2) 核心算法 Agrawal等在 1993年设计了一个基本算法,提出了挖掘关联规则的一个重要方法 — 这是一个基于两阶段频集思想的方法,将关联规则挖掘算法的设计可以分解为两个子问题: (1)找到所有支持度大于最小支持度的项集( Itemset),这些项集称为频集(Frequent Itemset)。 (2)使用第 1步找到的频集产生期望的规则。这里的第2步相对简单一点。如给定了一个频集Y=I1I2...Ik,k³2,Ij∈I,产生只包含集合I1,I2,...,Ik中的项的所有规则(最多k条),其中每一条规则的右部只有一项,(即形如[Y-Ii]ÞIi,"1£i£k),这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递推的方法。其核心思想如下: (1) L1 = large 1-itemsets; (2) for (k=2; Lk-1¹F; k++) do begin (3) Ck=Apriori-gen(Lk-1); //新的候选集 (4) for all transactions tÎD do begin (5) Ct=subset(Ck,t); //事务 t中包含的候选集 (6) for all candidates cÎ Ct do (7) c.count++; (8) end (9) Lk=cÎ Ck |c.count³minsup (10) end (11) Answer=ÈkLk; 首先产生频繁 1-项集L1,然后是频繁2-项集L2,直到有某个r值使得Lr为空,这时算法停止。这里在第k次循环中,过程先产生候选k-项集的集合Ck,Ck中的每一个项集是对两个只有一个项不同的属于Lk-1的频集做一个(k-2)-连接来产生的。Ck中的项集是用来产生频集的候选集,最后的频集Lk必须是Ck的一个子集。Ck中的每个元素需在交易数据库中进行验证来决定其是否加入Lk,这里的验证过程是算法性能的一个瓶颈。这个方法要求多次扫描可能很大的交易数据库,即如果频集最多包含10个项,那么就需要扫描交易数据库10遍,这需要很大的I/O负载。 在论文中, Agrawal等引入了修剪技术(Pruning)来减小候选集Ck的大小,由此可以显著地改进生成所有频集算法的性能。算法中引入的修剪策略基于这样一个性质:一个项集是频集当且仅当它的所有子集都是频集。那么,如果Ck中某个候选项集有一个(k-1)-子集不属于Lk-1,则这个项集可以被修剪掉不再被考虑,这个修剪过程可以降低计算所有的候选集的支持度的代价。文[6]中,还引入杂凑树(Hash Tree)方法来有效地计算每个项集的支持度。 3.4 频集算法的几种优化方法 虽然 Apriori算法自身已经进行了一定的优化,但是在实际的应用中,还是存在不令人满意的地方,于是人们相继提出了一些优化的方法。 3.4.1 基于划分的方法 Savasere等 [14]设计了一个基于划分(partition)的算法,这个算法先把数据库从逻辑上分成几个互不相交的块,每次单独考虑一个分块并对它生成所有的频集,然后把产生的频集合并,用来生成所有可能的频集,最后计算这些项集的支持度。这里分块的大小选择要使得每个分块可以被放入主存,每个阶段只需被扫描一次。而算法的正确性是由每一个可能的频集至少在某一个分块中是频集保证的。上面所讨论的算法是可以高度并行的,可以把每一分块分别分配给某一个处理器生成频集。产生频集的每一个循环结束后,处理器之间进行通信来产生全局的候选k-项集。通常这里的通信过程是算法执行时间的主要瓶颈;而另一方面,每个独立的处理器生成频集的时间也是一个瓶颈。其他的方法还有在多处理器之间共享一个杂凑树来产生频集。更多的关于生成频集的并行化方法可以在中找到。 3.4.2 基于Hash的方法 一个高效地产生频集的基于杂凑 (hash)的算法由Park等提出来。通过实验我们可以发现寻找频集主要的计算是在生成频繁2-项集Lk上,Park等就是利用了这个性质引入杂凑技术来改进产生频繁2-项集的方法。 3.4.3 基于采样的方法 基于前一遍扫描得到的信息,对此仔细地作组合分析,可以得到一个改进的算法, Mannila等先考虑了这一点,他们认为采样是发现规则的一个有效途径。随后又由Toivonen进一步发展了这个思想,先使用从数据库中抽取
以上是关于数据挖掘技术的算法与应用读书报告的主要内容,如果未能解决你的问题,请参考以下文章