1、数据挖掘各类算法综述数据挖掘各类算法综述 了解数据挖掘的各类算法的原理和应用领域以及优缺点对于在实际的工作中选择合适的方法,并加以改进有很重要的指导意义。1.1 关联规则挖掘算法RAgrawal等人于1993年首先提出了挖掘顾客交易数据库中项集间的关联规则问题,其核心方法是基于频集理论的递推方法。此后人们对关联规则的挖掘问题进行了大量研究,包括对Apriori算法优化、多层次关联规则算法、多值属性关联规则算法、其他关联规则算法等,以提高算法挖掘规则的效率。1)Apriori算法Apriori算法是最有影响的挖掘布尔关联规则频繁项集的算法。算法Apriori利用“在给定的事务数据库D中,任意频繁
2、项集的非空子集都必须也是频繁的”这一原理对事务数据库进行多次扫描,第一次扫描得出频繁1-项集L ,第k (k1)次扫描前先利用第k-1次扫描的结果(即频繁k-1项集Lk-1)和函数Apriorigen产生候选k-项集Ck,然后在扫描过程中确定Ck女中每个元素的支持数,最后在每次扫描结束时计算出频繁k-项集Lk ,算法在当频繁n-项集为空时结束。 算法:Apriori,使用根据候选生成的逐层迭代找出频繁项集 输入:事务数据库D;最小支持度阈值min_sup 输出:D中的频繁项集L 方法:(1) L1 = find_frequent_1itemsets(D);(2) for (k = 2;Lk-1
3、 ;k +)(3) Ck = apriori_gen(Lk-1 , min_sup);(4) for each transaction t D /scan D for counts(5) Ct = subset (Ck,t); /get the subset of t that are candidates(6) for each candidate c Ct(7) c.count+;(8) (9) Lk = c Ck | c.countmin_sup ;(10) (11) return L = k Lk;/ apriori_gen用来产生候选k项集procedure apriori_gen(
4、Lk-1:(k-1)项频繁集, min_sup:最小值尺度 )(1) for each itemset l1 Lk-1(2) for each itemset l2 Lk-1(3) if (l11= l21)(l12= l22) (l1k-2= l2k-2) (l1k-1 p(Cj|X) ,1jm,Ji 这样最大化p(Ci|X)。(3)由于P(X)对于所有类为常数,只需要P(X|Ci)P(Ci)最大即可。如果类的先验概率未知,则通常假定这些类是等概率的。并据此对P(Ci|X)最大化。否则最大化P(X|Ci)P(Ci)。(4)给定具有许多属性的数据集,计算P(Ci|X)的开销可能非常大。为降低开
5、销,可以做类条件独立的朴素假定。给定样本的类标号,假定属性值相互条件独立,即在属性间,不存在依赖关系。(5)为对未知样本X分类,对每个类Ci,计算P(X|Ci)P(Ci)。样本X被指派到类Ci,当且仅当 P(X|Ci)P(Ci) P(X| Cj)P(Cj) , 1jm,JI换言之,被指派到其(X|Ci)P(Ci)最大的类Ci-3)神经网络算法神经网络是大量的简单神经元按一定规则连接构成的网络系统。它能够模拟人类大脑的结构和功能,采用某种学习算法从训练样本中学习,并将获取的知识存储在网络各单元之间的连接权中。神经网络主要有前向神经网络、后向神经网络和自组织网络。在数据挖掘领域,主要采用前向神经网
6、络提取分类规则。神经网络算法最早在文献10中得出,此后又提出许多变形,包括替换的误差函数、网络拓扑的动态调整、学习率和要素参数的动态调整。近年来,从神经网络中提取规则受到越来越多的关注。这主要有以下二种倾向:(1)网络结构分解的规则提取;(2)由神经网络的非线性映射关系提取规则。未来神经网络的发展可向进一步降低算法的复杂度、提高所提取规则的可理解性及算法的适用性方向发展。下面是后向传播算法算法:后向传播。使用后向传播算法的神经网络分类学习输入:训练样本sample,学习率l,多层前馈网络network输出:一个训练的、对样本分类的神经网络方法:(1) 初始化network的权和偏置(2) wh
7、ile 终止条件不满足 (3) for samples中的每个训练样本X(4) /向前传播输入(5) for 隐藏或输出层每个单元j (6) Ij = i WijOi + j ; /相对于前一层,计算单元的净输入(7) O= 1 /(1 + e-Ij);/计算每个单元j的输出(8) /向后传播误差(9) for 输出层每个单元j(10) Errj = O(1 O)(Tj - O); /计算误差(11) for 由最后一个到第一个隐藏层,对于隐藏层每个单元j(12) Errj = O(1 - O) ErrkWjk; /计算关于下一个较高层k的误差(13) for network中每个权Wij(1
8、4) Wij= (l)Errj O; /权增值(15) Wij = Wij +Wij; /权更新(16) for network中每个偏差j (17) j = (l)Errj; /偏差增值(18) j = j + j ; /偏差更新(19) -4)遗传算法遗传算法是模拟生物进化过程的全局优化方法,将较劣的初始解通过一组遗传算子(繁殖 即选择、交叉即重组、变异 即突变),在求解空间按一定的随机规则迭代搜索,直到求得问题的最优解。遗传算法在数据挖掘领域的主要应用有:(1)用它和BP算法结合训练神经网络,然后从网络提取规则;(2)分类系统的设计,如编码方式、信任分配函数的设计以及遗传算法的改进等。遗
9、传算法用于数据挖掘存在的问题是:(1)算法较复杂,(2)收敛于局部极小的过早收敛等难题未得到解决。5)其他基于案例的推理(CaseBased Reasoning,CBR)分类法是基于要求的。不像最临近分类法将训练样本作为欧氏空间的点存放,CBR存放的样本或“案例”是复杂的符号描述。它试图组合临近的训练案例,提出新案例的解。基于案例的推理可能使用背景知识和问题求解策略,以便提出可行的组合解。基于案例的推理存在的挑战包括找到一个好的相似度量,开发对训练案例索引的有效技术和组合解的方法。粗糙集方法用于分类主要发现不准确数据或噪声数据内在的结构联系,它用于离散值属性,也可以用于特征归约和相关分析。粗糙
10、集已用于许多应用的特征归约和专家系统中。模糊集方法提供了在高抽象层处理的便利。一般地,模糊逻辑在基于规则的系统中的使用涉及:(1)将属性值转换成模糊值;(2)对于给定的新样本,可以使用多个模糊规则;(3)组合上面得到的和,得到一个系统返回的值。1.3 聚类算法 目前,文献中存在着大量的聚类算法,通常可以分为基于分割的、基于层次的、基于密度的、基于网格的和基于模型的聚类方法五大类。1)分割的聚类方法分割聚类算法是将数据集分成若干子集即给定一个例子的集合x,其中包括n个数据对象,并要生成数目为K的簇。常用的基于分割的聚类方法有K一均值(Kmeans)法和K一中心法,CLARA法和CLARANS法等
11、。K-均值法K-均值法首先由MacQuen提出,它以K为参数,将n个对象分成K个簇,以使簇内具有较高的相似度,而簇间的相似度较低其相似度的计算根据一个簇中对象的平均值来进行。此方法能有效地处理簇内密集,但簇间区别明显的数据的聚类,其时间复杂度为o(nkt),(其中t是迭代次数),因此有相对较高的可伸缩性和高效率。但它只能聚类数值型的数据,且要求用户必须事先确定参数K,也不适合发现非凸面形状的簇或大小差别很大的簇,聚类结果与数据的输入顺序也有明显的关系,对于“噪声”和孤立点数据也是敏感的。算法:K-均值。划分的k-均值算法基于簇中对象的平均值输入:簇的数目K和包含n个对象的数据库输出:k个簇,使
12、平方误差准则最小方法:(1) 任意选择k个对象作为初始的簇中心(2) repeat(3) 根据簇中对象的平均值,将每个对象(重新)赋给最类似的簇;(4) 更新簇的平均值,即计算每个簇中对象的平均值(5) until 不再发生变化-K-中心点方法它的基本策略是:首先为每个簇随意选择一个代表对象,剩余的对象根据其与代表对象的距离分配给最近的一个簇,然后反复地用非代表对象来替代代表对象,以改进聚类的质量。这种方法能有效处理小数据集,且也能有效处理“噪声”和孤立点,但其仍要求用户输入参数K,且算法的执行代价比K-均值法高,没有良好的伸缩性。 算法:k-中心点。对基于中心点或者中心对象的划分的典型k-中
13、心点算法 输入:结果簇的数目k,包含n个对象的数据库 输出:k个簇。使得所有对象与其最近中心点的相异度总和最小 方法:(1) 随机选择k个对象作为初始的中心点(2) repeat(3) 指派每个剩余的对象给离它最近的中心点所代表的簇;(4) 随机地选择一个非中心点对象Orandom;(5) 计算用Orandom代替Oj的总代价S;(6) if S 0 ,then Orandom替换Oj,形成新的k个中心点的集合;(7) until 不再发生变化;-Clara算法Clara(Clustering Large Applications)算法的主要思想是:不考虑整个数据集合,选择实际数据的一小部分作
14、为数据的样本,然后用K-中心点法选择中心点。Clara算法能够处理大量的数据,其每步的迭代时间复杂度为o(k s2 + k( n k ),其中,S是样本的大小,K是簇的数目,而n是所有对象的总数。因此其的效率取决于采样的大小。但运用该方法时,一般不太可能得到最佳的结果。Clarans算法Clarans(Clustering Large Applications based upon RandomizedSearch)算法是一种基于随机搜索的方法,它是在Clara算法的基础上提出来的,它与Clara算法不同的是:在Clara算法寻找最佳的中心点的过程中,采样是不变的,而Clarans算法在每一次
15、循环过程中所采用的采样都是不一样的。此方法的优点是一方面改进了Clara的聚类质量,另一方面拓展了数据处理量的伸缩范围。其有较好地聚类效果,但其计算复杂度仍为O(n2),因此,低效仍是其存在的缺点之一,虽对噪声数据不敏感,但对数据输入顺序敏感,只能聚类凸状或球型边界。2)层次聚类方法层次聚类法是把对给定的数据集按层次进行分解,结果是形成一棵以数据子集为节点的类别树。根据层次分解的方式不同,其又可以分为凝聚的层次方法和分裂的层次方法。现在比较常用的层次聚类方法有BIRCH法、CURE法等。BIRCH 法:利用层次方法的平衡迭代规约和聚类BIRCH法是一种综合优化的层次聚类的方法,它的核心是采用了
16、一个三元组的聚类特征树(CF树)汇总了一个簇的有关信息,从而使一个簇的表示可以用对应的聚类特征,而不必用具体的一组点表示,通过构造分支因子B和簇直径阈值T来进行增量和动态聚类。BIRCH算法的优点是采用了多种聚类技术,对数据库的一次扫描产生一个基本好的聚类,一次或更多的附加扫描能够提高聚类的质量,比较适合于大型数据集。这个算法的时间复杂度为0(n),这里n为对象的树木。该算法具有对对象数目的线性伸缩性,及较好的聚类质量。它的缺点是只适合于类的分布呈凸状或球状情况,并且需要提供正确的聚类数和簇直径T,不适于高维数据。-BIRCH的算法的两个阶段:阶段一:BIRCH扫描数据库,建立一个初始存放于内
17、存的CF树,它可以被看作数据的多层压缩,试图保留数据内在的聚类结构。阶段二:BIRCH采用某个聚类算法对CF树的叶节点进行聚类。-CURE法:利用代表点聚类CUR E 法是一种很新颖的层次聚集算法,采用了基于质心和基于代表对象方法之间的中间策略,它选择数据空间中固定数目的具有代表性的点来代表一个簇,并将这些点乘以一个适当的收缩因子,使它们更靠近簇的中心。它的时间复杂度为0(n)。其的优点是选择多个代表使得该算法可以适应非球状的几何形状,簇的收缩或凝聚可以有助于控制噪声的影响,同时该方法采用了随机抽样与分割相结合来提高效率,对大型数据库有良好的收缩性。-下面的步骤描述的CURE算法的核心:(1) 从源数据对象中抽取一个随机样本S。(2) 将
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1