kd树简介 在matlab下VLFeat中的kd-tree使用

先简要介绍knn——K近邻算法和kd-tree——kd树,然后介绍matlab环境中有关使用kd树的函数。k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。
这里用的是在VLFeat 实现的kd树,其是一个开源的计算机视觉库,实现了 SIFT,MSER, k-means, hierarchical k-means, agglomerative information bottleneck, quick shift等算法。由C语言编写,提供MATLAB接口,文档详细。支持跨平台。

1、KNN

先从KNN讲起吧,何谓KNN算法,全称为:K-Nearest Neighbor algorithm,即K近邻算法。
用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居),这K个实例的多数属于某个类,就把该输入实例分类到这个类中。
kd树简介 在matlab下VLFeat中的kd-tree使用_第1张图片
K近邻算法的核心在于找到实例点的邻居,这个时候,问题就接踵而至了,如何找到邻居,邻居的判定标准是什么,用什么来度量。特征空间中两个实例点的距离可以反应出两个实例点之间的相似性程度。K近邻模型的特征空间一般是n维实数向量空间,使用的距离可以使欧式距离,也是可以是其它距离。

2、Kd-Tree

那什么又是Kd-树呢, Kd-树其实是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构。其实,Kd-树是一种平衡二叉树。k-d树是一种空间划分树,说白了,就是把整个空间划分为特定的几个部分,然后在特定空间的部分内进行相关搜索操作。
kd树简介 在matlab下VLFeat中的kd-tree使用_第2张图片
kd树按照一定的划分规则把这个三

你可能感兴趣的:(matlab,算法,数据分析,matlab,kdtree,vlfeat,数据分析)