- 5
- 0
- 约3.2千字
- 约 6页
- 2021-03-16 发布于山东
- 举报
【数学】 kd 树算法之思路篇
导语: kd 树是一种二叉树数据结构,可以用来进行高
效的 kNN 计算。kd 树算法偏于复杂, 本篇将先介绍以二叉
树的形式来记录和索引空间的思路,以便读者更轻松地理解
kd 树。图较多,小心流量
作者:肖睿编辑:宏观经济算命师本文由 JoinQuant 量化课
堂推出,本文的难度属于进阶(上) ,深度为 level-1 。阅读本文之前请掌握 kNN ( level-1 )的知识。前言 kd 树
k-dimensional tree )是一个包含空间信息的二项树数据结构,它是用来计算 kNN 的一个非常常用的工具。如果特征的维度是 D ,样本的数量是 N,那么一般来讲 kd 树算法的
复杂度是 O(D log(N))
,相比于穷算的 O(DN)
省去了非常多
的计算量。因为 kd
树的概念和算法较为复杂,固将本教程
分为“思路篇”和“详细篇” 。两篇的内容在一定程度上是
重叠的,但是本篇注重于讲解
kd 树背后的思想和直觉,告
诉读者一颗二项树是如何承载空间概念的,我们又该如何从
树中读取这些信息;而之后的详细篇则详细讲解
kd 树的定
义,如何构造它并且如何计算
kNN 。出于教学起见, 本文讲
的例子和算法与严格的
kd
树有一些差异。有算法经验或者
想尝试挑战的读者可以直接跳过本篇去读详细篇。关于在学习编程和算法时有没有必要自己制作轮子的问题,一直存在
着很多的争议。作者认为,做不做轮子暂且不论,但是有必
要去了解轮子是怎么做出来的。 Python 的 scikit-learn 机器学习包提供了蛮算、 kd 树和 ball 树三种 kNN 算法,学完本篇的读者若无兴趣自撰算法,可以非常轻松地使用该包。直觉给定一堆已有的样本数据,和一个被询问的数据点(红
色五角星),我们如何找到离五角星最近的 15 个点?先忽略
在编程上的实现,想一想一个人如何主观地执行。嗯,他一定会把在五角附近的一些点中,分别计算每一个的距离,然后选最近的 15 个。这样可能只需要进行二三十次距离计算,而不是 300 次。如图,只对紫圈里的点进行计算。啊哈!问题来了。我们讲到的“附近”已经包含了距离的概念,如果不经过计算我们怎么知道哪个点是在五角星的“附近”?为什么我们一下就认出了“附近”而计算机做不到?那是因为我们在观看这张图片时,得到的输入是已经带有距离概念的影像,然而计算机在进行计算时得到的则是没有距离概念的
坐标数据。如果要让一个人人为地从 300 组坐标里选出最近
的 15 个,而不给他图像,那么他也省不了功夫,必须要把
个全部计算一遍才行。这样来说,我们要做的就是在干巴巴的坐标数据上进行加工,将空间分割成小块,并以合理地方法将信息进行储存,这样方便我们读取“附近”的点。切割这只危险的兔子,它又回来了!它今天上了四个纹身,爱心、月牙、星星和眼泪,下面是它的照片。我们来回答一
个简单的问题:在这幅照片上,距离爱心最近的纹身是什么?记得上一篇文章中,我们选用的特征是每一只兔子的身高和体重;这次就不一样了,在这个问题中,每个纹身的特征是照片平面上的横轴和竖轴的坐标。对于这个问题,如果
进行蛮算的办法我们需要计算 3 次距离(分别和月亮、眼泪和星星算一次) 。下面我们要做的是把整个空间按照左右
和上下进行等分,并且把分割后的小空间以二叉树形式进行记录,这样可以很快地读取邻近的点而省去计算量。好,我们先竖向沿中间把这个兔子切成两半再沿横向从中间切成四份再沿着竖向平分八份最后再沿横向切一次。这次有些区
域是完全空白的,我们就把它舍弃不要了,得到 14 份:我
们再按照上下左右的关系把切开的图片做成一个二叉树,树的每一个节点是一幅图,它的两个枝是这幅图平分出来的子图。可以看出这个树状结构包含了很多局部性的信息,因为它的每一个节点都是按照上下或者左右进行平分的,因此如果两个点在树中的距离较近,那么它们的实际距离就是比较近的。
搜寻接下来我们要通过这棵二叉树找到离爱心最近的纹身。首先从树的最顶端开始,向下搜寻找到最底部包含爱心的节点。这个操作非常简单,因为每一次分割要么是沿着某纵线
X=a 要么是沿着横线 Y=a ,因此只需要判断爱心的 x 或 y 轴
坐标是大于 a 还是小于 a,便知道是向左还是右边选择树枝。
在找到了爱心之后,我们沿着相同的路径向上攀爬。只爬了
一节就发现了屁股上的两个纹身:这里看出,在 8 平分的情况下,爱心和月亮是在同一个区域的。在某种意义上来讲它
们是“近”的,但是我们还不能确定它们是最近的,因此还要继续向上攀爬寻找。再继续向上爬两个节点,都没有出现爱心和月亮以外的纹身。在下面这个节点中我们发现爱心和
月亮之间的距离 (红线)要小于爱心和分割线的距离 (蓝线),也就是说,不论分
您可能关注的文档
- (完整版)我的教师成长故事.docx
- (完整版)小数的意义和加减法思维训练题.docx
- [朗诵练习]一分钟.docx
- [万合天宜]笑匠不笑.docx
- “地球之王”或是“最后的孤独者”.docx
- “民宅禁商”尴尬百出.docx
- “模式二”学校因地制宜巧应用画龙点睛促实效.docx
- “你若安好,我便幸福”一封父亲写给女儿的信竟惊动教育部!.docx
- “农民工抢走大学生饭碗”命题存三大破绽.docx
- “铅笔有多长”教学设计与反思.docx
- 初一语文第五单元重点知识整理汇编.docx
- 中医君臣佐使的方剂配伍原则.docx
- 2025年小众化消费市场五年细分冥想体验需求报告.docx
- 2025年光通信设备技术演进行业报告.docx
- 常识判断排序题.pdf
- 2026年吉安市市直机关事业单位编外工作人员招聘备考题库(四十九)及一套完整答案详解.docx
- 2026年吉安市市直机关事业单位编外工作人员招聘备考题库(四十九)及一套完整答案详解.docx
- 2025年欧盟翻译认证(EUTranslator)考试题库(附答案和详细解析)(1228).docx
- 2025年匈牙利农业科技行业发展报告.docx
- 2025年税务师《税法二》真题解析与模拟.docx
最近下载
- 2024年湖南汽车工程职业学院单招职业技能测试题库及答案(历年真题).docx VIP
- 广东省潮州市2024-2025学年高三上学期期末教学质量检测物理试卷.docx VIP
- 上海电力学院大一机械制图C习题本解答(造福学弟,不谢)-新版.pptx
- 广东省潮州市2024-2025学年高二上学期期末教学质量检测物理试卷(含答案).docx VIP
- 新生儿身份识别制度.pptx
- 康迪泰克空气弹簧.pdf VIP
- LY/T 2817-2017山桐子栽培技术规程.pdf
- 缓刑担保承诺书范文.docx VIP
- 记账实操-电梯保养公司会计账务处理分录.doc
- 脑机接口专利关键技术白皮书-复旦大学-2025.pdf VIP
原创力文档

文档评论(0)