背景描述
最近在做高维特征向量查找比对的过程中,由于数据库内的数据过于庞大,从头遍历效率太低,故想要寻找一些快速的高维空间向量的查找方式。
经过调研与学习,笔者发现有球树、KDtree等多种高维空间向量查找方式,但是都存在一个共性的问题,即:在分类边界容易出现分类错误的现象发生。故在本篇笔者提出了一种新的高维空间向量查找方式,希望可以对读者有新的启发。
原理详解
KDtree原理详解与缺陷详解
原理详解
KDtree的构建过程是一个递归的过程,其核心在于不断将特征向量空间细分为更小的子空间。在每一次递归中,选择某一维度进行划分,并确定一个划分点,将当前子空间划分为两个子空间。这一划分过程基于数据的分布特性以及分类任务的需求,旨在使得划分后的子空间内数据点的相似度尽可能高,而不同子空间间的数据点相似度尽可能低。
为了确定划分维度和划分点,我们采用了一系列统计方法。具体而言,我们计算每个维度上的数据分布特性,包括方差、信息增益,并选择那些能够最大程度区分不同类别的维度进行划分。划分点的选择则基于该维度上数据的分布情况,选择能够使得划分后子空间内数据点分布尽可能均匀的点作为划分点。
在划分子空间的过程中,我们还需要为每个子空间选取一个代表向量。这个代表向量选择为该子空间内所有数据点的均值或中位数,它能够较好地反映该子空间内数据点的整体特性。通过将代表向量作为分类树的节点,我们构建了一个能够反映特征向量分布的分类树结构。
最终得到的高维分类树不仅具有直观的结构,而且能够高效地处理高维数据。通过遍历分类树,我们可以快速地找到与给定特征向量相似的数据点,从而实现高效的分类和检索任务。
缺陷详解