小白闯

导航

K近邻法

K近邻法(k-NN)是一种分类与回归的算法。

优点:简单,直观

思路:给定一个训练集,对新输入的实例,在训练数据集中找到与该实例最邻近的K个实例。采用“少数服从多数”的方法,寻找实例所在的类。

  • K近邻算法:(没有显式的学习过程)

input:训练集 T={(xi,yi) |i=1..n},  实例x。

output:实例x的分类y

步骤:

(1)由距离度量找到T中与x最近的k个点,(k的个数可以由交叉验证确定)

(2)多数表决法,k个点中那个类别的点多,x就被分为哪一类

注意:不同距离度量(具体距离算法在聚类中有详细介绍)所确定的最近邻点会有所不同

  • kd树(k近邻实现的线性扫描)

 构造根节点,使根节点对应于k维空间中所包含的实例点的超矩形区域。通过递归的方法,不断对k维空间进行切分成子节点。

构造平衡的kd树:

依次选择坐标进行切分,选择训练的实例点,在选定的坐标轴上的中位数为切分点,向坐标轴做垂线。

  • 搜索kd树

优点:省去对大部分数据的搜索,从而减少搜索的计算量

kd树的最近邻搜索算法:

input:已构造的kd树,实例目标点x

output:实例点x的最近邻

步骤:

(1)在kd树中找包含目标点x的叶节点,从根节点出发,地递归的向下访问kd树,若x当前维的坐标小于切分点的坐标,则移动到左侧子节点,反之,移动到右侧子节点。直到子节点为叶节点为止

(2)递归的向上回退

 

posted on 2018-05-10 09:25  李小白cc  阅读(172)  评论(0编辑  收藏  举报