统计学习方法 三 kNN

KNN

(一)KNN概念:

  K近邻算法是一种回归和分类算法,这主要讨论其分类概念:

  

K近邻模型三要素:

1,距离:

            

2,K值的选择:

    K值选择过小:模型过复杂,近似误差减小,估计误差上升,出现过拟合

    K值选择过大:模型过于简单,预测能力弱

    K值的选择:可以通过交叉验证来确定,k一般取一个较小的值

3,分类决策规则:

    

(二),kd树

 1,构造kd树

   

    

    

      

2,kd树最近邻搜索策略

      

      

一个复杂点了例子如查找点为(2,4.5)。

1、同样先进行二叉查找,先从(7,2)查找到(5,4)节点,在进行查找时是由y = 4为分割超平面的,由于查找点为y值为4.5,因此进入右子空间查找到(4,7),形成搜索路径<(7,2),(5,4),(4,7)>,

2、取(4,7)为当前最近邻点,计算其与目标查找点的距离为3.202。然后回溯到(5,4),计算其与查找点之间的距离为3.041。

       ((4,7)与目标查找点的距离为3.202,而(5,4)与查找点之间的距离为3.041,所以(5,4)为查询点的最近点;)

3、以(2,4.5)为圆心,以3.041为半径作圆,如图4所示。可见该圆和y = 4超平面交割,所以需要进入(5,4)左子空间进行查找。此时需将(2,3)节点加入搜索路径中得<(7,2),(2,3)>。

4、回溯至(2,3)叶子节点,(2,3)距离(2,4.5)比(5,4)要近,所以最近邻点更新为(2,3),最近距离更新为1.5。

5、回溯至(7,2),以(2,4.5)为圆心1.5为半径作圆,并不和x = 7分割超平面交割,如图5所示。

至此,搜索路径回溯完。返回最近邻点(2,3),最近距离1.5。

 

        

(三)总结:

          个人体会:knn:输入训练数据,通过训练数据构建一个kd树,测试时,将数据插入kd树中,然后根据指定的距离测试方法选择最近的K个值,再根据决策规则选择测试数据所属的分类(关键是构建kd树(选中位数原则)和kd树查找),感觉适合特征是连续的数据

          

          

 

参考网址:

    http://blog.csdn.net/losteng/article/details/50893739      

    http://www.cnblogs.com/hemiy/p/6155425.html

     http://www.cnblogs.com/chaosimple/p/4153167.html

posted @ 2017-07-03 09:09  DamonDr  阅读(393)  评论(0编辑  收藏  举报