k近邻法是一种基本分类与回归方法,书中只讨论了分类问题的k近邻法。
一、模型
k近邻模型对应于特征空间的划分,由k值的选择、距离度量及分类决策规则三个基本要素决定。
二、策略
(一)k值的选择
k值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的k。
k值小时,近似误差较小,估计误差较大,模型较复杂,容易发生过拟合;
k值大时,估计误差较小,近似误差较大,模型较简单,预测错误率较高。
(二)距离度量
常用的方法是欧式距离、Lp距离。
两个n维向量xi,xj的Lp距离定义为
Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)p1,p≥1
当p=1时,称为曼哈顿距离
当p=2时,称为欧式距离
当p=∞时,取各个维度距离的最大值L∞(xi,xj)=lmax∣xi(l)−xj(l)∣

(三)分类决策规则
常用的方法是多数表决,对应于经验风险最小化。
解释:
如果分类器的损失函数为0-1损失函数,分类函数为f:Rn→{c1,c2,⋅⋅⋅,cK},则误分类的概率是P(Y=f(X))=1−P(Y=f(X))
对给定的实例x∈X,其最近邻的k个训练实例点构成集合构成集合Nk(x)。如果涵盖Nk(x)的区域的类别是cj,那么误分类率为k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)
要使误分类率最小即经验风险最小,就要使xi∈Nk(x)∑I(yi=cj)最大即多数表决。
三、算法
输入:实例的特征向量;训练数据集
输出:实例的类别
Step1: 根据给定的距离度量,在训练集T中找出与实例x最邻近的k个点,涵盖着k个点的x的邻域记作Nk(x)
Step2: 在Nk(x)中根据分类决策规则决定x的类别y
特殊情况,当k=1时,称为最近邻算法。
快速k近邻搜索算法:线性扫描;kd树
当训练集很大时,线性扫描的计算非常耗时。
kd树是二叉树,表示对k维空间的一个划分,其每个结点对应于k维空间划分的一个超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。
通过kd树实现k近邻法分为两步:构造kd树;搜索kd树。


参考文献
[1] 李航. 统计学习方法(第2版). 北京:清华大学出版社,2017.