KNN模型
KNN模型实际上对应于对特征空间的划分,虽然没有具体的数学抽象语言描述,但是仍然存在其三要素:距离度量、K值的选择、分类决策规则。
算法3.1:
输入:训练数据集 T = [ ( x 1 , y 1 ) , … , ( x N , y N ) ] T=\left[\left(x_{1}, y_{1}\right), \ldots,\left(x_{N}, y_{N}\right)\right] T=[(x1,y1),…,(xN,yN)], x i ∈ X ⊆ R n x_{i} \in X \subseteq R^{n} xi∈X⊆Rn, y i ∈ Y = { c 1 , ⋯ , c K } \quad y_{i} \in Y=\left\{c_{1}, \cdots, c_{K}\right\} yi∈Y={c1,⋯,cK} , 实例特征向量 x x x。
- 根据给定的距离度量,在训练集中找到与x最近的k个点,涵盖这k个点的邻域记作 N k ( x ) N_{k}(x) Nk(x)
- 在 N k ( x ) N_{k}(x) Nk(x)中根据分类决策规则(如多数表决)决定 x x x的类别 y y y
输出:实例 x x x所属的类别 y y y
模型
kNN模型没有显式的规则模型
距离度量
k近邻方法的特征空间一般是n维实数向量空间 R n \mathbf{R}^{n} Rn 。使用的距离是欧式距离。
假设特征空间 X X X是n维实数向量空间 R n \mathbf{R}^{n} Rn, x i = ( x i ( 1 ) , x i ( 2 ) , ⋯ , x i ( n ) ) T x_{i}=\left(x_{i}^{(1)}, x_{i}^{(2)}, \cdots, x_{i}^{(n)}\right)^{\mathrm{T}} xi=(xi(1),xi(2),⋯,xi(n))T, x j = ( x j ( 1 ) , x j ( 2 ) , ⋯ , x j ( n ) ) T x_{j}=\left(x_{j}^{(1)}, x_{j}^{(2)}, \cdots, x_{j}^{(n)}\right)^{\mathrm{T}} xj=(xj(1),xj(2),⋯,xj(n))T, x i , x j x_{i}, x_{j} xi,xj的 L p L_{p} Lp距离定义为
L
p
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
1
p
L_{p}\left(x_{i}, x_{j}\right)=\left(\sum_{l=1}^{n}\left|x_{i}^{(l)}-x_{j}^{(l)}\right|^{p}\right)^{\frac{1}{p}}
Lp(xi,xj)=(l=1∑n∣
∣xi(l)−xj(l)∣
∣p)p1
这里
p
≥
1
p\ge1
p≥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
L_{2}\left(x_{i}, x_{j}\right)=\left(\sum_{l=1}^{n}\left|x_{i}^{(l)}-x_{j}^{(l)}\right|^{2}\right)^{\frac{1}{2}}
L2(xi,xj)=(l=1∑n∣
∣xi(l)−xj(l)∣
∣2)21
当
p
=
1
p=1
p=1时,称为曼哈顿距离
L
1
(
x
i
,
x
j
)
=
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
L_{1}\left(x_{i}, x_{j}\right)=\sum_{l=1}^{n}\left|x_{i}^{(l)}-x_{j}^{(l)}\right|
L1(xi,xj)=l=1∑n∣
∣xi(l)−xj(l)∣
∣
(source:https://medium.com/@balaka2605/distances-in-machine-learning-289afbce8148)
当
p
=
∞
p=\infin
p=∞ 时,它是各个坐标距离的最大值,
L
∞
(
x
i
,
x
j
)
=
max
l
∣
x
i
(
l
)
−
x
j
(
l
)
∣
L_{\infty}\left(x_{i}, x_{j}\right)=\max _{l}\left|x_{i}^{(l)}-x_{j}^{(l)}\right|
L∞(xi,xj)=lmax∣
∣xi(l)−xj(l)∣
∣
对于两个点的切比雪夫距离(棋盘距离):
max
(
∣
x
1
−
x
2
∣
,
∣
y
1
−
y
2
∣
)
\max \left(\left|x_{1}-x_{2}\right|,\left|y_{1}-y_{2}\right|\right)
max(∣x1−x2∣,∣y1−y2∣)
k值的选择
除了距离度量外,还有K值的选择对KNN算法的结果也会产生重大影响。
- 如果选择较小的k值,就相当于用较小的领域中的训练实例进行预测,“学习”的近似误差会减小,只有与输入实例较近的实例才会对预测结果起到作用。但缺点就是学习的估计误差就会增大,预测结果就会近邻的实例点非常敏感,如果邻近的实例点恰好是噪声,预测就会出错。
- 如果选择较大的值,学习的误差估计会减小,但是与此同时,近似误差就会增大,这时会出现对于距离比较远的实例点也会对预测起作用,使得预测结果错误。
- 在应用中:先取一个较小的k值,在通过交叉验证法选取最优的k值。
分类决策规则
KNN中的决策规则通常就是“投票选举”——少数服从多数的方式。损失函数为
1
k
∑
x
i
∈
N
k
(
x
)
I
(
y
i
≠
c
j
)
\frac{1}{k} \sum_{x_{i} \in N_{k}(x)} I\left(y_{i} \neq c_{j}\right)
k1xi∈Nk(x)∑I(yi=cj)
例子:
实心圆内都判断为红色的损失值
1
3
[
I
(
y
1
≠
r
e
d
)
+
I
(
y
2
≠
r
e
d
)
+
I
(
y
3
≠
r
e
d
)
]
1
3
(
0
+
0
+
1
)
=
1
3
\begin{gathered} \frac{1}{3}\left[I\left(y_{1} \neq r e d\right)+I\left(y_{2} \neq r e d\right)+I\left(y_{3} \neq r e d\right)\right] \\ \frac{1}{3}(0+0+1)=\frac{1}{3} \end{gathered}
31[I(y1=red)+I(y2=red)+I(y3=red)]31(0+0+1)=31
实心圆内斗判断为蓝色的损失值
1
3
(
I
1
+
I
2
+
I
3
)
=
2
3
\frac{1}{3}\left(I_{1}+I_{2}+I_{3}\right)=\frac{2}{3}
31(I1+I2+I3)=32
Kd树
总结:
-
Kd树采用了特殊的结构存储训练数据。
-
Kd树可以减少计算距离的次数。
-
但当空间维数接近训练实例数时,它的效率会迅速下 降。