zoukankan      html  css  js  c++  java
  • KD 树总结

    相似向量的召回是推荐系统中召回阶段中非常重要的一个步骤,便利所有向量的召回方法性能太差,KD树先对向量空间进行了切分,只需要检索部分向量空间就可以获得检索结果,大大加快了检索效率。

    如果实例点是随机分布的,kd树的时间复杂度是O(logN)

    KD 树的构造

    1. 选择切分向量空间的维度,常用的有两种方法:

    (1)按顺序选择切分维度,第一次选第1维,第二次选择2维,第n次选择n%k维,k维向量总维度

    (2)寻找方差最大的维度(每个维度选择次数要一致)

    2. 选择切分节点,一半是把该维度数据中位数作为父节点,小于该节点的落入左子树,大于该节点的落入右子树

    重复上面1,2步,直到叶子节点只包含一个实例

    例子

     

    KD树检索方法

    1. 输入一个查询节点,首先在KD树中找到包含该节点的叶子节点

    2. 以此叶节点作为“当前最近节点”

    3. 递归的进行以下操作:

      a. 回退到父节点,如果该节点保存的实例点比当前最近点距离目标更近,这更新当前最近点为该节点。

      b. 判断该节点的另一个子节点对应的区域是否和以查询点为球心,以查询点和当前最近点之间的距离为半径的超球体相交。如果相交,可能在该子节点内存在距查询点更近的节点,需要进入该子节点检索。否者继续向上回退。

      c. 当回退到根节点时检索结束。

    例子

  • 相关阅读:
    虚拟机安装
    虚拟机简介
    stm32(新建工程)
    高校教室管理系统
    按键抬起有效
    数码管0~9显示
    流水灯程序设计
    P0.0口驱动一个LED闪烁
    Adobe 系列下载链接
    Microsoft 常用下载链接
  • 原文地址:https://www.cnblogs.com/xumaomao/p/15026769.html
Copyright © 2011-2022 走看看