数据挖掘和知识工程
1、 给出KDD 的定义和处理过程。
答:KDD 的定义是:从大量数据中提取出可信的、新颖的、有用的且可以被人理解的模式的高级处理过程。因此,KDD 是一个高级的处理过程,它从数据集中识别出以模式形式表示的知识。这里的“模式”可以看成知识的雏形,经过验证、完善后形成知识:“高级的处理过程”是指一个多步骤的处理过程,多步骤之间相互影响反复调整,形成一种螺旋式上升的过程。
KDD 的全过程有五个步骤:1、数据选择:确定发现任务的操作对象,即目标数据,它是根据用户的需要从原始数据库中抽取的一组数据;2、数据预处理:一般可能包括消除噪声、推到技术却只数据、消除重复记录、完成数据类型转换等;3、数据转换:其主要目的是消减数据维数或降维,即从初始特征中找出真正有用的特征以减少数据开采时要考虑的特征或变量个数;4、数据挖掘:这一阶段包括确定挖掘任务/目的、选择挖掘方法、实施数据挖掘;5、模式解释/评价:数据挖掘阶段发现出来的模式,经过用户或机器的评价,可能存在冗余或无关的模式,需要剔除;也有可能模式不满足用户的要求,需要退回到整个发现阶段之前,重新进行KDD 过程。
2、 阐述数据挖掘产生的背景和意义。
答: 数据挖掘产生的背景:随着信息科技的进步以及电子化时代的到来,人们以更快捷、更容易、更廉价的方式获取和存储数据,使得数据及信息量以指数方式增长。据粗略估计,一个中等规模企业每天要产生100MB 以上的商业数据。而电信、银行、大型零售业每天产生的数据量以TB 来计算。人们搜集的数据越来越多,剧增的数据背后隐藏着许多重要的信息,人们希望对其进行更高层次的分析,以便更好的利用这些数据。先前的数据库系统可以高效的实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系与规则,无法根据现有的数据来预测未来的发展趋势。缺乏挖掘数据背后隐藏的知识的手段。导致了“数据爆炸但知识贫乏”的现象。于是人们开始提出“要学会选择、提取、抛弃信息”,并且开始考虑:如何才能不被信息淹没?如何从中及时发现有用的知识、提高信息利用率?如何从浩瀚如烟海的资料中选择性的搜集他们认为有用的信息?这给我们带来了另一些头头疼的问题:第一是信息过量,难以消化;第二是信息真假难以辨别;第三是信息安全难以保证;第四是信息形式不一致,难以统一处理 。面对这一挑战,面对数量很大而有意义的信息很难得到的状况面对大量繁杂而分散的数据资源,随着计算机数据仓库技术的不断成熟,从数据中发现知识
(Knowledge Discovery in Database)及其核心技术——数据挖掘(Data Mining)便应运而生,并得以蓬勃发展,越来越显示出其强大的生命力。
数据挖掘的意义:数据挖掘之所以被称为未来信息处理的骨干技术之一,主要在于它正以一种全新的概念改变着人类利用数据的方式。在20世纪,数据库技术取得了重大的成果并且得到了广泛的应用。但是,数据库技术作为一种基本的信息储存和管理方式,仍然是以联机事务处理为核心应用,缺少对决策、分析、预测等高级功能的支持机制。众所周知,随着硬盘存储容量及的激增以及磁盘阵列的普及,数据库容量增长迅速,数据仓库以及Web 等新型数据源出现,联机分析处理、决策支持以及分类、聚类等复杂应用成为必然。面对这样的挑战,数据挖掘和知识发现技术应运而生,并显现出强大的生命力。数据挖掘和知识发现使数据处理技术进入了一个更加高级的阶段。它不仅能对过去的数据进行查询,而且能够找出过去数据之间的潜在联系,进行更高层次的分析,以便更好地作出决策、预测未来的发展趋势等等。通过数据挖掘,有价值的知识、规则或更高层次的信息就能够从数据库的相关数据集合中抽取出来,从而使大型数据库作为一个丰富、可靠的资源为知识的提取服务。
3、 给出一种关联规则的算法描述,并举例说明。
答:Apriori 算法描述:Apriori 算法由Agrawal 等人于1993年提出,是最有影响的挖掘布尔关联规则频繁项集的算法,它通过使用递推的方法生成所有频繁项目集。基本思想是将关联规则挖掘算法的设计分解为两步:(1)找到所有频繁项集,含有 k 个项的频繁项集称为 k-项集。Apriori 使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先,出频繁 1-项集的集合。该集合记作L1。L1用于找频繁 2-项集的集合L2,而L2用于找L3,如下去,直到不能找到频繁k-项集。找出每个Lk 都需要一次数据库扫描。为提高频繁项集层产生的效率,算法使用Apriori 性质用于压缩搜索空间。(2)使用第一步中找到的频繁项集产生关联规则。从算法的基本思想可知,Apriori 算法的核心和关键在第一步。而第一步的关键是如何将Apriori 性质用于算法,利用Lk - 1找Lk 。这也是一个由连接和剪枝组成的两步过程:(1)连接步:为找Lk ,通过Lk -1与自己连接产生候选k-项集的集合。该候选项集的集合记作Ck 。设l1和l2是Lk - 1中的项集。记号li[j]表示li 的第j 项(例如,l1[k-2]表示l1的倒数第3项)。为方便计,假定事务或项集中的项按字典次序排序。执行连接Lk - 1 Lk - 1;其中,Lk - 1的元素是可连接的,如果它们前(k-2)项相同;即Lk - 1的元素l1和l2是可连接的,如果(l1[1] = l2[1]) ∧ (l1[2] = l2[2]) ∧ ... ∧ (l1 [k-2] = l2 [k-2]) ∧ (l1 [k-1]
(l1[k-1]
Apriori 算法举例:如有如下数据
每一行表示一条交易,共有9行,既9笔交
易,左边表示交易ID ,右边表示商品名称。最小
支持度是22%,那么每件商品至少要出现9*22%=2次才算频繁。第一次扫描数据库,使得在每条交易中,按商品名称递增排序。
第二次扫描数据,找频繁项集为1
的元素有:
左边表示商品名称,右边表示出现的次数,都大于阈值2。
在此基础上找频繁项集是2的元素,方法是两两任意组合,第三次扫描数据得到它们出现的次数:
此时就有规律性了,在频繁项集为K 的元素上找频繁项集为K+1的元
素的方法是:在频繁项集为K 的项目(每行记录)中,假如共有N 行,两两组合,满足两两中前K-1个元素相同,只后一个元素要求前一条记录的商品名称小于后一条记录的商品名称,这样是为了避免重复组合,求它们的并集得到长度为K+1的准频繁项集,那么最多共有Apriori 算法种可能的组合,有:
想想如果N 很大的话,Apriori 算法是一个多么庞大的数字,这时就要用到Apriori 的核心了:如果K+1个元素构成频繁项集,那么它的任意K 个元素的子集也是频
繁项集。然后将每组K+1个元素的所有长度为K 的子集,有Apriori
算法中组合,在频繁项集为K 的项集中匹配,没有找到则删除,用第一条记录{I1,I2,I3}它的长度为2的频繁项集有:Apriori 算法分别是:{I1,I2},{I1,I3},{I2,I3}种情况, 幸好这三种情况在频繁项集为2的项集中都找到了。通过这步过滤,得到的依旧是准频繁项集,它们是:
此时第四次扫描数据库,得到真正长度为3的频繁项集是:
因为{I1,I2,I4}只出现了1次,小于最小支持度2,删除。就这个例子而言,它的最大频繁项集只有3,就是{I1,I2,I3}和{I1,I2,I5}。
4、 给出一种聚类算法描述,并举例说明。
答:k-means 算法是一种属于划分方法的聚类算法,通常采用欧氏距离作为 2 个样本相似程度的评价指标,其基本思想是:随机选取数据集中的 k 个点作为初始聚类中心,根据数据集中的各个样本到k 个中心的距离将其归到距离最小的类中,然后计算所有归到各个类中的样本的平均值,更新每个类中心,直到平方误差准则函数稳定在最小值。
算法步骤:1. 为每个聚类确定一个初始聚类中心,这样就有K 个初始聚类中心。 2.将样本集中的样本按照最小距离原则分配到最邻近聚类 3.使用每个聚类中的样本均值作为新的聚类中心。 4.重复步骤2.3步直到聚类中心不再变化。
k-means 算法举例:数据对象集合S 见下表,作为一个聚类分析的二维样本,要求的簇的数量k=2。
O 2(0,0)O 1(0,2M 1=O 1,=((1)选择 ,为初始的簇中心,即 0,2)) O 3 对 : d (M 1, O 3)
=
M 2=
O 2=(0,0)
(2)对剩余的每个对象,根据其与各个簇中心的距离,将它赋给最近的簇。
=2.5
O 3 显然 ,故将 分配给d (M 2, O 3)≤d (M 1, O 3)
对于 O 4: d (M 1, O 4)
=
d (M 2, O 3)
==1.5
C 2
=(M 2, O 4)
==5
O 4 d (M 2, O 4)≤d (M 1, O 因为 ,所以将 分配给4)
d M , O ==()25O :对于 5 d (M 1, O 5)==5
d (M 1, O 5)≤d (M 2, O O 5
C 1因为 ,所以将 分配给5)
更新,得到新簇 和 C 1={O 1, O 5}计算平方误差准则,单个方差为
C 2={O 2, O 3, O 4}
2
222
⎤=25E 1=⎡(0-0)+(2-2)⎤+⎡0-5+2-2)()(⎣⎦⎣⎦
E 2=27.25
总体平均方差是:
E =E 1+E 2=25+27.25=52.25
M 1=((0+52, (2+22)=(2. 5, 2)
(3)计算新的簇的中心。
M 2=((0+1.5+5)3, (0+0+0))=(2.17,0)
重复(2)和(3),得到O 1分配给C 1;O 2分配给C 2,O 3分配给C 2,O 4分配给C 2,O 5分配
C 给C 1。更新,得到新簇 和 C 1={O 1, O 5}。2={O 2, O 3, O 4}
) M 1=(2. 5, 2M 2=(2.17,0中心为 ,。 )
单个方差分别为
222
⎤=12.5E 1=⎡(0-2.5)+(2-2)⎤+⎡2.5-5+2-2)()(⎣⎦⎣⎦
2
E 2=13.15
总体平均误差是:
E =E 1+E 2=12.5+13.15=25.65
由上可以看出,第一次迭代后,总体平均误差值52.25~25.65,显著减小。由于在两次迭代中,簇中心不变,所以停止迭代过程,算法停止。