【技术实现步骤摘要】
基于双树的高维向量空间样本快速搜索方法及装置
[0001]本专利技术涉及样本处理
,具体涉及一种基于双树的高维向量空间样本快速搜索方法及装置。
技术介绍
[0002]K近邻(K Nearest Neighbor,KNN)算法是指给定一个待查点,在多维向量空间样本点集合内查找与待查点最接近的K个样本点,如果这K个样本点中的大多数属于某一类别,则待查点也属于这一类别。K近邻搜索在很多数据分析问题中得到广泛应用,例如机器学习、地理信息系统、人工智能等领域。在面对高维、海量样本集合时,因需要与大量样本点计算和比较空间距离,造成计算量大,查询速度慢的问题,影响了KNN算法的实践应用。
[0003]针对KNN算法计算量大、查询效率低的问题,目前主要有以下改进方向:
[0004]第一、对样本集进行裁剪。例如现有技术中通过对样本集进行分析,从中剔除冗余元素,缩小样本集合,进而减少K近邻搜索阶段的计算量。但在面向高维、海量样本集时,样本集合缩减规模有限,仍面临计算量大的缺陷。
[0005]第二、采用并行计算架构提升K近邻查询速度。现有技术提出一种基于CUDA模型的并行KNN算法,采用通用矩阵乘提升距离计算速度,根据K值大小,分别采用两种方法对距离进行比较,这一并行计算方法有效提高了K近邻查询效率。
[0006]第三、采用空间分区数据结构,实现K近邻快速搜索。对样本点集合按照特定的几何形态进行划分,同时构造搜索二叉树,在K近邻查找阶段,通过比较空间距离,对二叉树进行剪枝处理,减少需要计算和比较距离的 ...
【技术保护点】
【技术特征摘要】
1.基于双树的高维向量空间样本快速搜索方法,其特征在于,包括:步骤1、在双树结构构造过程中,对每棵子树信息进行统计,将统计结果存入节点数组,所述节点数组中每个元素对应一棵子树的统计信息,统计信息包括子树内数据点个数,子树对应的超球体半径和子树对应的数据点集合,所述节点数组中的元素按照每棵子树内数据点个数降序排列,子树内数据点个数值相同的元素,按照所述子树对应的超球体半径升序排列;步骤2、对数据点个数大于等于最大剪枝点数的每棵子树进行过滤处理,保留每棵子树中距离质心最近的数据点,将未被保留的数据点过滤删除并存入被删点集合;全部子树处理完毕后,将所述被删点集合中的数据点按照双树构造算法组成被删树;从全部样本点集合中去除被删点集合元素后的剩余元素组成剪枝点集合,将剪枝点集合中的数据点按照双树构造算法组成剪枝树;步骤3、先在剪枝树内调用K近邻算法查找待查点的Kg个近邻点,其中1≤Kg≤K;之后分别用第1个和第Kg个近邻点作为被删树的初始近邻点,在被删树内查找所述待查点的K个近邻点,当找到的近邻个数不足K个时,将最近邻数组置空,在双树结构内查找所述待查点的K个近邻点;步骤4、将原始数据集按照给定比例划分为测试集和训练集,利用随机算法生成若干组测试集和训练集,对每组测试集和训练集得到的最优查询参数计算平均值作为最终的最优参数值Kg,使给定数量的待查点在所述剪枝树和被删树内找到K个最近邻。2.根据权利要求1所述的基于双树的高维向量空间样本快速搜索方法,其特征在于,步骤2中,定义剪枝树为reduce_tree,定义被删树为pruned_tree;输入参数为:待剪枝的数据点集合data;存储每棵子树统计信息的节点数组node_density,节点数组元素按照每棵子树内数据点个数point_num降序排列,point_num值相同的元素,按照子树对应的超球体半径radius升序排列;整数变量max_points表示最大剪枝点数;输出参数为:一棵由被删除数据点构造的被删树pruned_tree,一棵由剪枝剩余数据点构造的剪枝树reduce_tree;剪枝树reduce_tree和被删树pruned_tree构造步骤包括:步骤2.1、令被删树数组存储被删除数据点,初值为空;令剪枝树数组存储剪枝剩余数据点,初值为空;步骤2.2、将节点数组中数据点个数大于等于最大剪枝点数的全部元素构成集合T,T={T1,T2,
…
,Tn};按照数据点个数将子树分类,定义实数变量avg_max_radius表示已经剪枝的每棵子树的最大半径平均值,初值为T1.radius;定义整数变量current_point_num表示当前处理的这类子树数据点个数,初值为T1.point_num;定义实数变量previous_radius表示前一棵子树对应球体的半径,初值为T1.radius;定义整数变量i,初值为2;步骤2.3、从集合T中取出元素Ti,如果Ti.point_num!=current_point_num,即当前这类子树处理完毕,则执行步骤2.6,否则执行步骤2.4;步骤2.4、如果Ti.radius-previous_radius≤2或者Ti.radius<avg_max_radius,执行步骤2.5;否则,令i=i+1,如果i≤len(T),则执行步骤2.3,依次跳过这类子树中剩余子树,否则执行步骤2.7;
步骤2.5、令center为数据点集Ti.points的质心,min_dist_point为数据点集Ti.points中距离质心center最近的点,令pruned_tree=pruned_tree∪(Ti.points-min_dist_point),即将Ti.points中除min_dist_point之外的数据点并入pruned_tree数组;令previous_radius=Ti.radius,同时更新avg_max_radius值;令i=i+1,如果i≤len(T),则执行步骤2.3,否则执行步骤2.7;步骤2.6、令current_point_num=Ti.point_num,更新当前处理的这类子树的数据点计数current_point_num,执行步骤2.5;步骤2.7、令reduce_tree=data-pruned_tree,执行步骤2.1至步骤2.6构建全部被删数据点构成的被删树和全部剪枝剩余数据点构成的剪枝树。3.根据权利要求1所述的基于双树的高维向量空间样本快速搜索方法,其特征在于,步骤3中包括:步骤3.1、调用单树结构K近邻搜索算法,确定待查点target在剪枝树内的Kg个近邻点,找到的Kg个近邻点存储在reduce_tree.KNN_result数组内;步骤3.2、将待查点target在剪枝树内的最近邻点预置到被删除树的K近邻数组内,确定待查点target在被删树内的K个近邻点,当定位的近邻点个数num≥K时,查找结束,否则执行步骤3.3;步骤3.3、将待查点target在剪枝树内的最远近邻点预置到被删树的K近邻数组内,确定待查点target在被删树内的K个...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。