一种样本查找方法及装置与流程

文档序号:14686962发布日期:2018-06-15 04:03阅读:153来源:国知局
本申请涉及数据处理
技术领域
,特别涉及一种样本查找方法及装置。
背景技术
:数据处理相关工作中,数据查找往往占据着比较重要的位置。常用地,可以采用树形结构进行数据查找,但是目前树形结构中节点间存在较多冲突,导致数据查找过程中需要进行更多次数的比较,查找效率低。技术实现要素:为解决上述技术问题,本申请实施例提供一种样本查找方法及装置,以达到减少比较次数,提高查找效率的目的,技术方案如下:一种样本查找方法,包括:确定预先构建的决策树的根节点为当前节点,所述决策树的各个叶子节点各自对应唯一一个样本,所述决策树为利用样本库构建得到;判断所述当前节点对应的样本集合中样本的个数是否为1;若为1,则确定所述当前节点为叶子节点,并将所述叶子节点作为待查找节点;获取所述待查找节点对应的样本;比较待测样本与所述待查找节点对应的样本是否相同;若相同,则确定所述决策树对应的样本集合中存在所述待查样本;若不相同,则确定所述决策树对应的样本集合中不存在所述待查样本;若不为1,则判断所述当前节点对应的样本集合中样本的个数是否大于1;若大于1,则确定所述当前节点的分裂位;若所述待查样本的超长位串属性值中对应所述分裂位的属性值为0,则将所述当前节点的左子节点作为当前节点,并返回执行判断所述当前节点对应的样本集合中样本的个数是否为1的步骤;若所述待查样本的超长位串属性值中对应所述分裂位的属性值为1,则将所述当前节点的右子节点作为当前节点,并返回执行判断所述当前节点对应的样本集合中样本的个数是否为1的步骤。优选的,所述决策树的构建过程,包括:建立树的根节点,将所述样本库作为所述根节点对应的样本集合;将所述根节点作为当前待分裂节点;为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点;确定所述当前待分裂节点的分裂位;检测所述当前待分裂节点对应的样本集合中各个样本的超长位串属性值中,与所述当前待分裂节点的分裂位对应的属性值的大小;将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为0的样本,添加到所述左子节点对应的样本集合中;将所述左子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述左子节点对应的样本集合中的样本的个数为1;将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为1的样本,添加到所述右子节点对应的样本集合中;将所述右子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述右子节点对应的样本集合中的样本的个数为1。优选的,所述确定所述当前待分裂节点的分裂位,包括:将所述当前待分裂节点对应的样本集合中各个样本各自的第i个超长位串属性位作为待检测分裂位,所述i为不大于所述样本的超长位串属性位的位数;若所述待检测分裂位的属性值为1,则将所述待检测分裂位对应的样本作为第一样本,并统计第一样本的个数;若所述待检测分裂位的属性值为0,则将所述待检测分裂位对应的样本作为第二样本,并统计第二样本的个数;计算所述第一样本的个数与所述第二样本的个数的差值的绝对值,作为所述待检测分裂位的分裂结果;将所述i赋值为i+1,直至所述i不小于所述样本的超长位串属性位的位数;将各个所述待检测分裂位的分裂结果中最小的分裂结果对应的待检测分裂位作为所述当前待分裂节点的分裂位。优选的,所述方法还包括:若各个所述待检测分裂位的分裂结果中存在多个最小的分裂结果,则从多个最小的分裂结果各自对应的待检测分裂位中选取一个待检测分裂位,作为所述当前待分裂节点的分裂位。优选的,所述当前待分裂节点对应的样本集合中各个样本的超长位串属性值的确定过程,包括:将所述当前待分裂节点对应的样本集合中各个样本各自的各个属性值转换为位串属性值;从各个所述样本的各个所述位串属性值中确定出最大的位串属性值;将所述最大的位串属性值对应的位串属性长度作为各个所述样本的定长位串属性长度;按照所述定长位串属性长度,将各个所述样本的所述位串属性值转换为定长位串属性值;将各个所述样本的各个所述定长位串属性值进行连接,得到各个所述样本的所述超长位串属性值。一种样本查找装置,包括:第一确定模块,用于确定预先构建的决策树的根节点为当前节点,所述决策树的各个叶子节点各自对应唯一一个样本,所述决策树为利用样本库构建得到;第一判断模块,用于判断所述当前节点对应的样本集合中样本的个数是否为1,若为1,则执行第二确定模块,若不为1,则执行第二判断模块;所述第二确定模块,用于确定所述当前节点为叶子节点,并将所述叶子节点作为待查找节点;获取模块,用于获取所述待查找节点对应的样本;比较模块,用于比较待测样本与所述待查找节点对应的样本是否相同,若相同,则执行第三确定模块,若不相同,则执行第四确定模块;所述第三确定模块,用于确定所述决策树对应的样本集合中存在所述待查样本;所述第四确定模块,用于确定所述决策树对应的样本集合中不存在所述待查样本;所述第二判断模块,用于判断所述当前节点对应的样本集合中样本的个数是否大于1,若大于1,则执行第五确定模块;所述第五确定模块,用于确定所述当前节点的分裂位;第六确定模块,用于若所述待查样本的超长位串属性值中对应所述分裂位的属性值为0,则将所述当前节点的左子节点作为当前节点,并返回执行所述第一判断模块;第七确定模块,用于若所述待查样本的超长位串属性值中对应所述分裂位的属性值为1,则将所述当前节点的右子节点作为当前节点,并返回执行所述第一判断模块。优选的,还包括:决策树构建模块,用于执行以下步骤:建立树的根节点,将所述样本库作为所述根节点对应的样本集合;将所述根节点作为当前待分裂节点;为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点;确定所述当前待分裂节点的分裂位;检测所述当前待分裂节点对应的样本集合中各个样本的超长位串属性值中,与所述当前待分裂节点的分裂位对应的属性值的大小;将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为0的样本,添加到所述左子节点对应的样本集合中;将所述左子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述左子节点对应的样本集合中的样本的个数为1;将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为1的样本,添加到所述右子节点对应的样本集合中;将所述右子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述右子节点对应的样本集合中的样本的个数为1。优选的,所述装置还包括:第八确定模块,用于执行以下步骤:将所述当前待分裂节点对应的样本集合中各个样本各自的第i个超长位串属性位作为待检测分裂位,所述i为不大于所述样本的超长位串属性位的位数;若所述待检测分裂位的属性值为1,则将所述待检测分裂位对应的样本作为第一样本,并统计第一样本的个数;若所述待检测分裂位的属性值为0,则将所述待检测分裂位对应的样本作为第二样本,并统计第二样本的个数;计算所述第一样本的个数与所述第二样本的个数的差值的绝对值,作为所述待检测分裂位的分裂结果;将所述i赋值为i+1,直至所述i不小于所述样本的超长位串属性位的位数;将各个所述待检测分裂位的分裂结果中最小的分裂结果对应的待检测分裂位作为所述当前待分裂节点的分裂位。优选的,所述装置还包括:第九确定模块,用于若各个所述待检测分裂位的分裂结果中存在多个最小的分裂结果,则从多个最小的分裂结果各自对应的待检测分裂位中选取一个待检测分裂位,作为所述当前待分裂节点的分裂位。优选的,所述装置还包括:第十确定模块,用于执行以下步骤:将所述当前待分裂节点对应的样本集合中各个样本各自的各个属性值转换为位串属性值;从各个所述样本的各个所述位串属性值中确定出最大的位串属性值;将所述最大的位串属性值对应的位串属性长度作为各个所述样本的定长位串属性长度;按照所述定长位串属性长度,将各个所述样本的所述位串属性值转换为定长位串属性值;将各个所述样本的各个所述定长位串属性值进行连接,得到各个所述样本的所述超长位串属性值。与现有技术相比,本申请的有益效果为:在本申请中,所述决策树的各个叶子节点各自对应唯一一个样本,保证各个叶子节点之间不存在冲突,在各个叶子节点之间不存在冲突的基础上,可以在当前节点对应的样本集合中样本个数为1时,确定当前节点为叶子节点,并将所述叶子节点作为待查找节点,获取所述待查找节点对应的样本,比较待测样本与所述待查找节点对应的样本是否相同,若相同,则确定所述决策树对应的样本集合中存在所述待查样本,若不相同,则确定所述决策树对应的样本集合中不存在所述待查样本,通过一次比较即可完成待查样本的查找,减少了比较次数,提高了查找效率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请提供的样本查找方法的一种流程图;图2是本申请提供的决策树的一种结构示意图;图3是本申请提供的决策树的另一种结构示意图;图4是本申请提供的决策树的再一种结构示意图;图5是本申请提供的决策树的再一种结构示意图;图6是本申请提供的决策树的再一种结构示意图;图7是本申请提供的样本查找装置的一种逻辑结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请实施例公开了一种样本查找方法,通过确定预先构建的决策树的根节点为当前节点,所述决策树的各个叶子节点各自对应唯一一个样本,所述决策树为利用样本库构建得到,及若所述当前节点对应的样本集合中样本个数为1,则确定所述当前节点为叶子节点,并将所述叶子节点作为待查找节点,及获取所述待查找节点对应的样本,及比较待测样本与所述待查找节点对应的样本是否相同,及若相同,则确定所述决策树对应的样本集合中存在所述待查样本,若不相同,则确定所述决策树对应的样本集合中不存在所述待查样本,及若所述当前节点对应的集合元素个数大于1,则确定所述待查找节点的分裂位,及若所述待查样本的超长位串属性值中对应所述分裂位的属性值为0,则确定所述当前节点的左子节点为当前节点,并返回执行若所述当前节点对应的集合元素个数为1,则确定所述当前节点为叶子节点,并将所述叶子节点作为待查找节点的步骤,及若所述待查样本的超长位串属性值中对应所述分裂位的属性值为1,则确定所述当前节点的右子节点为当前节点,并返回执行若所述当前节点对应的集合元素个数为1,则确定所述当前节点为叶子节点,并将所述叶子节点作为待查找节点的步骤,实现样本的查找。接下来对本申请实施例公开的样本查找方法进行介绍,请参见图1,可以包括:步骤S11、确定预先构建的决策树的根节点为当前节点。本实施例中,所述决策树为利用样本库构建得到。样本库包括的样本越丰富,构建得到的决策树涵盖的内容越全面。一般地,预先构建的决策树包括根节点、中间节点和叶子节点。根节点对应的样本集合中的样本最多,中间节点对应的样本集合中的样本个数少于根节点对应的样本集合中的样本的个数,叶子节点对应的样本的个数少于中间节点对应的样本集合中的样本的个数。所述决策树的各个叶子节点各自对应唯一一个样本。预先构建的决策树的结构可以参见图2,如图2所示,根节点对应的样本集合包括ipanel、decision、tree、demo四个样本,中间节点1对应的样本集合包括decision、demo两个样本,中间节点2对应的样本集合包括ipanel、tree两个样本,叶子节点1对应的样本集合包括decision样本,叶子节点2对应的样本集合包括demo样本,叶子节点3对应的样本集合包括ipanel样本,叶子节点4对应的样本集合包括tree样本。步骤S12、判断所述当前节点对应的样本集合中样本的个数是否为1。若是,则执行步骤S13,若否,则执行步骤S18。步骤S13、确定所述当前节点为叶子节点,并将所述叶子节点作为待查找节点。步骤S14、获取所述待查找节点对应的样本。步骤S15、比较待测样本与所述待查找节点对应的样本是否相同。若相同,则执行步骤S16,若不相同,则执行步骤S17。步骤S16、确定所述决策树对应的样本集合中存在所述待查样本。步骤S17、确定所述决策树对应的样本集合中不存在所述待查样本。步骤S18、判断所述当前节点对应的样本集合中样本的个数是否大于1。若是,则执行步骤S19。步骤S19、确定所述当前节点的分裂位。可以理解的是,若所述当前节点对应的样本集合中样本的个数大于1,说明当前节点不是叶子节点,需要在当前节点的基础上,继续查询叶子节点。具体地,首先需要确定当前节点的分裂位。需要说明的是,决策树中各个节点的分裂位在预先构建的过程中,已经确定,因此本步骤可以理解为:直接获取所述当前节点的分裂位。步骤S110、若所述待查样本的超长位串属性值中对应所述分裂位的属性值为0,则将所述当前节点的左子节点作为当前节点,并返回执行步骤S12。需要说明的是,超长位串属性值为定长的位串属性值。将待查样本的属性值设置为超长位串属性值可以实现基于位进行比较决策,方便计算,速度快。步骤S111、若所述待查样本的超长位串属性值中对应所述分裂位的属性值为1,则将所述当前节点的右子节点作为当前节点,并返回执行步骤S12。在本申请中,所述决策树的各个叶子节点各自对应唯一一个样本,保证各个叶子节点之间不存在冲突,在各个叶子节点之间不存在冲突的基础上,可以在当前节点对应的样本集合中样本个数为1时,确定当前节点为叶子节点,并将所述叶子节点作为待查找节点,获取所述待查找节点对应的样本,比较待测样本与所述待查找节点对应的样本是否相同,若相同,则确定所述决策树对应的样本集合中存在所述待查样本,若不相同,则确定所述决策树对应的样本集合中不存在所述待查样本,通过一次比较即可完成待查样本的查找,减少了比较次数,提高了查找效率。在本申请的另一个实施例中,对所述待查样本的超长位串属性值的确定过程进行介绍,具体可以包括:S1、将所述待查样本的各个属性值转换为位串属性值。位串属性值可以理解为:离散数值。离散数值可以包括但不局限于二进制数。现对将所述待查样本的各个属性值转换为位串属性值的过程进行介绍,具体可以包括:待查样本的属性值为离散数值:可以直接将待查样本的属性值转为二进制数。若待查样本为字符串,则将每一个字符均看作是一个属性,则属性的取值为字符。可以直接使用各个字符的ASCII码值为作为字符串的各个属性值,再将各个属性值转为二进制数。若待查样本为字符,则将字符本身的ASCII码值为作为字符的属性值,再将属性值转为二进制数。例如,字符’a’对应的ASCII码值为92,则对应的位串属性值为[1,1,0,0,0,0,1]。待查样本的属性值为为连续数值:可以对属性进行分段,将连续数值转为离散数值。例如,学生的分数可以看作连续的值。可以按80,60将其分段为优秀、及格、不及格三类,这三类再有数值表示为0,1,2,再将新的类别对应的数值转换为二进制的表示。分别为[0]、[1]、[1,0]。S2、从各个所述位串属性值中确定出最大的位串属性值。S3、将所述最大的位串属性值对应的位串属性长度作为所述待查样本的定长位串属性长度。S4、按照所述定长位串属性长度,将各个所述位串属性值转换为定长位串属性值。按照所述定长位串属性长度,将各个所述位串属性值转换为定长位串属性值可以理解为:将各个所述位串属性值的左侧补0,完成对齐动作,使补齐后的位串属性值的长度为定长位串属性长度。例如,字符‘a’转换出来的位串属性值是[1,1,0,0,0,0,1],位串属性长度为7。但对于ASCII码,有些扩展字符的码值大于128,则对应位串长度为8,则按照位串属性长度为8,对字符’a’对应的位串属性值的左侧补0,补齐后的字符’a’对应的位串属性值为:[0,1,1,0,0,0,0,1]。又如,如果学生的成绩分为三类,分别为0,1,2,位串属性值分别为[0]、[1]、[1,0],由于2为最大值,对应位串属性长度即为最长,所以取其长度为定长位串属性长度,长度为2。所有样本的该属性位串均需对齐到该长度,对齐后,0,1,2对应的位串分别为[0,0]、[0,1]、[1,0]。S5、将各个所述定长位串属性值进行连接,得到所述超长位串属性值。在本申请的另一个实施例中,对所述决策树的构建过程进行介绍,具体可以包括:S1、建立树的根节点,将所述样本库作为所述根节点对应的样本集合。S2、将所述根节点作为当前待分裂节点。S3、为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点。S4、确定所述当前待分裂节点的分裂位。S5、检测所述当前待分裂节点对应的样本集合中各个样本的超长位串属性值中,与所述当前待分裂节点的分裂位对应的属性值的大小。S6、将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为0的样本,添加到所述左子节点对应的样本集合中。S7、将所述左子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述左子节点对应的样本集合中的样本的个数为1。S8、将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为1的样本,添加到所述右子节点对应的样本集合中。S9、将所述右子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述右子节点对应的样本集合中的样本的个数为1。需要说明的是,采用分裂位向节点添加样本的方式,可以保证构建的决策树的层数最少,便于样本的查找。在本申请的另一个实施例中,对确定所述当前待分裂节点的分裂位进行介绍,具体可以包括:S1、将所述当前待分裂节点对应的样本集合中各个样本各自的第i个超长位串属性位作为待检测分裂位,所述i为不大于所述样本的超长位串属性位的位数。S2、若所述待检测分裂位的属性值为1,则将所述待检测分裂位对应的样本作为第一样本,并统计第一样本的个数。S3、若所述待检测分裂位的属性值为0,则将所述待检测分裂位对应的样本作为第二样本,并统计第二样本的个数。S4、计算所述第一样本的个数与所述第二样本的个数的差值的绝对值,作为所述待检测分裂位的分裂结果。S5、将所述i赋值为i+1,直至所述i不小于所述样本的超长位串属性位的位数。S6、将各个所述待检测分裂位的分裂结果中最小的分裂结果对应的待检测分裂位作为所述当前待分裂节点的分裂位。在本申请的另一个实施例中,对前述实施例介绍的确定所述当前待分裂节点的分裂位的实施方式进行优化,具体优化的过程包括:若各个所述待检测分裂位的分裂结果中存在多个最小的分裂结果,则从多个最小的分裂结果各自对应的待检测分裂位中选取一个待检测分裂位,作为所述当前待分裂节点的分裂位。在本申请的另一个实施例中,对当前待分裂节点对应的样本集合中各个样本的超长位串属性值的确定过程进行介绍,具体可以包括:S1、将所述当前待分裂节点对应的样本集合中各个样本各自的各个属性值转换为位串属性值。S2、从各个所述样本的各个所述位串属性值中确定出最大的位串属性值;S3、将所述最大的位串属性值对应的位串属性长度作为各个所述样本的定长位串属性长度。S4、按照所述定长位串属性长度,将各个所述样本的各个所述位串属性值转换为定长位串属性值。S5、将各个所述样本的各个所述定长位串属性值进行连接,得到所述超长位串属性值。现举例对本实施例中的步骤S1-S5进行说明,例如,所述当前待分裂节点对应的样本集合中包括四个样本,分别为:ipanel、decision、tree、demo。由于在这4个样本中,decision的长度最长,为8,所以当前待分裂节点对应的样本集合中各样本的位串属性个数定义为8。其他较短的样本,长度不足,则补0。样本的每个属性可取值均为字符,采用字符的ASCII码值作为位串属性数值,并将位串属性值转换为定长位串属性值,长度为8。最后将各个样本的各个定长位串属性值连接,得到各样本的超长位串属性值,其中,超长位串属性值的长度为8*8=64。ipanel、decision、tree、demo的超长位串属性值分别为:[0,1,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0][0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,1,0][0,1,1,1,0,1,0,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0][0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]。基于前述各个实施例介绍的内容,现举例对前述实施例介绍的决策树的构建过程进行说明,例如,例如,样本库包括四个样本集合,分别为:ipanel、decision、tree、demo,四个样本的超长位串属性值分别为:ipanel的超长位串属性值:[0,1,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]decision的超长位串属性值:[0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,1,0]tree的超长位串属性值:[0,1,1,1,0,1,0,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]demo的超长位串属性值:[0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]。首先建立根结点,其样本集合为(“ipanel”,“decision”,“tree”)选取根结点的分裂位为:11。需要说明的是,分裂位为11,是基于计算机领域习惯将第1个位置称为第0位,而命名的。如下()内所示。可见,该分裂位正好将四个样本均分为两个。实际上还有其他位也满足该性质。当有多个位可用于分裂当前结点时,可以任选一个。本示例选第一个即11。ipanel[0,1,1,0,1,0,0,1,0,1,1,(1),0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]decision[0,1,1,0,0,1,0,0,0,1,1,(0),0,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,1,0]tree[0,1,1,1,0,1,0,0,0,1,1,(1),0,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]demo[0,1,1,0,0,1,0,0,0,1,1,(0),0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]分裂后,11位为0的两个样本decision,demo进入左子结点,11位为1的两个样本ipanel,tree进入右子结点,如图3所示。接着对左子结点寻找分裂位,得到20。需要说明的是,分裂位为11,是基于计算机领域习惯将第1个位置称为第0位,而命名的。如下()所示。该位在两个样本中不同。同样有多个分可以区分两个样本。可以任意取一位用于分裂,本例选用第一个及20作为分裂位。decision[0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,(0),0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,1,0]demo[0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,(1),1,0,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]分裂后,decision进入下一层左子结点,demo进入下一层右子结点。由于新产生的两个结点即decision节点和demo节点,均只有一个结点,故不再分裂,而视为叶子结点,如图4所示。对根结点的右子树进行分裂,首先确定分裂位为3。需要说明的是,分裂位为3,是基于计算机领域习惯将第1个位置称为第0位,而命名的。如下()所示。该位在两个样本中不同。同样有多个分可以区分两个样本。可以任意取一位用于分裂,本例选用第一个即3,作为分裂位。ipanel[0,1,1,(0),1,0,0,1,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]tree[0,1,1,(1),0,1,0,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]分裂后,ipanel进入下一层左子结点,tree进入下一层右子结点。由于新产生的两个结点即ipanel节点和tree节点,均只有一个结点,故不再分裂,而视为叶子结点,如图5所示。当然,在通过执行步骤S1-S9完成决策树的构建后,可以对构建完成的决策树中的叶子节点进行编号,具体可以按照先序遍历的方式对决策树进行遍历,对遍历经过的叶子节点依次递增编号。编号后的决策树可以参见图6。如图6所示,叶子节点decision编号为0,叶子节点demo编号为1、叶子节点ipanel编号为2,叶子节点tree编号为3。叶子结点编号后,可以建立一个数组,完成编号到原始样本的映射。如表1所示。表1编号样本0decision1demo2ipanel3tree这种映射表一般也可以用于查找,即确定某个样本是否在数据集合中。也可以直接将原始样本记录在叶子结点中。叶子结点编号也可以用作扩展属性。则相应扩展属性的映射表可以参见表2。表2编号样本属性0decision1demo2ipanel3tree在这种情况下,实际上完成了key:value这种映射。但实质的流程是先对key建立决策树,得到key对应的编号,再由二次映射数组,完成编号到属性的映射。即key=>index=>value,映射表可以参见表3。表3indexkeyvalue0decision1demo2ipanel3tree接下来对本申请提供的样本查找装置进行介绍,下文描述的样本查找装置与上文描述的样本查找方法可相互对应参照。请参见图7,其示出了本申请提供的样本查找装置的一种逻辑结构示意图,样本查找装置包括:第一确定模块11、第一判断模块12、第二确定模块13、获取模块14、比较模块15、第三确定模块16、第四确定模块17、第二判断模块18、第五确定模块19、第六确定模块110和第七确定模块111。第一确定模块11,用于确定预先构建的决策树的根节点为当前节点,所述决策树的各个叶子节点各自对应唯一一个样本,所述决策树为利用样本库构建得到。第一判断模块12,用于判断所述当前节点对应的样本集合中样本的个数是否为1,若为1,则执行第二确定模块13,若不为1,则执行第二判断模块18。所述第二确定模块13,用于确定所述当前节点为叶子节点,并将所述叶子节点作为待查找节点。获取模块14,用于获取所述待查找节点对应的样本。比较模块15,用于比较待测样本与所述待查找节点对应的样本是否相同,若相同,则执行第三确定模块16,若不相同,则执行第四确定模块17。所述第三确定模块16,用于确定所述决策树对应的样本集合中存在所述待查样本。所述第四确定模块17,用于确定所述决策树对应的样本集合中不存在所述待查样本。所述第二判断模块18,用于判断所述当前节点对应的样本集合中样本的个数是否大于1,若大于1,则执行第五确定模块19。所述第五确定模块19,用于确定所述当前节点的分裂位。第六确定模块110,用于若所述待查样本的超长位串属性值中对应所述分裂位的属性值为0,则将所述当前节点的左子节点作为当前节点,并返回执行所述第一判断模块12。第七确定模块111,用于若所述待查样本的超长位串属性值中对应所述分裂位的属性值为1,则将所述当前节点的右子节点作为当前节点,并返回执行所述第一判断模块12。本实施例中,上述样本查找装置还可以包括:决策树构建模块,用于执行以下步骤:建立树的根节点,将所述样本库作为所述根节点对应的样本集合;将所述根节点作为当前待分裂节点;为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点;确定所述当前待分裂节点的分裂位;检测所述当前待分裂节点对应的样本集合中各个样本的超长位串属性值中,与所述当前待分裂节点的分裂位对应的属性值的大小;将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为0的样本,添加到所述左子节点对应的样本集合中;将所述左子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述左子节点对应的样本集合中的样本的个数为1;将所述当前待分裂节点对应的样本集合中,与所述当前待分裂节点的分裂位对应的属性值的大小为1的样本,添加到所述右子节点对应的样本集合中;将所述右子节点作为所述当前待分裂节点,并返回执行为所述当前待分裂节点创建两个子节点,分别为左子节点和右子节点的步骤,直至所述右子节点对应的样本集合中的样本的个数为1。本实施例中,上述样本查找装置还可以包括:第八确定模块,用于执行以下步骤:将所述当前待分裂节点对应的样本集合中各个样本各自的第i个超长位串属性位作为待检测分裂位,所述i为不大于所述样本的超长位串属性位的位数;若所述待检测分裂位的属性值为1,则将所述待检测分裂位对应的样本作为第一样本,并统计第一样本的个数;若所述待检测分裂位的属性值为0,则将所述待检测分裂位对应的样本作为第二样本,并统计第二样本的个数;计算所述第一样本的个数与所述第二样本的个数的差值的绝对值,作为所述待检测分裂位的分裂结果;将所述i赋值为i+1,直至所述i不小于所述样本的超长位串属性位的位数;将各个所述待检测分裂位的分裂结果中最小的分裂结果对应的待检测分裂位作为所述当前待分裂节点的分裂位。本实施例中,上述样本查找装置还可以包括:第九确定模块,用于若各个所述待检测分裂位的分裂结果中存在多个最小的分裂结果,则从多个最小的分裂结果各自对应的待检测分裂位中选取一个待检测分裂位,作为所述当前待分裂节点的分裂位。本实施例中,上述样本查找装置还可以包括:第十确定模块,用于执行以下步骤:将所述当前待分裂节点对应的样本集合中各个样本各自的各个属性值转换为位串属性值;从各个所述样本的各个所述位串属性值中确定出最大的位串属性值;将所述最大的位串属性值对应的位串属性长度作为各个所述样本的定长位串属性长度;按照所述定长位串属性长度,将各个所述样本的所述位串属性值转换为定长位串属性值;将各个所述样本的各个所述定长位串属性值进行连接,得到各个所述样本的所述超长位串属性值。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。以上对本申请所提供的一种样本查找方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1