k近邻法(k-nearest neighbor)是一种基本分类与回归方法。
k近邻算法简单、直观:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。
例如下图所示,有正方形,圆形,三角形,要判定圆形属于哪一类,假设K=3,就会选取离圆形最近的三个图形,此时有两个三角形和一个正方形,三角形多一点,于是圆形就被判定为三角形这一类假设K=5,那么就是周围虚线这一圈,里面有三个正方形和两个三角形,此时正方形多,圆形就被判定为正方形类.
没有显示的学习过程是没有办法得到一个模型来计算这个算法.
k近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素,距离度量、k值的选择和分类决策规则决定。
k值的选择会对近邻法的结果产生重大影响.
如果选择较小的k值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,只有与输入实例较近的(相似的)训练实例才会对预测结果起作用。但缺点是“学习”的估计误差会增大,预测结果会对近邻的实例点非常敏感。如果邻近的实例点恰巧是噪声,预测就会出错。
k值的减小就意味着整体模型变得复杂,容易发生过拟合。
如果选择较大的k 值,就相当于用较大邻域中的训练实例进行预测。其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时与输入实例较远的(不相似的)训练实例也会对预测起作用,使预测发生错误。k 值的增大就意味着整体的模型变得简单。
如果k = N,那么无论输入实例是什么,都将预测训练头例中取多的类。这时,模型过于简单,完全忽略训练实例中的大量有用信息,是不可取的,
在应用中,k值一般取一个比较小的数值。通常采用交叉验证法来选取最优的k值。可取的。
选择x(1)的坐标中位数为切分点,比中位数小的放左边成为左节点,大的放右边成为右节点,
然后再用第二维向量x(2)继续计算
2,5,9,4,8,7 从小到大排序
2,4,5,7,8,9
第一维向量中位数是7,小于7的放左边,大于7的放右边,左边的节点是(2,3),(5,4),(4,7),然后这三个节点的中位数是4,再进行划分,剩下右节点是(8,1),(9,6),进行划分