一种特征筛选方法及***
技术领域
本申请涉及互联网技术领域,尤其涉及一种特征筛选方法及***。
背景技术
随着互联网信息技术的发展,通过互联网为用户提供的业务服务种类越来越多,如何更好地为用户提供业务服务是互联网行业中的一个重要问题。
为了更好地为用户提供业务服务,通常需要基于已获取的用户信息来为用户提供相适应的业务服务,比如,基于用户的收入水平,来为用户提供相应的信息推介服务。而对于用户收入水平这种信息,用户通常不会主动提供,也通常不容易通过其它途径直接获取。这时,可以基于已知的用户的多个特征的数据来预测未知的该用户的收入水平,这多个特征可以包括年龄、所在城市、兴趣爱好等等。由于涉及的特征较多,而实际真正对预测结果有影响的特征并不多,大量无用或冗余的特征会导致预测效果及预测效率的下降。因此,需要根据预测目标对已有特征进行筛选,也即按照设定的规则、标准、模型或需求对原始特征进行选择。在满足设定条件的情况下,采用特定的评价函数,选择一个使得评价标准最优的特征组合。一般地,需要基于采集的历史数据进行特征筛选。
在存在大量原始特征的情况下,由原始特征组成的特征组合也非常多,在进行以特征筛选为目的特征组合评价时,通常存在大数据处理能力不足,评价效率较低的问题,从而限制了特征筛选的效率。
发明内容
本申请实施例提供一种特征筛选方法及***,用以解决特征筛选效率较低的问题。
本申请实施例提供一种特征筛选方法,包括:
步骤A、主节点在接收到执行第N代评价任务的多个子节点发送的评价结果后,若确定N等于最大迭代次数,则向选择的一子节点下发输出任务,否则,向选择的一子节点下发迭代任务;
步骤B、执行输出任务的子节点基于完成的N代评价任务的评价结果,确定并输出评价结果最优的特征组合;
步骤C、执行迭代任务的子节点基于所述第N代评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点;其中,每一个编码个体标识一个待评价的特征组合;
步骤D、所述主节点基于所述编码文件生成多个第N+1代评价任务,并将每一个第N+1代评价任务分别下发给不同的子节点,其中,每一个评价任务中包含一个编码个体;
步骤E、执行评价任务的子节点针对被分配的评价任务中的编码个体所指示的特征组合进行评价计算,并将评价结果发送给所述主节点;将N加1,返回步骤A。
可选地,在步骤A之前,还包括:
所述主节点在接收到特征筛选任务后,从数据服务器上获取执行所述特征筛选任务所需的数据文件,并将获取的数据文件传输给集群***中的每台集群计算机器;
在步骤E中,所述执行评价任务的子节点进行评价计算,包括:
所述执行评价任务的子节点从所在集群计算机器中读取被分配的评价任务中的编码个体所指示的特征组合中每个特征的特征数据,通过调用所在集群计算机器上的评价函数,对该特征组合进行评价计算。
可选地,在步骤A之前,还包括:
主节点向选择的一子节点下发该主节点接收的特征筛选任务所对应的初始化任务;执行初始化任务的子节点通过调用所在集群计算机器上的初始化函数,随机生成包含多个初始化的编码个体的编码文件;
所述主节点基于所述多个初始化的编码个体,生成多个第一代评价任务,并将生成的每一个第一代评价任务分别下发给不同的子节点。
可选地,步骤B中,执行输出任务的子节点基于完成的N代评价任务的评价结果,确定并输出评价结果最优的特征组合,包括:
所述执行输出任务的子节点,通过调用所述主节点存储在文件***中的所述第N代评价任务的评价结果,以及每一代评价任务对应的中间数据文件,确定所述评价结果最优的特征组合,其中每一代评价任务对应的中间数据文件中存储有该代评价任务对应的最优的特征组合;基于所述评价结果最优的特征组合,输出反馈给用户的特征筛选结果报告,以及用于后续调用的所述评价结果最优的特征组合所对应的特征数据。
可选地,步骤B中,执行输出任务的子节点基于完成的N代评价任务的评价结果,确定并输出评价结果最优的特征组合,包括:
所述执行输出任务的子节点通过调用所述主节点存储在文件***中的所述第N代评价任务的评价结果,确定所述评价结果最优的特征组合;基于所述评价结果最优的特征组合,输出反馈给用户的特征筛选结果报告,以及用于后续调用的所述评价结果最优的特征组合所对应的特征数据。
可选地,所述编码个体的编码位数等于用于筛选的特征总数,编码个体中每一位编码的取值用于标识该编码个体所对应的特征组合中是否包含这位编码所对应的特征。
本申请实施例提供一种特征筛选***,包括:
主节点,用于在接收到执行第N代评价任务的多个子节点发送的评价结果后,若确定N等于最大迭代次数,则向选择的一子节点下发输出任务,否则,向选择的一子节点下发迭代任务;还用于,基于执行迭代任务的子节点生成的编码文件生成多个第N+1代评价任务,并将每一个第N+1代评价任务分别下发给不同的子节点,其中,每一个评价任务中包含一个编码个体;
执行输出任务的子节点,用于基于完成的N代评价任务的评价结果,确定并输出评价结果最优的特征组合;
执行迭代任务的子节点,用于基于所述第N代评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点;其中,每一个编码个体标识一个待评价的特征组合;
执行评价任务的子节点,用于针对被分配的评价任务中的编码个体所指示的特征组合进行评价计算,并将评价结果发送给所述主节点。
可见,本申请实施例实际提出了一种由负责协调调度的主节点和各个在主节点的指示下执行任务的子节点组成的迭代框架,相比流式的计算,基于该迭代框架所进行的迭代并行计算可以大大缩减计算时间,提高特征筛选效率。另外,主节点在向子节点下发评价任务时,并没有直接将特征数据传输给执行评价任务的子节点,而是采用编码个体的形式向其指示需要评价的特征组合,从而可以减少数据传输量,增加传输效率,并减少内存占用。
附图说明
图1为本申请实施例提供的特征筛选方法流程图;
图2为基于迭代计算框架进行任务调度的示意图;
图3为迭代调度框架示意图;
图4为本申请实施例提供的特征筛选***结构示意图。
具体实施方式
本申请实施例中,整个迭代进程包括:由选择的一个子节点执行的初始化任务、由多个子节点并行执行的每一代评价任务、由选择的一个子节点执行的迭代任务、以及在执行完全部的评价任务后执行的输出任务;主节点负责为各个子节点分配相适应的任务、进行整个迭代进程的协调调度。相比流式的计算,迭代并行计算可以大大缩减计算时间,提高特征筛选效率。另外,主节点在向子节点下发评价任务时,并没有直接将特征数据传输给执行评价任务的子节点,而是采用编码个体的形式向其指示需要评价的特征组合,从而可以减少数据传输量,增加传输效率,并减少内存占用。
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,需要说明的是,基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
如图1所示,为本申请实施例提供的特征筛选方法,图2为基于迭代计算框架进行任务调度的示意图,包括:
S101:主节点向选择的一子节点下发该主节点接收的特征筛选任务所对应的初始化任务。
在上述步骤中,主节点下发初始化任务,具体可以向执行初始化任务的子节点指示如表一所示的以下参数信息:
参数名称 |
参数类型 |
参数含义 |
filename |
String |
数据文件名称 |
fieldSize |
Int |
数据文件字段总数 |
popSize |
Int |
种群中个体数量 |
parameter |
String |
算法参数 |
表一
其中,数据文件名称(filename)这一字符串(String)类型的参数用于指示数据样本所在的数据文件,数据文件字段总数(fieldSize)这一整型(Int)参数用于指示数据文件中的字段数量,每一个字段标识一种特征。种群中个体数量(popSize)这一整型(Int)参数用于指示初始化任务中生成的编码个体的数量,每一个编码个体对应一种特征组合。算法参数(parameter)为String类型的参数,以关键字-值(key-value)对的形式存储,这里作为备用项。
上述参数信息可以是由用户通过前端界面输入的信息。具体地,用户在网页客户端,通过前端界面的引导,进行数据导入和需求设定,最终向后端发起任务请求。具体包含三个子流程:提交数据、选择算法和设置参数。其中,提交数据是指用户通过前端界面输入待处理数据对应的数据表(数据文件)名称,并勾选需要进行处理的字段和设置字段类型;选择算法,是指用户在提交数据后,根据所选字段类型遴选算法,并给出一些建议,用户可以根据实际需求选择对应的算法,也可以提交自定义的算法,比如,迭代算法(或称特征筛选算法,也即执行迭代任务的子节点使用的算法)可选择排序算法、遗传算法、前向算法、后向算法、拟退火算法、层次聚类等,评价算法(也即执行评价任务的子节点使用的算法)可选择随机森林算法、逻辑回归算法、线性回归算法、基尼系数(Gini)法、朴素贝叶斯算法等;设置参数,是指对所选算法的参数进行设定,所有参数都会有缺省值供用户参考。在这三个子流程结束之后,将所有相关信息汇总至一个任务请求中,发送至后端,然后,执行自S101起的各个后端计算流程。后端运算也就是调用相关算法进行计算的过程,这一过程与用户是隔离的,可以通过前端接口查询任务运行状态,以滚动日志的形式显示给用户,在评价任务全部执行完成后,可以执行结果输出,具体地,读取存有结果的文件(如后续介绍的json文件),解析、并以一定的可视化形式展现给用户。
S102:执行初始化任务的子节点通过调用所在集群计算机器上的初始化函数,随机生成包含多个初始化的编码个体的编码文件;其中,每一个编码个体标识一个待评价的特征组合。
这里,执行初始化任务的子节点(Slave节点)根据主节点的指示,通过脚本方式调用所在集群计算机器上的源码库中的相关算法源代码(也即初始化函数),生成编码文件,同时生成的还可以包括中间数据文件,将编码文件和中间数据文件返回到主节点。这里的中间数据文件中包含一些后续分析可能需要用到的中间结果,在初始化任务中,由于还没有中间结果产生,可以将该中间数据文件中的数据设为空值或默认值,可以将其保存在主节点(Master节点)的文件***里,以供后续迭代计算进行调用。另外,在后续调度过程中,每一次迭代产生的编码文件和中间数据文件也都会被存储在主节点的文件***中,因此,一旦出现***故障,即可以恢复到***故障前一次迭代处继续计算,可恢复性较强。
在具体实施中,所述编码文件中的每一个编码个体用于标识一种特征组合,编码个体中的每一位编码用于标识该特征组合中的一种特征。比如,对于一个数据表形式的数据文件,若存在[Y,X1,X2,X3]四个字段,如果某个评价任务需要处理其中Y和X1两个字段,则对应的编码个体为[1,1,0,0]。
S103:主节点基于所述多个初始化的编码个体,生成多个第一代评价任务,并将生成的每一个第一代评价任务分别下发给不同的子节点;其中,每一个评价任务中包含一个编码个体。
本申请实施例中,为了减少数据传输量,主节点在向子节点下发评价任务时,并没有直接将特征数据传输给执行评价任务的子节点,而是采用编码个体的形式向其指示需要评价的特征组合,从而可以减少数据传输量,增加传输效率,并减少内存占用。
在S103中,主节点可以通过线程休眠(sleep)的方式等待初始化任务结束,然后根据编码文件中编码个体的数量来确定生成第一代评价任务的数量,并创建各个评价任务。具体地,针对每个评价任务,可以生成一个子任务标识(Identity,ID)和种群个体标识(Identity,ID),并将子任务ID、种群个体ID、编码个体、以及算法参数等作为评价任务的任务执行信息存储到任务队列中,然后在任务队列中取出各个评价任务分发给每个执行评价任务的子节点。这里,执行每一代评价任务的子节点可以是主节点随机选择的,也可以是主节点根据当前各个子节点的负载情况选择的。
如表二所示,为执行评价任务的子节点接收到的各个参数信息:
filename |
String |
数据文件名称 |
JobID |
String |
任务ID |
popID |
String |
种群个体ID |
individual |
String |
编码个体 |
parameter |
String |
算法参数 |
表二
在上述参数中,数据文件名称(filename)、任务ID(JobID)、种群个体ID(popID)、编码个体(individual)、算法参数(parameter)都是字符串类型的参数。
S104:执行评价任务的子节点针对被分配的评价任务中的编码个体所指示的特征组合进行评价计算,并将评价结果发送给所述主节点。
这里,执行评价任务的子节点对分发的任务进行处理,具体地,调用对应的评价函数进行计算,并将评价结果、任务ID、种群个体ID、以及编码个体写入一个以任务ID命名的json文件中,返回到主节点的文件***里。针对任务标识ID,主节点可以向任一执行评价任务的子节点发送包含任务ID的执行进度查询请求,并接收所述任一执行评价任务的子节点基于所述任务ID返回的执行进度信息。针对种群个体标识ID;主节点在接收到执行该评价任务的子节点发送的包含所述种群个体ID和编码个体的评价结果之后,可以将该子节点发送的种群个体ID和编码个体,与下发给该子节点的评价任务中的种群个体ID和编码个体进行匹配,以校验该子节点反馈的评价结果的准确性。
在S104中,执行评价任务的子节点可以根据编码个体读取对应字段的特征数据,而不用读取所有字段的特征数据,从而可以减小对内存空间的占用,更好地实现任务并行处理。优选地,主节点在接收到特征筛选任务后,可以首先从数据服务器上获取执行所述特征筛选任务所需的数据文件,并将获取的数据文件传输给集群***中的每台集群计算机器;相应地,执行评价任务的子节点从所在集群计算机器中读取被分配的评价任务中的编码个体所指示的特征数据,通过调用所在集群计算机器上的评价函数,对该特征组合进行评价计算。这里,为了便于子节点读取所述编码个体所指示的特征数据,主节点预先将特征数据从数据服务器下载到子节点所在的集群计算机器上。在实际实施中,子节点也可以直接从数据服务器上读取所需特征数据,但这样自然会很大程度上降低评价效率。
S105:主节点在接收到执行第N代评价任务的多个子节点发送的评价结果后,判断N是否等于最大迭代次数,若是,则进入S106,否则,执行S108。这里的N为大于或等于1的正整数。
这里,所述最大迭代次数可以是预先设置的,或基于特定的迭代算法及用于特征组合的特征种数来确定的,见最后与表五相关的举例。
在具体实施过程中,当某次迭代中主节点分发出的所有评价任务全部执行完成,主节点会将各子节点返回的评价结果进行汇总,生成一个csv文件存储在文件***中以供调用。同时,主节点会对迭代进程进行判定,如果迭代已经满足终止条件则终止迭代,并指示某个子节点执行输出任务,若不满足终止条件,则指示某个子节点执行迭代任务,即生成新的编码文件和新的中间数据文件,并返回给主节点。
S106:主节点向选择的一子节点下发输出任务。
如下表三所示,为执行输出任务的子节点接收到的参数信息:
参数名称 |
参数类型 |
参数含义 |
filename |
String |
数据文件名称 |
popSize |
Int |
种群中个体数量 |
parameter |
String |
算法参数 |
PVfilename |
String |
编码个体及对应的评价函数返回值 |
Midfilename |
String |
中间数据文件名称 |
IterNum |
Int |
当前迭代次数 |
表三
其中,表三中的算法参数(parameter)为String类型的参数,以关键字-值(key-value)对的形式存储。
S107:执行输出任务的子节点基于完成的N代评价任务的评价结果,确定并输出评价结果最优的特征组合。
在具体实施中,如果迭代进程终止,主节点对第N代评价任务的评价结果进行汇总,将汇总后的评价结果存储在文件***中。执行输出任务的子节点通过调用所述文件***中的评价结果,还可以结合存储在所述文件***中的中间数据文件,输出反馈给用户的、用于指示最优特征组合的特征筛选结果报告,以及输出用于后续调用的该最优特征组合所对应的特征。比如,执行输出任务的子节点输出一个json文件和一个csv文件,其中json文件用于保存格式化结果,在将其返回前端后生成显示给用户的特征筛选结果报告;csv文件则用于保存最终筛选出的特征所对应的特征数据,最后会将其上传到服务器上,以供用户后续调用。另外,***会自动删除所有相关文件,释放硬盘空间。
在具体实施中,基于迭代算法(也即特征筛选算法)的不同,执行输出任务的子节点确定评价结果最优的特征组合的方式也不同。比如,若是基于遗传算法、模拟退火算法,则可以直接基于最后一代评价任务的评价结果,确定并输出评价结果最优的特征组合,若是基于前向算法、层次聚类算法,则需要基于每一代评价任务的评价结果,确定并输出评价结果最优的特征组合,排序算法作为一种特例,只迭代一次,因此适用上述两种情况。
基于前向算法(及其它任何需要用到每一代评价任务的评价结果的方式):所述主节点将第N代评价任务的评价结果,以及执行迭代任务的子节点每次在发送所述编码文件时发送的中间数据文件,指示给所述执行输出任务的子节点(这里,可以只向该子节点发送中间数据文件的名称,子节点基于该中间数据文件的名称调用主节点文件***中的中间数据文件);其中,每一代评价任务对应的中间数据文件中包含该代评价任务评价出的评价结果最优的特征组合及其对应的评价结果;所述执行输出任务的子节点,基于所述第N代评价任务的评价结果,以及每一代评价任务对应的中间数据文件,确定所述评价结果最优的特征组合;基于所述评价结果最优的特征组合,输出反馈给用户的特征筛选结果报告,以及用于后续调用的所述评价结果最优的特征组合所对应的特征数据。
基于遗传算法(及其它任何只需要用到最后一代评价任务的评价结果的方式):所述主节点将第N代评价任务的评价结果,发送给所述执行输出任务的子节点;所述执行输出任务的子节点基于所述第N代评价任务的评价结果,确定所述评价结果最优的特征组合;基于所述评价结果最优的特征组合,输出反馈给用户的特征筛选结果报告,以及用于后续调用的所述评价结果最优的特征组合所对应的特征数据。
S108:主节点向选择的一子节点下发迭代任务。
这里,执行迭代任务的子节点可以是主节点随机选择的,也可以是主节点根据当前各个子节点的负载情况选择的。
如表四所示,为执行迭代任务的子节点接收到的参数信息:
参数名称 |
参数类型 |
参数含义 |
filename |
String |
数据文件名称 |
popSize |
Int |
种群中个体数量 |
parameter |
String |
算法参数 |
PVfilename |
String |
编码个体及对应的评价函数返回值 |
Midfilename |
String |
中间数据文件名称 |
IterNum |
Int |
当前迭代次数 |
表四
S109:执行迭代任务的子节点基于所述第N代评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点。
该步骤中,主节点选择的执行迭代任务的子节点采用脚本方式调用迭代函数,根据第N代评价任务的评价结果,生成用于执行第N+1代评价任务的编码文件,还可以通过调用主节点保存的执行第N-1代评价任务后的中间数据文件,生成执行第N代评价任务后的中间数据文件并返回给主节点,中间数据文件中可以包含后续分析可能需要用到的中间结果,比如第N代评价任务后评价出的评价结果最优的特征组合及其预测误差值。
S110:主节点基于所述编码文件生成多个第N+1代评价任务,并将每一个第N+1代评价任务分别下发给不同的子节点。执行S104,然后将N加1,执行S105。
为了进一步说明本申请实施例的思想,下面通过一个具体的例子作进一步说明。
如图3所示,迭代计算可以采用celery框架,任务的分发通过rabbitmq实现,从而可以支持集群的水平扩展。此外,本申请实施例采用了调用源代码库的形式,将迭代计算框架和具体算法分离开来,实现了迭代计算框架的独立性。
为了进一步说明本申请实施例的思想,下面通过一个具体的例子作进一步说明。
如下表五所示,为用户的收入数据表,涉及100种特征,如年龄、姓名、城市、消费水平、兴趣爱好、教育程度等特征的指数值,采用本申请实施例筛选出对预测收入的贡献值最高的特征组合,也即预测出的收入和实际收入之间的差值的绝对值最小。
收入 |
年龄 |
消费 |
城市水平 |
还款 |
…… |
转账 |
67 |
68 |
73 |
78 |
65 |
63 |
67 |
75 |
74 |
71 |
71 |
62 |
58 |
70 |
83 |
64 |
66 |
67 |
67 |
74 |
74 |
72 |
66 |
65 |
65 |
64 |
61 |
71 |
62 |
60 |
69 |
61 |
63 |
63 |
70 |
68 |
63 |
67 |
67 |
65 |
72 |
74 |
80 |
76 |
77 |
76 |
67 |
68 |
71 |
68 |
63 |
62 |
58 |
60 |
57 |
69 |
表五
在前端界面中,用户选择前向算法作为搜索算法,选择误差绝对值作为评价标准,执行:
步骤1:将100个变量变成用0/1来标示的字符串(编码个体);如只选择年龄,则编码为10000.....00,1代表年龄,表示需要选择年龄对应的数据进行计算;如只选择消费,则编码为01000....00,第一位0代表年龄,第二位1代表消费,表示需要选择消费对应的数据进行计算;……一共采用100个字符串来表示100个编码个体。
步骤2:将这100个字符串发送给100个子节点(slave)进行并行计算,然后将这100个并行计算的结果进行汇总,确定保留消费这个特征,因为用消费去计算收入,预测出来的误差绝对值最小,计最低误差值为a1(中间数据文件中的数据)。
步骤3:在第一次迭代得到的执行结果的基础上,进行第二次迭代。这次是在保留的消费变量的基础上再加入一个变量,使得预测误差最小。如选择消费和年龄,则编码为11000…00,如选择消费和城市水平,则编码为01100....00,这样,又进行了99个并行计算(也即消费和其余99个特征的组合),在这99个组合中,汇总得到误差值最低的一个包含2个特征的特征组合,计最低误差值为a2(中间数据文件中的数据包括a1、a2)。
步骤4:在第二次迭代得到的执行结果的基础上,进行第三次迭代,即在第二次迭代得到的最优组合的基础上,再加入一个特征,基于98个并行计算结果,得到误差值最低的一个包含3个特征的特征组合,计最低误差值为a3(中间数据文件中的数据包括a1、a2、a3)。
步骤5:在第98次迭代得到的执行结果的基础上,进行第99次迭代,即在第98次迭代得到的最优组合的基础上,再加入一个特征,基于2个并行计算结果,得到误差值最低的一个包含99个特征的特征组合,计最低误差值为a99(中间数据文件中的数据包括a1、a2、a3……a99)。
步骤6:在这99次迭代计算中,找到误差值最低的特征组合,即在a1-a99中,找到最低误差值,将该最低误差值对应的特征组合最为最终得到的最优的组合。
基于同一发明构思,本申请实施例中还提供了一种与特征筛选方法对应的特征筛选***,由于该***解决问题的原理与本申请实施例的特征筛选方法相似,因此该***的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,为本申请实施例提供的特征筛选***结构示意图,包括:
主节点41,用于在接收到执行第N代评价任务的多个子节点发送的评价结果后,若确定N等于最大迭代次数,则向选择的一子节点下发输出任务,否则,向选择的一子节点下发迭代任务;还用于,基于执行迭代任务的子节点生成的编码文件生成多个第N+1代评价任务,并将每一个第N+1代评价任务分别下发给不同的子节点,其中,每一个评价任务中包含一个编码个体;
执行输出任务的子节点42,用于基于完成的N代评价任务的评价结果,确定并输出评价结果最优的特征组合;
执行迭代任务的子节点43,用于基于所述第N代评价任务的评价结果,生成包含多个编码个体的编码文件,并发送给所述主节点;其中,每一个编码个体标识一个待评价的特征组合;
执行评价任务的子节点44,用于针对被分配的评价任务中的编码个体所指示的特征组合进行评价计算,并将评价结果发送给所述主节点。
可选地,所述主节点41还用于:
在接收到特征筛选任务后,从数据服务器上获取执行所述特征筛选任务所需的数据文件,并将获取的数据文件传输给集群***中的每台集群计算机器;
所述执行评价任务的子节点44具体用于:
从所在集群计算机器中读取被分配的评价任务中的编码个体所指示的特征组合中每个特征的特征数据,通过调用所在集群计算机器上的评价函数,对该特征组合进行评价计算。
可选地,所述主节点41具体用于:
向选择的一子节点下发该主节点接收的特征筛选任务所对应的初始化任务;
所述***还包括:
执行初始化任务的子节点45,用于通过调用所在集群计算机器上的初始化函数,随机生成包含多个初始化的编码个体的编码文件;
所述主节点41还用于:基于所述执行初始化任务的子节点55生成所述多个初始化的编码个体,生成多个第一代评价任务,并将生成的每一个第一代评价任务分别下发给不同的子节点。
可选地,所述执行输出任务的子节点42具体用于:
通过调用所述主节点存储在文件***中的所述第N代评价任务的评价结果,以及每一代评价任务对应的中间数据文件,确定所述评价结果最优的特征组合,其中每一代评价任务对应的中间数据文件中存储有该代评价任务对应的最优的特征组合;基于所述评价结果最优的特征组合,输出反馈给用户的特征筛选结果报告,以及用于后续调用的所述评价结果最优的特征组合所对应的特征数据。
可选地,所述执行输出任务的子节点42具体用于:
通过调用所述主节点存储在文件***中的所述第N代评价任务的评价结果,确定所述评价结果最优的特征组合;基于所述评价结果最优的特征组合,输出反馈给用户的特征筛选结果报告,以及用于后续调用的所述评价结果最优的特征组合所对应的特征数据。
可选地,所述编码个体的编码位数等于用于筛选的特征总数,编码个体中每一位编码的取值用于标识该编码个体所对应的特征组合中是否包含这位编码所对应的特征。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。