1、基于遗传算法的连续属性离散化方法研究颜 菲【摘 要】 对连续属性进行离散化(discretization),也即 实 型空间向整型空间的映射,是许多数据挖掘过程中数据预处理阶段的重要步 骤。由于它在减少后继算法的时空复杂度,提高系统的鲁棒性上的重要作用而被广泛研究。本文提出了一种基于遗传算法的连续属性离散化方法,将最小断点集作为优化目标,并构造一个新的算子来保证所选断点能保持原决策系统的不可分辩关系。【关 键 词】 连续属性 离散化 遗传算法【作者简介】 颜 菲,女,柳州运输职业技术学院信息工程系讲师。广西柳州,545007一、引言本文中提出的基于遗传算法的连续属性离散方法,建立在遗传算法的基
2、础上,结合分层聚类的思想,建立一个分层聚类树,每个树的节点可以看成连续数据的一个区间,通过选择不同的初始区间,利用遗传算法进行优化,在遗传算法中利用属性的支持度为控制条件,合理的控制了遗传进化的代数,从而提高了算法的效率。而且,由于利用了属性的支持度为控制条件,因此可以得到最好的离散化结果,提高了离散化值的准确性,为后面的属性约简操作提供了方便。二、算法的基本思想在离散化过程中,如果划分较细,可以提高对决策属性的支持,但是往往会使决策表含有很多的冗余信息,降低了约简效率;如果划分较粗,则可能增加决策表中不相容信息。因此,必须在决策属性支持度不变的条件下,寻找能提高约简效率的划分。在本算法中充分
3、考虑到这些因素的影响,使用遗传算法进行属性离散化之前,先将连续属性进行初始的断点处理,利用分层聚类的方法形成每一个条件属性的断点聚类树,可以利用经验任意选择树中的断点集,也可以多次选择树中的断点集,进行后面的离散化操作,比较几次的离散化结果中条件属性对决策属性的支持度情况,选择最优的离散化结果,这样有利于形成最优的断点划分。在遗传算法的进化过程中,本算法利用每次遗传进化后的条件属性对决策属性支持度的计算,控制是否继续进行遗传进化,可以减少遗传代数,有利于快速形成最优解。三、算法具体描述输入:决策表 S=, R=Cd,输入条件属性集合和决策属性集合。输出:最优条件属性的断点集合形成的新决策表 S
4、p=步骤:(1)在条件属性集合中选择每个条件属性 1n,对属性 1n 进行分层聚类,生成 n 棵断点树,设置初始的正整数 r,作为循环控制条件,x=0。(2)在每一棵断点树中任意选择一组断点集合(集合的选择可以根据支持度大的再次被选中的原则进行选择),计算各条件属性断点集合对决策属性支持度,spt1 (d)sptn (d)为初始支持度。(3)将断点集合进行组合,利用基于支持度的遗传算法(Support by Simple Genetic Algorithms, SSGA)优化断点,算法 SSGA 计算生成的各条件属性断点对决策属性支持度 spt2(d) , a 为条件属性 1n,如果if sp
5、ta(d) -spta(d)0 and |spta(d)- spta(d)|,then spt a(d)=spta(d) ;在每一个断点树中选择一组断点集合,集合的选择可以根据支持度大的再次被选中的原则进行选择;返回(3);else if | spta(d)- spta(d) |r return 结束算法生成新的决策表,离散化结束;else return (2);(4)选择其中条件属性对决策属性支持度最大的断点集,作为最优离散化结果。其中,在本算法步骤(2)中,分层聚类的方法将数据对象组成一棵聚类树,根据层次分解顺序的不同可以分为凝聚的层次聚类和分裂的层次聚类两种,本算法中应用的是凝聚的层次聚
6、类方法。步骤:(1)首先对条件属性中属性初始点集合进行排序,使初始按由小到大的顺序排列。(2)比较前后两点的距离,如果距离小于 ,选取距离最小的两点进行聚类,删除这两点,将这两点距离的平均值作为新的点,加入属性点集中,重复(2)的操作,直到形成属性的聚类树。在算法步骤(3)中,遗传算法优化断点(SSGA)算法描述:步骤:(1) 设置初始 m (m 为控制循环次数),x=0,条件属性断点对决策属性支持度spta(d)=0,a 为条件属性 1n;(2) initialize pop(t):初始化随机产生初始种群 pop(t);(3) evaluate pop(t):对 pop(t)适应值进行评估;
7、(4) while(x0 and |spta(d)- spta(d)| ,then spta(d)= spta(d)“return (4);else if spta(d) -spta(d),then return (4);else if I spta(d) -spta(d)“|( 为任意小的正整数) then x=x+1;(9) evaluate pop(t+l):对 pop(t+1)进行评估;SSGA 细节描述:(1)编码:用长度为 p 的二进制串来表示一个个体。该串由 M 个子串组成,M为待离散的条件属性个数,每个子串对应决策表中待离散条件属性的初始断点集合,每一个位对应一个断点。某位取
8、1 则表示所选择的断点集中包含相应断点,0 则表示不含对应断点。(2)适应度函数的确定:遗传算法是基于决策属性支持度为控制条件的,所以算法本身主要关心的就是支持度问题,所以,适应度函数可以直接定义为决策属性支持度的总和:yDnaysptvF1(3)选择运算(或称为复制运算):把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体中。一般要求适应度较高的个体将有更多的机会遗传到下一代群体中。算法中选择运算的规律和模型可以分为两个步骤。步骤 1:设当前为第 t 代,maxsingle(t)为种群中的最好个体,maxfit(t)为对应的适应度。对父代种群中的个体,按照各自的适应度在整个种群的个
9、体适应度的总和中所占的比例,采用轮盘方法进行选择;步骤 2:设新的种群中的最差个体为 minsingle(t+l),对应的适应度为minfit(t+l )。若 minfit(t+l)maxfit(t)则用 maxsingle(t)替换掉minsingle(t+l).(4) 交叉和变异:以一定的概率产生选择个体参与交叉。对于参与交叉的两个父辈个体,随机选择交叉点,然后对交叉点后的部分子串进行交换,即产生下一代个体。变异操作中,以概率随机选择变异点,将该位取反。四、总结本文所介绍的算法是由层次聚类的方法先生成断点的聚类树(形成聚类树,克服了一旦一个合并或分裂的步骤完成,就不能被撤销的缺点),通过选
10、择断点进行计算,通过比较条件属性对决策属性的支持度,记录支持度最大值,以支持度为控制条件,控制遗传进化的代数,最后当支持度达到一个比较稳定的值时,结束属性离散化,选择支持度最大时的断点集合,此断点集合就是最优的离散化结果。该算法是在遗传算法的基础上形成的,所以算法兼顾了全局性,而且算法可以得到相对比较准确地离散化结果,所以算法是可行的。参 考 文 献1 M.巴斯蒂安等. 数据仓库与数据挖掘M. 武森,高学东译. 北京:冶金工业出版社,20032 David Hand, Heikki Mamula, Padhraic Smyth. 数据挖掘原理M. 北京:机械工业出版社,2003.3 刘发升,高军. 一种基于粗糙集的新的数据预处理算法J. 计算机工程与应用,2002. 13