k近邻算法
k邻近法的三要素:距离度量、k值的选择和分类决策规则。
距离度量:
距离定义为
L
p
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
l
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{l}{p}}
Lp(xi,xj)=(l=1∑n∣∣∣xi(l)−xj(l)∣∣∣p)pl
p=1时:曼哈顿距离,两个向量的各个分量(坐标)的距离的和。
p=2时:欧式距离
p为无穷时:它是两个向量的各个分量(坐标)的距离的最大值。
k值的选择:
k值小,k近邻模型更复杂;k值大,k近邻模型更简单。通常由交叉验证选择最优的k值。
分类决策规则:在最近的k个邻近点中,属于哪一类的点最多,就将预测为该类。
如果涵盖
N
k
(
x
)
N_{k}(x)
Nk(x)的区域的类别是
c
j
c_{j}
cj,那么误分类率是
1
k
∑
x
i
,
N
k
(
x
)
I
(
y
i
≠
c
j
)
=
1
−
1
k
∑
x
i
N
k
(
x
)
I
(
y
i
=
c
j
)
\frac{1}{k} \sum_{x_{i}, N_{k}(x)} I\left(y_{i} \neq c_{j}\right)=1-\frac{1}{k} \sum_{x_{i} N_{k}(x)} I\left(y_{i}=c_{j}\right)
k1xi,Nk(x)∑I(yi=cj)=1−k1xiNk(x)∑I(yi=cj)
kd树:
kd树是一种存储数据的方法,对于每一个要预测的实例,都需要寻找和其特征向量距离最近的那些训练集中的实例,但是当特征向量维度很高时,这种搜索很耗时,这就需要一种特殊的数据结构,如kd树,不需要遍历训练集中的每一个实例。
代码: