K近邻法假设给定一个训练数据集,其中的实例类别已定,分类时,对新的实例,根据其K个最近邻的数据实例的类别,通过多数表决的方式进行预测。通俗点说,就是物以类聚人以群分,你身边的K个人大多属于什么类型,那么你就属于什么类型。
<1>.K值的选择
K值的选择对近邻法的结果产生较大的影响,选择较小的K值,则只有与实例较近的训练实例才对预测结果起作用,如果临近的实例恰好是噪音,则预测结果就会出错;当k值过大时,与实例较远的训练实例也会对预测起作用,也不太合适,例如K取训练实例的个数,则不管输入什么样的数据,预测结果都为训练实例中实例个数最多的类。在运用中,K值一般取一个较小的数值,通常通过交叉验证来选取最优K值。
下图为一个例子:
红色星,绿色圆,黄色三角代表不同的3类,要推测出中间黑色框属于3类中的那一类?
当
k
=
3
k=3
k=3时,和黑色框距离最近的3个点当中有2个红色星,1个绿色圆,因此认为黑色框的类别为红色星;当
k
=
13
k=13
k=13时,和黑色框最近的13个点中有8个绿色圆,4个红色星,1个黄色三角,因此认为黑色框的类别为绿色圆
<2>.距离度量
衡量点与点之间距离的的度量方式也很重要,常见的距离度量公式有:
闵可夫斯基距离:
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=1n(xil−xjl)p)p1
欧式距离:
L
2
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
(
x
i
l
−
x
j
l
)
2
)
1
2
L_{2}(x_{i},x_{j})=(\sum_{l=1}^{n}(x_{i}^{l}-x_{j}^{l})^{2})^{\frac{1}{2}}
L2(xi,xj)=(∑l=1n(xil−xjl)2)21;
(
p
=
2
)
(p=2)
(p=2)
曼哈顿距离:
L
1
(
x
i
,
x
j
)
=
∑
l
=
1
n
∣
(
x
i
l
−
x
j
l
)
∣
L_{1}(x_{i},x_{j})=\sum_{l=1}^{n}|(x_{i}^{l}-x_{j}^{l})|
L1(xi,xj)=∑l=1n∣(xil−xjl)∣;
(
p
=
1
)
(p=1)
(p=1)
切比雪夫距离:
L
p
(
x
i
,
x
j
)
=
max
∣
(
x
i
l
−
x
j
l
)
∣
L_{p}(x_{i},x_{j})=\max|(x_{i}^{l}-x_{j}^{l})|
Lp(xi,xj)=max∣(xil−xjl)∣;
(
p
=
∞
)
(p=\infin)
(p=∞)
x
i
x_{i}
xi表示实例i,
x
i
l
x_{i}^{l}
xil表示实例i第
l
l
l个属性的取值,
n
n
n表示属性的个数
下图为不同距离度量下到原点距离为1的点集:
红色为曼哈顿距离,黄色为欧氏距离,蓝色为切比雪夫距离。
当k值给定后,选择不同的度量方式,得到的预测结果会有差异,如下图预测处于原点(0,0)的黑色框的类别,K取1,即最近邻
P1(10,0) | P2(6,6) | P3(4,6.5) | k=1近邻 | 预测类别 | |
---|---|---|---|---|---|
欧式距离 | 100 | 72 | 58.25 | P3 | 绿色圆 |
曼哈顿距离 | 10 | 12 | 10.5 | P1 | 黄色三角 |
切比雪夫距离 | 10 | 6 | 6.5 | P2 | 红色星 |
上表可以看出,当距离度量方式不同时,得到的预测结果也不同。距离度量公式根据实际问题和实验来选定。
参考书籍:《统计学习方法》