一、K近邻
1.1 基本介绍
k近邻法(k-NN)是一种基本的分类和回归方法,更偏向于分类。k近邻简单直观:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最接近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。k近邻模型没有显式的学习过程,有三个要素:k值的选择、距离度量和分类决策规则。
1.2 k值的选择
如果选择较小的k值,就相当于用较小的邻域中的训练实例进行预测,近似误差会减小,但估计误差会增大,容易受到噪声的干扰。也意味着模型整体变得比较复杂,容易发生过拟合。
如果选择较大的k值,就相当于用较大的邻域中的训练实例进行预测,可以减少学习的估计误差,但学习的近似误差会增大。也意味着模型变得简单,容易发生欠拟合。
通常是选取一个比较小的值,然后采用交叉验证法来选取最优的k值。
1.3 距离的度量
特征空间中两个实例点的距离是两个实例点相似程度的反映。不妨设特征空间是 R n \bm R^n Rn,有两点 x i = ( x i ( 1 ) , x i ( 2 ) , ⋯ , x i ( n ) ) , x j = ( x j ( 1 ) , x j ( 2 ) , ⋯ , x j ( n ) ) x_i=(x_i^{(1)}, x_i^{(2)}, \cdots, x_i^{(n)}), x_j=(x_j^{(1)}, x_j^{(2)}, \cdots, x_j^{(n)}) xi=(xi(1),xi(2),⋯,xi(n)),xj=(xj(1),xj(2),⋯,xj(n)),一般使用的有 L p L_p Lp距离和Minkowski距离:
L
p
L_p
Lp距离:
L
p
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
1
p
(1)
L_p(x_i, x_j)=(\sum\limits_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^p)^{\frac{1}{p}}\tag1
Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)p1(1)
欧式距离(
p
=
2
p=2
p=2):
L
2
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
2
)
1
2
(2)
L_2(x_i, x_j)=(\sum\limits_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^2)^{\frac{1}{2}}\tag2
L2(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣2)21(2)
曼哈顿距离(
p
=
1
p=1
p=1):
L
p
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
)
(3)
L_p(x_i, x_j)=(\sum\limits_{l=1}^n|x_i^{(l)}-x_j^{(l)}|)\tag3
Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣)(3)
p
=
∞
p=\infty
p=∞时,
L
∞
(
x
i
,
x
j
)
=
max
l
∣
x
i
(
l
)
−
x
j
(
l
)
∣
(4)
L_{\infty}(x_i, x_j)=\max_l|x_i^{(l)}-x_j^{(l)}|\tag4
L∞(xi,xj)=lmax∣xi(l)−xj(l)∣(4)
1.4 分类决策规则
k近邻法中的分类决策规则往往是多数表决,即由输入实例的 k k k个邻近的训练实例中的多数类决定输入实例的类。
二、k近邻法的实现:kd树
2.1 基本思想
k近邻法最简单的实现方法是线性扫描,这时要计算输入实例与每个训练实例的距离,当训练集很大时,计算非常耗时。为了提高k紧邻搜索的效率,可以使用特殊的结构存储训练数据,以减少计算距离的次数,其中的一种方法就是kd树。
2.2 构造kd树
kd树是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。kd树是二叉树,表示对k维空间的一个划分。
构造kd树的方法如下:构造根节点,使根节点对应于k维空间中包含所有实例点的超矩形区域。通过下面的递归方法,不断的对k维空间进行划分,生成子节点。即:在超矩形区域上选择一个坐标轴和在此坐标轴上的一个切分点(一般为中位数),确定一个超平面,这个超平面通过切分点并垂直于选定的坐标轴,将当前超矩形区域切分为左右两个子区域(子节点);这时,实例点被分到两个子区域。这个过程直到子区域内没有实例点时终止(终止的节点为叶节点)。
2.3 搜索kd树
2.4 优缺点
- 优点:
- KNN是一种在线技术,新数据可以直接加入数据集而不必进行重新训练
- KNN理论简单,容易实现
- 对异常值不敏感
- 既可以做回归,又可以做分类,更多是做分类
- 缺点:
- 对于样本容量大的数据集计算量比较大。
- 样本不平衡时,预测偏差比较大。
- 受 k k k值影响较大
2.5 其它
- 需要进行标准化处理
- 面经 机器学习 KNN