一.k近邻算法
二.k近邻模型
x
i
,
x
j
的
L
p
距
离
定
义
L
p
(
x
i
,
x
j
)
=
(
∑
i
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
1
/
p
x_i,x_j的L_p距离定义 L_p(x_i,x_j)=(\sum_{i=1^n} |x_i^{(l)}-x_j^{(l)}|^p)^{1/p}
xi,xj的Lp距离定义Lp(xi,xj)=(∑i=1n∣xi(l)−xj(l)∣p)1/p
当p=2时称为欧氏距离,
L
2
(
x
i
,
x
j
)
=
(
∑
i
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
1
/
2
L_2(x_i,x_j)=(\sum_{i=1^n} |x_i^{(l)}-x_j^{(l)}|^p)^{1/2}
L2(xi,xj)=(∑i=1n∣xi(l)−xj(l)∣p)1/2
当p=1时称为曼哈顿距离,
L
1
(
x
i
,
x
j
)
=
(
∑
i
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
L_1(x_i,x_j)=(\sum_{i=1^n} |x_i^{(l)}-x_j^{(l)}|^p)
L1(xi,xj)=(∑i=1n∣xi(l)−xj(l)∣p)
当p=oo时,
L
o
o
(
x
i
,
x
j
)
=
(
∑
i
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
1
/
o
o
L_{oo}(x_i,x_j)=(\sum_{i=1^n} |x_i^{(l)}-x_j^{(l)}|^p)^{1/oo}
Loo(xi,xj)=(∑i=1n∣xi(l)−xj(l)∣p)1/oo
三.k值的选择
k值的选择会对k近邻法的结果产生重大的影响,当k=1时选择距离为1的点作为分类:
误分类率为
1
/
k
∑
x
i
∈
N
k
(
x
)
I
(
y
i
!
=
c
j
)
=
1
−
1
/
k
∑
x
i
∈
N
k
(
x
)
I
(
y
i
=
x
i
)
1/k\sum_{x_i \in N_k(x)} I(y_i !=c_j)=1-1/k \sum_{x_i \in N_k(x)}I(y_i=x_i)
1/k∑xi∈Nk(x)I(yi!=cj)=1−1/k∑xi∈Nk(x)I(yi=xi)
四.kd树
实现k近邻法主要是对训练数据进行快速k近邻搜索,k近邻最简单实现方法是线性扫描,当数据量大时,计算非常耗时,所以有了kd树。
kd树是一种对k维空间中进行存储以便对其进行快速检索的树形的数据结构。kd树是二叉树,表示k维空间的一个划分