k近邻法是一种基本分类与回归算法。k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。是一种监督学习。
一、k近邻算法
输入:训练数据集
τ={(x1,y1),(x2,y2),...,(xN,yN)}
其中,
xi∈χ⊆Rn为实例的特征向量,yi∈γ={c1,c2,...,ck} 为实例的类别,
i=1,2,...,N;实例特征向量
x:
输出:实例
x所属的类
y
(1)根据给定的距离度量,在训练集
T中找出与
x最近邻的k个点,涵盖这
k个点的
x的邻域记作
NK(x):
(2)在
NK(x)中根据分类决策规则(如多数表决)决定
x的类别
y:
y=argmaxϵjxi∈Nk(x)∑I(yi=cj),i=1,2,...,N;j=1,2,...,K(1)
式(1)中,
I是指示函数,即当
yi=cj时
I为1, 否则
I为0.
二、k近邻模型
k近邻法使用的模型实际上对应于特征空间的划分,模型由三个基本要素——距离度量、k值的选择和分类决策规则决定
(1)距离度量
特征空间中两个实例点的距离是两个实例点相似程度的反映,k近邻模型的特征空间一般是n维实数向量空间
Rn。使用的距离是欧式距离,但也可以是其它距离。
设特征空间
χ是n维实数向量空间
Rn,
xi,xj∈χ,xi=(xi(1),xi(2),...,xi(n))T,xj=(xj(1),xj(2),...,xj(n))T,
xi,xj的Lp距离定义为
LP(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)p1(2)
这里
p≥1。当
p=2时,称为欧式距离,即
L2(xi,xj)=(l=1∑n∣xi(l)−xj(j)∣2)21(3).
当
p=1时,称为曼哈顿距离,即
L1(xi,xj)=l=1∑n∣xi(l)−xj(l)∣(4)
当
p=∞时,它是各个坐标距离的最大值,即
L∞(xi,xj)=maxl∣xi(l)−xj(l)∣(5)
(2)k值的选择
k值的选择会对k近邻法的结果产生重大影响。
- 较小的k值 -》》学习的近似误差减少,但学习的估计误差增大,预测结果会对近邻的实例敏感,如果临近的实例点恰是噪声,预测会出错,k值的减少意味着整体模型变复杂,容易发生过拟合
- 较大的k值 -》》学习的估计误差较少,但近似误差增大,与输入实例较远的训练实例也会对预测起作用,预测会发生错误,k值的增大就意味着整体模型变得简单
在应用中,k值一般取一个比较小的数值,通常采用交叉验证法来选取最优的k值。
同时我也在其它得资料中,看到有其他的选取k值的方法:首先计算训练集合中元素个数n求
n
,而且这个n最好是奇数。
(3)分类决策规则
k近邻法中的分类决策规则往往是多数表决,即由输入实例的k个近邻的训练实例中的多数类决定输入实例的类。
多数表决规则(majority voting relu)有如下解释:如果分类的损失函数为0-1损失函数,分类函数为
f:Rn→{c1,c2,...,ck}
那么误分类的概率是:
P(Y=1f(X))=1−P(Y=f(X))
对给定的实例
x∈χ,其最近邻的k个训练实例点构成集合N_k(x)
,如果涵盖N_k(x)
的区域的类别为c_j$, 那么误分类率是:
k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)
要使误分类率最小即经验风险最小,就要使
∑xi∈Nk(x)I(yi=cj)最大,所有多数表决规则等价于经验风险最小化。
参考文献:
【1】统计学习方法——李航
【2】KNN Algorithm - How KNN Algorithm Works With Example | Data Science For Beginners | Simplilearn