k近邻法
k近邻法是一种基本分类和回归方法。k值的选择,距离度量和分类决策规则是k近邻法的三个要素。
1 k近邻算法
输入:训练集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
i
,
y
i
)
T={(x_1,y_1),(x_2,y_2),...,(x_i,yi)}
T=(x1,y1),(x2,y2),...,(xi,yi),其中
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
c
1
,
c
2
,
.
.
.
,
c
k
x_i\in X= R^n, y_i \in Y={c_1, c_2,...,c_k}
xi∈X=Rn,yi∈Y=c1,c2,...,ck
输出:实例x所属的类y。
(1)根据给定的距离度量,在训练集T中找出与x最邻近的k个点,涵盖这k个点的x的邻域记作
N
k
(
x
)
N_k(x)
Nk(x)
(2)在
N
k
(
x
)
N_k(x)
Nk(x)中根据分类决策规则决定x的类别y
y
=
arg max
c
j
∑
x
∈
N
k
(
x
)
I
(
y
i
=
c
j
)
,
i
=
1
,
2...
,
N
;
j
=
1
,
2
,
.
.
.
,
K
y=\argmax_{c_j}\sum_{x \in N_k(x)} I(y_i=c_j),i=1,2...,N;j=1,2,...,K
y=cjargmaxx∈Nk(x)∑I(yi=cj),i=1,2...,N;j=1,2,...,K
I为指示函数,
y
i
=
c
j
y_i=c_j
yi=cj时I为1,否则为0.
2 k近邻模型
k近邻法是将特征共空间根据要素划分为一些子空间,子空间的区域叫做单元(cell).
2.1 距离度量
关于
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(x_i,x_j)=(\sum_{l=1}^{n}|x_i^l-x_j^l|^p)^\frac1p
Lp(xi,xj)=(l=1∑n∣xil−xjl∣p)p1
如果p=2,表示欧式距离
L
p
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
l
−
x
j
l
∣
2
)
1
2
L_p(x_i,x_j)=(\sum_{l=1}^{n}|x_i^l-x_j^l|^2)^\frac12
Lp(xi,xj)=(l=1∑n∣xil−xjl∣2)21
如果p=1,表示曼哈顿距离
L
p
(
x
i
,
x
j
)
=
∑
l
=
1
n
∣
x
i
l
−
x
j
l
∣
L_p(x_i,x_j)=\sum_{l=1}^{n}|x_i^l-x_j^l|
Lp(xi,xj)=l=1∑n∣xil−xjl∣
如果p=
∞
\infty
∞,为各个坐标距离的最大值
L
p
(
x
i
,
x
j
)
=
max
l
∣
x
i
l
−
x
j
l
∣
L_p(x_i,x_j)=\max_l|x_i^l-x_j^l|
Lp(xi,xj)=lmax∣xil−xjl∣
2.2 k值选择
k值小,近似误差减小,估计误差增大,模型更加复杂.
k值大,近似误差增大,估计误差减小,模型更加简单.
在应用中,k值一般取一个比较小的数值.通常采用交叉验证法来选取最优的k值.
2.3 分类决策规则
为了得到很好的分类效果,就要求有很低的误分类率,也就是经验风险最小.误分类率的公式如下:
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
)
\frac1k\sum_{x_i \in N_k(x)}I(y_i \neq c_j)=1-\frac 1k\sum_{x_i \in N_k(x)}I(y_i = c_j)
k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)
3 k近邻实现方法:kd树
3.1 构造kd树
3.2 搜索kd树