李航统计学习方法-K邻近法
k邻近简单的理解一下就是,给定一部分带标签样本和一个未知标签样本,将未知标签样本和带标签样本一一比较求距离,然后根据最近k个样本来决定未知标签样本的类别。
如上图:确定圆圈的类别,如K=3,则为三角;若K=5,则为正方形。
那么怎么求距离?选择何种求距离算法。
书中给出了Lp距离的求解:
除了距离度量外,K邻近法的K值如何选取也很重要,书中介绍如下:
K值较小,模型较复杂,易过拟合;K值较大,模型简单。
按照开始我说了,用未知样本和已知样本一一对比方法,在样本数很大时,会花费很多很多时间,有没有一种策略,来加速这种对比呢:下面就要将书中提到的KD树。
构建平衡KD树:
KD树搜索:
除了KD树这种方式还有其他的加速方式:先要详细了解的见:
http://www.cnblogs.com/v-July-v/archive/2012/11/20/3125419.html
上述链接详细讲解了knn算法中的距离度量和k邻近优化方法。
理论永远都在纸上,怎么用才是关键,python代码链接奉上:
http://blog.****.net/wds2006sdo/article/details/51933044