概述:
给定一个训练数据集,对新的输入实例,在训练数据据集中找到与该实例最近邻的K个实例,这K个实例的多数属于某个类,就把该实例分为这个类
K近邻算法的三要素:
1、K值的选择
2、距离的度量
3、分类决策规则
注:K近邻算法中,当训练集、距离度量、K值、及分类决策规则确定后,对于一个新的输入实例,其输出的所属类别也就确定了
K值的选择:
K值的选择对K近邻算法有重大的影响,如果K值较小,就会使“学习”的近似误差减小,“学习”的估计误差增大;即只有与输入实例较近的训练实例才会对预测结果有影响,只用一小部分与之相近的数据参与新数据的分类;如果这些数据恰巧是噪声数据,预测就会出错;也就是说,K值选得较小,就会使模型的复杂度增大,发生过拟合(极端K=1)
同时,如果K值较大,就会使“学习”的近似误差增大,“学习”的估计误差减小;这时与训练数据较远(不相似)的训练数据也会对预测产生影响,可能时预测产生错误;K值较大,则更能学习到训练数据集内部的规律;也就是说,K值较大,会使模型的复杂度降低(极端的K = N)
一般的,K值取一个较小的值,通常采用交叉验证法来求取最优的K值
距离的度量:
包括欧式距离、曼哈顿距离等(见统计学习)
分类决策规则:
分类决策规则即是当已知K个训练实例的类别时,我们怎样通过这些实例的类别来确定新输入实例(未知实例)的类别;其中用得最多的往往是多数表决法,即选定K个实例中最多的类别为未知实例的类(见统计学习)
然而,实现K近邻算法时,主要考虑的是如何对训练数据快速地K近邻搜索,这在特征空间的维数比较大及训练数据较多时尤为重要
最简单的方法就是线性扫描,即将输入实例与训练数据逐一计算距离,这样的计算是非常耗时的;为了提高K近邻搜索的效率,我们考虑使用特殊的结构存储训练数据,下面就介绍其中的一种KD树(kd tree)方法