(一) k k k近邻算法
k
k
k近邻法(
k
k
k-nearest neighbor,
k
k
k-NN)是一种基本的分类与回归方法。本书仅仅讨论分类,实质上就是利用训练数据对特征向量空间进行划分,并作为其分类的“模型”,三要素=
k
k
k值的选择+距离度量+分类决策规则。其无显式的学习过程。
算法
输入:训练数据
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})\}
T={(x1,y1),(x2,y2),...,(xN,yN)},其中
x
i
∈
X
=
R
n
x_i\in X=R_n
xi∈X=Rn为实例特征向量;
y
i
∈
Y
=
{
c
1
,
c
2
,
.
.
.
,
c
K
}
y_i\in Y=\{c_1,c_2,...,c_K\}
yi∈Y={c1,c2,...,cK}为实例的类别,
i
=
1
,
2
,
.
.
.
,
N
i=1,2,...,N
i=1,2,...,N;实例特征向量
x
x
x;
输出:实例
x
x
x所属的类别
y
y
y
(1)
N
k
(
x
)
N_k(x)
Nk(x):
x
x
x的邻域:根据给定距离度量找出的与
x
x
x最邻近的
k
k
k个点的集合;
(2)在
N
k
(
x
)
N_k(x)
Nk(x)中根据分类决策规则决定类别:
y
=
a
r
g
m
a
x
c
j
∑
x
i
∈
N
k
(
x
)
I
(
y
i
=
c
i
)
,
i
=
1
,
2
,
.
.
.
,
N
;
j
=
1
,
2
,
.
.
.
,
K
y=arg\underset{c_j}{max}\underset{x_i\in N_k(x)}{\sum}I(y_i=c_i),i=1,2,...,N;j=1,2,...,K
y=argcjmaxxi∈Nk(x)∑I(yi=ci),i=1,2,...,N;j=1,2,...,K
I
I
I为指示函数,即当
y
i
=
c
i
y_i=c_i
yi=ci时
I
I
I为1,否则
I
I
I为0。
当仅有一个点即
k
=
1
k=1
k=1时称为最近邻算法,最邻近法将与
x
x
x最邻近点的类作为
x
x
x的类。
(二) k k k近邻模型
1. 模型
单元(cell):距离实例点比其他点更近的所有点组成的区域;
类标记(class label):实例
x
i
x_i
xi的类
y
i
y_i
yi
2. 距离度量
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)^{\frac{1}{p}}
Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)p1
这里
p
≥
1
p\geq1
p≥1。当
p
=
2
p=2
p=2时,称为欧氏距离(Euclidean distance);当
p
=
1
p=1
p=1时,称为曼哈顿距离(Manhattan distance);当
p
=
∞
p=\infty
p=∞时,是各个坐标距离的最大值。如图为二维空间不同
p
p
p与原点的
L
p
L_p
Lp距离为1的点对应图形:
3. k k k值的选择
k → k\rightarrow k→小 邻域 → \rightarrow →小 学习的近似(approximation)误差 → \rightarrow →小 学习的估计(estimation)误差 → \rightarrow →大 模型都复杂度 → \rightarrow →高
4. 分类决策规则
多数表决,即输入实例的 k k k个邻近的训练实例中的多数类决定输入实例的类。
(三) k k k近邻法的实现: k d kd kd树
1. 构造 k d kd kd树
相当于不断地用垂直于坐标轴的超平面将
k
k
k维空间切分,构成一系列的
k
k
k维超矩阵区域。
算法(构造平衡
k
d
kd
kd树) 以案例形式说明
例:给定一个二维空间的数据集:
T
=
{
(
2
,
3
)
T
,
(
5
,
4
)
T
,
(
9
,
6
)
T
,
(
4
,
7
)
T
,
(
8
,
1
)
T
,
(
7
,
2
)
T
}
T=\{(2,3)^T,(5,4)^T,(9,6)^T,(4,7)^T,(8,1)^T,(7,2)^T\}
T={(2,3)T,(5,4)T,(9,6)T,(4,7)T,(8,1)T,(7,2)T}构造一个
k
d
kd
kd平衡树。
解:
2. 搜索 k d kd kd树
算法(用
k
d
kd
kd树的最近邻搜索) 以案例形式说明
例:给定一个如图3.5所示的
k
d
kd
kd树,根节点为
A
A
A,其子节点为
B
,
C
B,C
B,C等。树上共储存7个实例点;另有一输出
S
S
S,求其最邻域。
解: