k近邻法(k−NN)
一种基本的分类与回归方法。
k 近邻算法
- 思想
给定一个训练数据集,对新的输入示例,在训练集中找到与该实例最近邻的k个实例,依据这k个实例进行分类。
- 特点
- 监督学习
- 懒惰学习
- 假设——基于样本总能在任意小距离内找到一个训练样本——在现实中可能不成立。
- 算法重点在于距离度量
- 算法规范表述
- 输入:训练样集T,待检测的样本x
- 输出:实例x所属的类y
- 计算
- 根据给定的距离度量,在训练集T中找到与x最近的k个点,包含这k个点的邻域记作Nk(x)
- 在Nk(x)中根据分类决策规则(如多数表决等)决定x的类别y:
y=argcjmaxxi∈Nk(x)∑I(yi=cj),i=1,2,⋯,N;j=1,2,⋯,K
其中I为指示函数,当yi=cj时为1,否则为0。
- 最邻近算法
令k=1时,称为最邻近算法。
k近邻模型
k近邻法使用的模型实际上对应于特征空间的划分,包括三个基本要素:距离度量、k值得选择以及分类决策规则。
模型
在k近邻中,如果训练集、距离度量、k值以及分类决策确定后,新的输入实例的类也唯一确定。
相当于根据上述要素将特征空间划分为子空间,确定子空间每个点所属的类。
- 单元:对于每个训练样本xi,距离该点比其他点更近的所有点构成的区域。
距离度量
对于训练样本中的任意两个样本xi,xj,其特征空间为n,即xi=(xi(1),xi(2),⋯,xi(n))T,xj=(xj(1),xj(2),⋯,xj(n))T,常用的距离包括以下几种:
-
Lp距离
Lp(xi,xj)=(l=1∑n∣∣∣xi(l)−xj(l)∣∣∣p)p1
-
p=1时,为曼哈顿距离
L1(xi,xj)=l=1∑n∣∣∣xi(l)−xj(l)∣∣∣
-
p=2时,为欧式距离
L2(xi,xj)=l=1∑n∣∣∣xi(l)−xj(l)∣∣∣2
-
p=∞时,是各个坐标距离的最大值
L∞(xi,xj)=lmax∣∣∣xi(l)−xj(l)∣∣∣
下图给了详细的表示(不同算法距离是不同的)。
k值选择
k值选择的不同也会产生巨大影响。
两种选择:
总的来说 ,随着k值减小,整体模型变复杂,易发生过拟合。
- 选择较大的k值:
优缺点正好与选择较小k值相反。
通常选择较小的k,并使用交叉验证选择最优k值。
分类决策规则
k近邻中使用的往往是多数表决,应该很好理解就不赘述了。
多数表决规则等价于经验风险最小化。
参考文献
《机器学习》
《统计学习方法》