一种特征生成方法及系统与流程

文档序号:12063457阅读:223来源:国知局
一种特征生成方法及系统与流程
本申请涉及互联网
技术领域
,尤其涉及一种特征生成方法及系统。
背景技术
:随着互联网信息技术的发展,通过互联网为用户提供的业务服务的种类越来越多,如何更好地为用户提供业务服务是互联网行业中的一个重要问题。模型分类能够有效提升业务服务水平,比如,对用户的收入水平进行分类,将用户的收入水平分为高、中、低三个类别,可以基于用户收入水平类别的不同为用户提供不同的信息推介服务。在基于模型进行分类时,需要输入多个特征,良好的特征集合能够有效提升模型分类的准确率。在很多情况下,单个特征所蕴含的信息量有限,而通过特征组合变换之后能够产生显著的分类性能。因此,可以基于原始特征集合生成一些新的特征,使这些新的特征能够反映原始特征集合隐性的分类能力。同时,为了避免变换生成的大量无效或冗余的特征对模型分类准确率的影响,需要对新生成的特征进行适应度评价。目前,在进行大量新生成特征的适应度评价时,通常存在大数据处理能力不足,评价效率较低的问题,从而限制了对新生成特征的进一步优化,导致无法及时有效地得到有价值的特征。技术实现要素:本申请实施例提供一种特征生成方法及系统,用以解决在进行大量新生成特征的适应度评价时,通常存在大数据处理能力不足,评价效率较低的问题,还提供了一种有效得到高价值新特征的特征生成算法。本申请实施例提供一种特征生成方法,包括:步骤A、主节点在接收到执行第N代适应度评价任务的多个子节点发送的评价结果后,若确定N等于最大迭代次数,则向选择的一子节点下发输出任务,否则,向选择的一子节点下发迭代任务;步骤B、执行输出任务的子节点基于第N代适应度评价任务的评价结果,确定并输出适应度最高的n个特征表达式;所述适应度最高的n个特征表达式是指按照适应度由高到低排列后的前n个特征表达式;步骤C、执行迭代任务的子节点基于所述第N代适应度评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点;其中,所述多个编码个体中包含第N代适应度评价任务评价出的适应度最高的n个特征表达式所对应的n个编码个体;步骤D、所述主节点基于所述编码文件生成多个第N+1代适应度评价任务,并将每一个第N+1代适应度评价任务分别下发给不同的子节点,其中,每一个适应度评价任务中包含一个编码个体;步骤E、执行适应度评价任务的子节点针对被分配的适应度评价任务中的编码个体所指示的特征表达式进行适应度计算,并将计算得到的适应度作为评价结果发送给所述主节点;将N加1,返回步骤A。可选地,所述编码个体为采用深度优先编码DFP的方式生成的;步骤C中,执行迭代任务的子节点基于第N代适应度评价任务的评价结果,生成包含多个编码个体的编码文件,包括:步骤C1、所述执行迭代任务的子节点基于第N代适应度评价任务的评价结果,从第N代适应度评价任务评价的m个特征表达式中选择适应度最高的n个特征表达式;步骤C2、从所述m个特征表达式中随机选择两个特征表达式,按照预设的交叉概率,从这两个特征表达式中分别选择一个子表达式进行交叉,保留随机交叉后的一个特征表达式;重复该步骤m-n次,得到保留的随机交叉后的 m-n个特征表达式;步骤C3、按照预设的变异概率,对所述保留的随机交叉后的m-n个特征表达式中的元素进行变异处理,得到随机变异后的m-n个特征表达式;步骤C4、将所述适应度最高的n个特征表达式和所述随机变异处理后的m-n个特征表达式所分别对应的编码个体,确定为第N+1代适应度评价任务中包含的m个编码个体。可选地,步骤C3中,对所述保留的随机交叉后的m-n个特征表达式中的元素进行变异处理,包括:针对任一特征表达式,从以下处理方式中随机选择一种进行变异处理:将该特征表达式中的一个单特征节点用一个子表达式代替;所述单特征节点是指该特征表达式中的一个数据或一个算符;将该特征表达式中的一个子表达式缩减为一个单特征节点;将该特征表达式中的一个单特征节点用随机生成的单特征节点代替;将该特征表达式用随机生成的新的特征表达式代替。可选地,在步骤C1中,所述执行迭代任务的子节点基于第N代适应度评价任务的评价结果,从第N代适应度评价任务评价的m个特征表达式中选择适应度最高的n个特征表达式,包括:若在所述m个特征表达式中,存在适应度相同的特征表达式,则剔除冗余的k个特征表达式,以使得在剩余的特征表达式中不存在适应度相同的特征表达式;在所述剩余的特征表达式中,选择适应度最高的n个特征表达式,并将步骤B2~B4中的m减k。可选地,在步骤A之前,还包括:所述主节点在接收到特征生成任务后,从数据服务器上获取执行所述特征生成任务所需的数据文件,并将获取的数据文件传输给集群系统中的每台集群计算机器;在步骤E中,所述执行适应度评价任务的子节点进行适应度计算,包括:所述执行适应度评价任务的子节点从所在集群计算机器中读取被分配的适应度评价任务中的编码个体所指示的特征数据,并将读取的特征数据代入该编码个体对应的特征表达式,通过调用所在集群计算机器上的适应度评价函数,对代入特征数据后的特征表达式进行适应度计算。可选地,在步骤A之前,还包括:主节点向选择的一子节点下发该主节点接收的特征生成任务所对应的初始化任务;执行初始化任务的子节点通过调用所在集群计算机器上的初始化函数,随机生成包含多个初始化的编码个体的编码文件;所述主节点基于所述多个初始化的编码个体,生成多个第一代适应度评价任务,并将生成的每一个第一代适应度评价任务分别下发给不同的子节点。可选地,在步骤B中,所述执行输出任务的子节点基于第N代适应度评价任务的评价结果,确定并输出适应度最高的n个特征表达式,包括:所述执行输出任务的子节点通过调用所述主节点存储在文件系统中的所述第N代适应度评价任务的评价结果,确定适应度最高的n个特征表达式,并输出反馈给用户的、用于指示所述适应度最高的n个特征表达式的特征生成结果报告,以及输出用于后续调用的该适应度最高的n个特征表达式所对应的特征数据。本申请实施例提供一种特征生成系统,包括:主节点,用于在接收到执行第N代适应度评价任务的多个子节点发送的评价结果后,若确定N等于最大迭代次数,则向选择的一子节点下发输出任务,否则,向选择的一子节点下发迭代任务;还用于,基于执行迭代任务的子节点生成的编码文件生成多个第N+1代适应度评价任务,并将每一个第N+1代适应度评价任务分别下发给不同的子节点,其中,每一个适应度评价任务中包含一个编码个体;执行输出任务的子节点,用于基于第N代适应度评价任务的评价结果,确定并输出适应度最高的n个特征表达式;所述适应度最高的n个特征表达式是指按照适应度由高到低排列后的前n个特征表达式;执行迭代任务的子节点,用于基于所述第N代适应度评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点;其中,所述多个编码个体中包含第N代适应度评价任务评价出的适应度最高的n个特征表达式所对应的n个编码个体;执行适应度评价任务的子节点,用于针对被分配的适应度评价任务中的编码个体所指示的特征表达式进行适应度计算,并将计算得到的适应度作为评价结果发送给所述主节点。采用上述方法或系统,由于每一代适应度评价任务可以由多个子节点并行执行,因此提高了适应度评价效率,也进而提高了整个特征生成进程的效率,保证了新特征生成的及时性;主节点在向子节点下发适应度评价任务时,并没有直接将特征数据传输给执行适应度评价任务的子节点,而是采用编码个体的形式向其指示需要评价的特征表达式,从而可以减少数据传输量,增加传输效率,并减少内存占用。另外,基于本申请实施例提出的基于深度优先编码DEP方式下的迭代算法,有效地保证了子表达式的完整性,并且在每一次迭代时都保留了上一次迭代后最优的几个特征表达式,因此在完成最后一次迭代后,可以获得整个迭代进程中最优的几个特征表达式。附图说明图1为本申请实施例提供的特征生成方法流程图;图2为基于迭代计算框架进行任务调度的示意图;图3为特征表达式交叉示意图;图4为第一种变异示意图;图5为第二种变异示意图;图6为第三种变异示意图;图7为本申请实施例提供的特征生成系统结构示意图。具体实施方式本申请实施例中,整个迭代进程包括:由选择的一个子节点执行的初始化任务、由多个子节点并行执行的每一代适应度评价任务、由选择的一个子节点执行的迭代任务、以及在执行完全部的适应度评价任务后执行的输出任务;主节点负责为各个子节点分配相适应的任务、进行整个迭代进程的协调调度。由于每一代适应度评价任务可以由多个子节点并行执行,因此提高了适应度评价效率,也进而提高了整个特征生成进程的效率,保证了新特征生成的及时性;主节点在向子节点下发适应度评价任务时,并没有直接将特征数据传输给执行适应度评价任务的子节点,而是采用编码个体的形式向其指示需要评价的特征表达式,从而可以减少数据传输量,增加传输效率,并减少内存占用。另外,在迭代任务中,本申请实施例提出了基于深度优先编码(Depth-FirstPrograming,DEP)方式下的迭代算法,也称为特征生成算法,该算法利用DEP编码方式编码,在特征生成中,有效地保证了子表达式的完整性;并利用了遗传特性,每一次迭代时都保留了上一次迭代后最优的几个特征表达式,因此在完成最后一次迭代后,可以获得整个迭代进程中最优的几个特征表达式。为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,需要说明的是,基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。如图1所示,为本申请实施例提供的特征生成方法流程图,图2为基于迭代计算框架进行任务调度的示意图,包括以下步骤:S101:主节点向选择的一子节点下发该主节点接收的特征生成任务所对应的初始化任务。在上述步骤中,主节点可以随机选择一个执行初始化任务的子节点或根据各子节点的负载情况选择一个执行初始化任务的子节点,并可以向执行初始化任务的子节点指示如表一所示的以下参数信息:参数名称参数类型参数含义filenameString数据文件名称fieldSizeInt数据文件字段总数popSizeInt种群中个体数量parameterString算法参数表一其中,数据文件名称(filename)这一字符串(String)类型的参数用于指示数据样本所在的数据文件,数据文件字段总数(fieldSize)这一整型(Int)参数用于指示数据文件中的字段数量,每一个字段标识一种数据特征,下面所述的特征表达式即是关于多种数据特征和算符的表达式,比如特征表达式X4=X1+X2×X3,其中,X1、X2和X3即是几种不同的数据特征,“+”和“×”为算符。种群中个体数量(popSize)这一整型(Int)参数用于指示初始化任务中生成的编码个体的数量,每一个编码个体对应一个特征表达式。算法参数(parameter)为String类型的参数,以关键字-值(key-value)对的形式存储,比如可以包含生成的特征表达式的最大深度(比如X1+X2×X3的深度为3)等。上述参数信息可以是由用户通过前端界面输入的信息。具体地,用户在网页客户端,通过前端界面的引导,进行数据导入和需求设定,最终向后端发起任务请求。具体包含三个子流程:提交数据、选择算法和设置参数。其中,提交数据是指用户通过前端界面输入待处理数据对应的数据表(数据文件)名称,并勾选需要进行处理的字段和设置字段类型;选择算法,是指用户在提交数据后,根据所选字段类型遴选算法,并给出一些建议,用户可以根据实际需求选择对应的算法,也可以提交自定义的算法,在本申请实施例中,需要用户选择的算法主要是适应度评价算法,针对特征生成,本申请实施例提供了专用的特 征生成算法;设置参数,是指对所选算法的参数进行设定,所有参数都会有缺省值供用户参考。在这三个子流程结束之后,将所有相关信息汇总至一个任务请求中,发送至后端,然后,执行自S101起的各个后端计算流程。后端运算也就是调用相关算法进行计算的过程,这一过程与用户是隔离的,可以通过前端接口查询任务运行状态,以滚动日志的形式显示给用户,在适应度评价任务全部执行完成后,可以执行结果输出,具体地,读取存有结果的文件(如后续介绍的json文件),解析、并以一定的可视化形式展现给用户。S102:执行初始化任务的子节点通过调用所在集群计算机器上的初始化函数,生成包含多个初始化的编码个体的编码文件。这里,执行初始化任务的子节点(Slave节点)根据主节点的指示,通过脚本方式调用所在集群计算机器上的源码库中的相关算法源代码(也即初始化函数),生成编码文件,同时生成的还可以包括中间数据文件,将编码文件和中间数据文件返回到主节点。这里的中间数据文件中包含一些后续分析可能需要用到的中间结果,在初始化任务中,由于还没有中间结果产生,可以将该中间数据文件中的数据设为空值或默认值,可以将其保存在主节点(Master节点)的文件系统里,以供后续迭代计算进行调用。另外,在后续调度过程中,每一次迭代产生的编码文件和中间数据文件也都会被存储在主节点的文件系统中,因此,一旦出现系统故障,即可以恢复到系统故障前一次迭代处继续计算,可恢复性较强。在具体实施中,所述编码个体用于标识特征表达式,编码个体中的每一位编码用于标识该特征表达式涉及的一个字段(也即一种特征)或该特征表达式中的一个算符。比如,对于一个数据表,存在[Y,X1,X2,X3]四个字段,每个字段对应数据表中的一种数据特征,对于特征表达式X4=X1+X2×X3,假如“+”的代码为-1,“×”的代码为-3,X1的代码为1,X2的代码为2,X3的代码为3,则将这一特征表达式根据深度优先编码(Depth-FirstPrograming,DFP)方式进行编码后为[-1,1,-3,2,3]。S103:主节点基于所述多个初始化的编码个体,生成多个第一代适应度评价任务,并将生成的每一个第一代适应度评价任务分别下发给不同的子节点;其中,每一个适应度评价任务中包含一个编码个体。若本申请应用在模型分类中,可以采用基尼(Gini)系数来衡量适应度。本申请实施例中,为了减少数据传输量,主节点在向子节点下发适应度评价任务时,并没有直接将特征数据传输给执行适应度评价任务的子节点,而是采用编码个体的形式向其指示需要评价的特征表达式,从而可以减少数据传输量,增加传输效率,并减少内存占用。在S103中,主节点可以通过线程休眠(sleep)的方式等待初始化任务结束,然后根据编码文件中编码个体的数量来确定生成第一代适应度评价任务的数量,并创建各个适应度评价任务。具体地,针对每个适应度评价任务,可以生成一个子任务标识(Identity,ID)和种群个体标识(Identity,ID),并将子任务ID、种群个体ID、编码个体、以及算法参数等作为适应度评价任务的任务执行信息存储到任务队列中,然后在任务队列中取出各个适应度评价任务分发给每个执行适应度评价任务的子节点。这里,执行每一代适应度评价任务的子节点可以是主节点随机选择的,也可以是主节点根据当前各个子节点的负载情况选择的。如表二所示,为执行适应度评价任务的子节点接收到的各个参数信息:参数名称参数类型参数含义filenameString数据文件名称JobIDString任务IDpopIDString种群个体IDindividualString编码个体parameterString算法参数表二在上述参数中,数据文件名称(filename)、任务ID(JobID)、种群个体 ID(popID)、编码个体(individual)、算法参数(parameter)都是字符串类型的参数。S104:执行适应度评价任务的子节点针对被分配的适应度评价任务中的编码个体所指示的特征表达式进行适应度计算,并将计算得到的适应度作为评价结果发送给所述主节点。这里,执行适应度评价任务的子节点对分发的任务进行处理,具体地,调用对应的适应度评价函数进行计算,并将适应度计算结果、任务ID、种群个体ID、以及编码个体写入一个以任务ID命名的json文件中,返回到主节点的文件系统里。针对任务标识ID,主节点可以向任一执行适应度评价任务的子节点发送包含任务ID的执行进度查询请求,并接收所述任一执行适应度评价任务的子节点基于所述任务ID返回的执行进度信息。针对种群个体标识ID;主节点在接收到执行该适应度评价任务的子节点发送的包含所述种群个体ID和编码个体的评价结果之后,可以将该子节点发送的种群个体ID和编码个体,与下发给该子节点的适应度评价任务中的种群个体ID和编码个体进行匹配,以校验该子节点反馈的评价结果的准确性。在S104中,执行适应度评价任务的子节点可以根据编码个体读取对应字段的特征数据,而不用读取所有字段的特征数据,从而可以减小对内存空间的占用,更好地实现任务并行处理。优选地,主节点在接收到特征生成任务后,可以首先从数据服务器上获取执行所述特征生成任务所需的数据文件,并将获取的数据文件传输给集群系统中的每台集群计算机器;相应地,执行适应度评价任务的子节点从所在集群计算机器中读取被分配的适应度评价任务中的编码个体所指示的特征数据,并将读取的特征数据代入该编码个体对应的特征表达式,通过调用所在集群计算机器上的适应度评价函数,对代入特征数据后的特征表达式进行适应度计算。这里,为了便于子节点读取所述编码个体所指示的特征数据,主节点预先将特征数据从数据服务器下载到子节点所在的集群计算机器上。在实际实施中,子节点也可以直接从数据服务器上读取所需特征数 据,但这样自然会很大程度上降低评价效率。S105:主节点在接收到执行第N代适应度评价任务的多个子节点发送的评价结果后,判断N是否等于最大迭代次数,若是,则进入S106,否则,执行S107。这里,N为大于或等于1的正整数,随着迭代次数的增加而增加。在具体实施过程中,当某次迭代中主节点分发出的所有适应度评价任务全部执行完成,主节点会将各子节点返回的评价结果进行汇总,生成一个csv文件存储在文件系统中以供调用。同时,主节点会对迭代进程进行判定,如果迭代已经满足终止条件则终止迭代,并指示某个子节点执行输出任务,若不满足终止条件,则指示某个子节点执行迭代任务,即生成新的编码文件和新的中间数据文件,并返回给主节点。S106:主节点向选择的一子节点下发输出任务。这里,执行输出任务的子节点可以是主节点随机选择的,也可以是主节点根据当前各个子节点的负载情况选择的。如下表三所示,为执行输出任务的子节点接收到的参数信息:参数名称参数类型参数含义filenameString数据文件名称popSizeInt种群中个体数量parameterString算法参数PVfilenameString编码个体及对应的评价函数返回值MidfilenameString中间数据文件名称IterNumInt当前迭代次数表三其中,表三中的算法参数(parameter)为String类型的参数,以关键字-值(key-value)对的形式存储,比如可以是保留的适应度最高的特征表达式个数,所述评价函数返回值即为适应度。S107:执行输出任务的子节点基于第N代适应度评价任务的评价结果,确 定并输出适应度最高的n个特征表达式。这里的n为大于或等于1的正整数,这里,由于本申请实施例中每一次迭代就会继承上一次迭代后的最优的n个特征表达式,因此,可以直接基于最后一次迭代的评价结果,选择在所有的迭代次数中评价结果最优的n个特征表达式。在具体实施中,如果迭代进程终止,主节点对评价结果进行汇总,将汇总后的评价结果存储在文件系统中,执行输出任务的子节点通过调用所述文件系统中的评价结果,确定适应度最高的n个特征表达式,并输出反馈给用户的、用于指示所述适应度最高的n个特征表达式的特征生成结果报告,以及输出用于后续调用的该适应度最高的n个特征表达式所对应的特征。比如,执行输出任务的子节点输出一个json文件和一个csv文件,其中json文件用于保存格式化结果,在将其返回前端后生成显示给用户的特征生成结果报告;csv文件则用于保存最终生成并保留的特征表达式所对应的特征数据,最后会将其上传到服务器上,以供用户后续调用。另外,系统会自动删除所有相关文件,释放硬盘空间。S108:主节点向选择的一子节点下发迭代任务。这里,执行迭代任务的子节点可以是主节点随机选择的,也可以是主节点根据当前各个子节点的负载情况选择的。如表四所示,为执行迭代任务的子节点接收到的参数信息:参数名称参数类型参数含义filenameString数据文件名称popSizeInt种群中个体数量parameterString算法参数PVfilenameString编码个体及对应的评价函数返回值MidfilenameString中间数据文件名称IterNumInt当前迭代次数表四其中,表四中的算法参数可以包括交叉概率(pCross)、变异概率(pMutation),见以下关于迭代算法,也即特征生成算法的描述。S109:执行迭代任务的子节点基于所述第N代适应度评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点;其中,所述多个编码个体中包含第N代适应度评价任务评价出的适应度最高的n个特征表达式所对应的n个编码个体。该步骤中,主节点选择的执行迭代任务的子节点采用脚本方式调用迭代函数,根据第N代适应度评价任务的评价结果,也即适应度,生成用于执行第N+1代适应度评价任务的编码文件,还可以通过调用主节点保存的执行第N-1代适应度评价任务后的中间数据文件,生成执行第N代适应度评价任务后的中间数据文件并返回给主节点,中间数据文件中可以包含后续分析可能需要用到的中间结果,比如第N代适应度评价任务评价出的评价结果最优的n个特征表达式及其分别对应的适应度。本申请实施例中,为了将适应度比较高的特征表达式在后续迭代中保留下来,每次迭代时都会保留上一次迭代时适应度最高(也即评价结果最优)的n个特征表达式,除这n个特征表达式之外,每一次迭代时可以随机生成或者通过变换得到新的特征表达式。在本申请优选的实施方式中,为了实现既能保留优势特征,又能进一步生成适应度更高的特征,创新地提出了基于深度优先编码(Depth-FirstPrograming,DEP)方式下的迭代算法,与传统的基于基因表达编码(GeneExpressionPrograming,GEP)的编码方式不同,基于DFP的编码方法是以深度优先的方式遍历特征表达式的所有分支,可以有效地将子表达式完整地保留下来。本申请实施例基于GEP方式下的迭代任务执行过程具体包括:步骤1:执行迭代任务的子节点基于第N代适应度评价任务的评价结果,从第N代适应度评价任务评价的m个特征表达式中选择适应度最高的n个特征表达式。这里,m为大于n的正整数。在传统的遗传算法中,在选择优势个体的时候,需要根据种群中个体的适应度从高到低分配被选择概率,然后按照分配的被选择概率进行优势个体的选取。但这种方式通常很难有效地将优势个体保留。本申请实施例采用的方式是将上一次迭代产生的最优的一些特征表达式直接保留下来,而不是以概率选择的形式。优选地,为了避免出现过多冗余特征,增加特征生成的复杂度,可以在步骤1之后,剔除冗余特征,具体地,若在所述m个特征表达式中,存在适应度相同的特征表达式,则剔除冗余的k个特征表达式,以使得在剩余的特征表达式中不存在适应度相同的特征表达式;在所述剩余的特征表达式中,选择适应度最高的n个特征表达式,并将步骤2~4中的m减k。这里,k为小于m的正整数。步骤2:从所述m个特征表达式中随机选择两个特征表达式,按照预设的交叉概率,从这两个特征表达式中分别选择一个子表达式进行交叉,保留随机交叉后的一个特征表达式;重复该步骤m-n次,得到保留的随机交叉后的m-n个特征表达式。为了保证新生成特征表达式的合法性,基于DFP编码的交叉是在两个特征表达式中分别找到一个完整的子表达式进行交叉,这里,以表达树的形式来表示表达式,如图3所示。由于采用了深度优先的编码方法,一个完整的子表达式在编码后是连续的字符串,所以很容易找到。这种交叉方式不仅保证了交叉后特征表达式的合法性,同时也可以保证子表达式的完整性,使得优势子表达式可以得到有效地继承。另外,为了防止陷入局部最优,在交叉过程中,优选的n个特征表达式与其它特征表达式都参与交叉。比如,在m个特征表达式中,随机选择两个特征表达式Xi和Xj,生成一个满足[0,1]之间均匀分布的随机数p,如果p<交叉概率(pCross),则对特征表达式Xi=(A-B)×(C+D)和Xj=A+(C+D-B)进行子表达式交叉,比如,可以将Xi的子表达式(A-B)与Xj的子表达式(C+D-B)进行交换,将“从第N代适应度评价任务评价的m个特征表达式中随机选择两个特征表达式”的动作重复m-n次(每次是否真正进行了交 叉则是概率性的),每次保留一个交叉后的新的特征表达式或者若未进行交叉则保留一个随机选择的特征表达式。步骤3:按照预设的变异概率,对所述保留的随机交叉后的m-n个特征表达式中的元素进行变异处理,得到随机变异后的m-n个特征表达式。该步骤也即针对除适应度最高的n个特征表达式之外的m-n个特征表达式,对其中每个特征表达式按照变异概率(pMutation)进行变异,比如在所述m-n个特征表达式中,随机选择一个特征表达式Xi,生成一个满足[0,1]之间均匀分布的随机数p,如果p<pMutation,则对Xi进行变异。为了保证变异后特征表达式的合法性,以及子表达式的完整性,变异方式可以分为以下四种,在具体变异时,可以随机选择其中一种:第一种:将该特征表达式中的一个单特征节点用一个子表达式代替;所述单特征节点是指该特征表达式中的一种数据特征或一个算符。在这种变异方式下,随机将特征表达式中的一个单特征节点用一个子表达式替代,如图4中所示。由于过于复杂的特征在可解释性等方面存在劣势,因此优选增加的子表达式最大深度为2。第二种:将该特征表达式中的一个子表达式缩减为一个单特征节点。如图5所示,这种变异操作可以看作是第一种的逆操作。出于编码的需要,在剪切子表达树的时候,如果起始节点既有左子树又有右子树,可以选择总剪除当前节点和左子树。第三种:将该特征表达式中的一个单特征节点用随机生成的单特征节点代替。在这种变异方式下,对于数据特征节点,变异后还是数据特征节点;对于算符节点,变异后也还是算符节点,节点的子树个数也不能发生变化。如图6中所示,算符“-”被替换为”/”。第四种:将该特征表达式用随机生成的新的特征表达式代替。由于上述第一~三种变异都是在原来的m个特征表达式基础上的变化,为 了防止陷入局部最优,可以在一定概率下,随机生成一个新的特征表达式来替代被选中的特征表达式。步骤4:将所述适应度最高的n个特征表达式和所述随机变异处理后的m-n个特征表达式所分别对应的编码个体,确定为第N+1代适应度评价任务中包含的m个编码个体。S110:主节点基于所述编码文件生成多个第N+1代适应度评价任务,并将每一个第N+1代适应度评价任务分别下发给不同的子节点,执行S104,之后,将N加1,返回步骤S105。为了进一步说明本申请实施例的思想,下面通过一个具体的例子作进一步说明。如表五所示,存在50个数据样本,它们分别属于鸢尾属下的三种亚属中的一种,分别是山鸢尾、变色鸢尾和维吉尼亚鸢尾,每一个样本初始有四个数据特征,分别是花萼长度、花萼宽度、花瓣长度、花瓣宽度。花萼长度A花萼宽度B花瓣长度C花瓣宽度D属种Y5.13.51.40.2山鸢尾4.931.40.2山鸢尾4.73.21.30.2山鸢尾6.62.94.61.3变色鸢尾5.22.73.91.4变色鸢尾523.51变色鸢尾6.32.85.11.5变色鸢尾6.12.65.61.4变色鸢尾7.736.12.3变色鸢尾……………………变色鸢尾表五在前端界面中,用户选择基于深度优先编码(DFP)的特征生成算法,选择Gini系数来评价适应度。同时,用户设置交叉概率pCross和变异概率pMutation;比如,设置pCross=0.5,pMutation=0.6。将上述四个数据特征记为{A,B,C,D},算符集合为{+,-,×,/}。 在初始化任务中,按照DFP编码方式,随机生成50个特征表达式,每个特征表达式代表一个新生成的特征,比如,新生成的特征表达式(A-B)/(C+D)对应的DFP编码如下表六所示:/-AB+CD表六在适应度评价任务中,计算50个特征表达式各自的适应度Gini(i),其中i={1,2,3….,49,50}。在迭代任务中,对特征表达式进行选择、交叉和变异的操作,来实现对新特征的最佳搜索。具体地,首先选择最优的5个特征表达式(即Gini系数最高的5个特征表达式);然后,保留最优的5个特征表达式,从50个特征表达式中随机选择两个Xi和Xj,生成一个满足[0,1]之间均匀分布的随机数p,如果p<pCross,则对Xi=(A-B)×(C+D)和Xj=A+(C+D-B)进行特征交叉,如图3所示,Xi的左子树(即左边的一个子表达式)被选择与Xj的右子树(即右边的一个子表达式)进行交换。这个随机选择两个新特征的动作重复45次,每次保留随机交叉后的一个特征表达式(若按照交叉概率进行了交叉,则保留交叉后的一个新的特征表达式,否则,保留没有交叉的一个特征表达式);最后,仍然保留最优的5个特征表达式,从随机交叉后的45个特征表达式(可能是按照概率交叉后的、也可能是按照概率没有被交叉的)中,随机选择一个新的特征表达式Xi,生成一个满足[0,1]之间均匀分布的随机数p,如果p<pMutation,则对Xi进行变异,再针对上述第一~四种变异方式,按照相同的概率随机选择一种变异方式进行变异。这种随机选择一个特征表达式进行变异的操作重复45次,得到按照概率变异后或没有变异的45个特征表达式,加上所述最优的5个特征表达式,对这50个特征表达式继续评价,重复上述过程。如表七所示,加入新生成的特征表达式后,与只有原始特征相比,明显提升了模型分类的准确率。表七基于同一发明构思,本申请实施例中还提供了一种与特征生成方法对应的特征生成系统,由于该系统解决问题的原理与本申请实施例特征生成方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。如图7所示,为本申请实施例提供的特征生成系统结构示意图,包括:主节点71,用于在接收到执行第N代适应度评价任务的多个子节点发送的评价结果后,若确定N等于最大迭代次数,则向选择的一子节点下发输出任务,否则,向选择的一子节点下发迭代任务;还用于,基于执行迭代任务的子节点生成的编码文件生成多个第N+1代适应度评价任务,并将每一个第N+1代适应度评价任务分别下发给不同的子节点,其中,每一个适应度评价任务中包含一个编码个体;执行输出任务的子节点72,用于基于第N代适应度评价任务的评价结果,确定并输出适应度最高的n个特征表达式;所述适应度最高的n个特征表达式是指按照适应度由高到低排列后的前n个特征表达式;执行迭代任务的子节点73,用于基于所述第N代适应度评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点;其中,所述多个编码个体中包含第N代适应度评价任务评价出的适应度最高的n个特征表达式所对应的n个编码个体;执行适应度评价任务的子节点74,用于针对被分配的适应度评价任务中的编码个体所指示的特征表达式进行适应度计算,并将计算得到的适应度作为评价结果发送给所述主节点。可选地,所述编码个体为采用深度优先编码DFP的方式生成的;所述执行迭代任务的子节点73具体用于:基于第N代适应度评价任务的评价结果,从第N代适应度评价任务评价 的m个特征表达式中选择适应度最高的n个特征表达式;从所述m个特征表达式中随机选择两个特征表达式,按照预设的交叉概率,从这两个特征表达式中分别选择一个子表达式进行交叉,保留随机交叉后的一个特征表达式;重复该步骤m-n次,得到保留的随机交叉后的m-n个特征表达式;按照预设的变异概率,对所述保留的随机交叉后的m-n个特征表达式中的元素进行变异处理,得到随机变异后的m-n个特征表达式;将所述适应度最高的n个特征表达式和所述随机变异处理后的m-n个特征表达式所分别对应的编码个体,确定为第N+1代适应度评价任务中包含的m个编码个体。可选地,所述执行迭代任务的子节点73具体用于根据以下步骤对所述保留的随机交叉后的m-n个特征表达式中的元素进行变异处理:针对任一特征表达式,从以下处理方式中随机选择一种进行变异处理:将该特征表达式中的一个单特征节点用一个子表达式代替;所述单特征节点是指该特征表达式中的一个数据或一个算符;将该特征表达式中的一个子表达式缩减为一个单特征节点;将该特征表达式中的一个单特征节点用随机生成的单特征节点代替;将该特征表达式用随机生成的新的特征表达式代替。可选地,所述执行迭代任务的子节点73具体用于根据以下步骤从第N代适应度评价任务评价的m个特征表达式中选择适应度最高的n个特征表达式:若在所述m个特征表达式中,存在适应度相同的特征表达式,则剔除冗余的k个特征表达式,以使得在剩余的特征表达式中不存在适应度相同的特征表达式;在所述剩余的特征表达式中,选择适应度最高的n个特征表达式,并将m减k。可选地,所述主节点71还用于:在接收到特征生成任务后,从数据服务器上获取执行所述特征生成任务所 需的数据文件,并将获取的数据文件传输给集群系统中的每台集群计算机器;所述执行适应度评价任务的子节点74具体用于:从所在集群计算机器中读取被分配的适应度评价任务中的编码个体所指示的特征数据,并将读取的特征数据代入该编码个体对应的特征表达式,通过调用所在集群计算机器上的适应度评价函数,对代入特征数据后的特征表达式进行适应度计算。可选地,所述主节点71还用于:向选择的一子节点下发该主节点接收的特征生成任务所对应的初始化任务;所述系统还包括:执行初始化任务的子节点75,用于通过调用所在集群计算机器上的初始化函数,随机生成包含多个初始化的编码个体的编码文件;所述主节点71还用于:基于执行初始化任务的子节点75生成的多个初始化的编码个体,生成多个第一代适应度评价任务,并将生成的每一个第一代适应度评价任务分别下发给不同的子节点。可选地,所述执行输出任务的子节点72具体用于:通过调用所述主节点存储在文件系统中的所述第N代适应度评价任务的评价结果,确定适应度最高的n个特征表达式,并输出反馈给用户的、用于指示所述适应度最高的n个特征表达式的特征生成结果报告,以及输出用于后续调用的该适应度最高的n个特征表达式所对应的特征数据。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1