K近邻算法(K-Nearest Neighbors Algorithm)是一种简单而常用的监督学习算法,用于分类和回归问题。该算法基于一个假设:相似的样本具有相似的输出值。它的原理可以用以下数学公式描述:
距离度量(Distance Measure)
在K近邻算法中,首先需要定义样本之间的距离或相似度。常用的距离度量方法包括欧氏距离(Euclidean Distance)、曼哈顿距离(Manhattan Distance)、闵可夫斯基距离(Minkowski Distance)等。
对于两个样本向量𝑥和𝑦,欧氏距离可以表示为:
d
(
x
,
y
)
=
(
∑
(
x
i
−
y
i
)
2
)
d(x, y) = \sqrt{(\sum(x_i - y_i)^2)}
d(x,y)=(∑(xi−yi)2)
曼哈顿距离可以表示为:
d
(
x
,
y
)
=
∑
∣
x
i
−
y
i
∣
d(x, y) = \sum|x_i - y_i|
d(x,y)=∑∣xi−yi∣
闵可夫斯基距离是一种广义的距离度量,可以表示为:
d
(
x
,
y
)
=
(
∑
(
∣
x
i
−
y
i
∣
p
)
)
1
q
d(x, y)= (\sum({|x_i - y_i|}^p))^{\frac{1}{q}}
d(x,y)=(∑(∣xi−yi∣p))q1
K近邻的选择
在算法的训练阶段,将训练样本的特征向量和对应的标签值存储起来。当需要预测一个新样本的标签时,算法会计算该新样本与训练集中所有样本的距离,并选择与该新样本距离最近的K个样本作为其近邻。
多数表决(Majority Voting)
k
k
k近邻法中分类决策规则往往是多数表决,即由输入实例的
k
k
k个邻近的训练实例中的多数类决定输入实例的类.分类函数为:
f
:
R
n
→
{
c
1
,
c
2
,
⋯
,
c
K
}
f:{{R}^{n}}\to \left\{ {{c}_{1}},{{c}_{2}},\cdots ,{{c}_{K}} \right\}
f:Rn→{c1,c2,⋯,cK}
那么误分类的概率是:
P
(
Y
≠
f
(
X
)
)
=
1
−
P
(
Y
≡
f
(
X
)
)
P\left( Y\ne f\left( X \right) \right)=1-P\left( Y\equiv f\left( X \right) \right)
P(Y=f(X))=1−P(Y≡f(X))
对给定的实例
x
→
∈
χ
\overrightarrow{x}\in \chi
x∈χ,其最近邻的
k
k
k个训练实例点构成的集合
N
k
(
x
→
)
{{N}_{k}}\left( \overrightarrow{x} \right)
Nk(x)。如果涵盖
N
k
(
x
)
{{N}_{k}}\left( x \right)
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\limits_{{{\overrightarrow{x}}_{i}}\in {{N}_{k}}\left( \overrightarrow{x} \right)}{I\left( {{y}_{i}}\ne {{c}_{j}} \right)}=1-\frac{1}{k}\sum\limits_{{{\overrightarrow{x}}_{i}}\in {{N}_{k}}\left( \overrightarrow{x} \right)}{I\left( {{y}_{i}}={{c}_{j}} \right)}
k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)
要使误分类率最小即经验风险最小,就要使
∑
x
→
i
∈
N
k
(
x
→
)
I
(
y
i
=
c
j
)
\sum\limits_{{{\overrightarrow{x}}_{i}}\in {{N}_{k}}\left( \overrightarrow{x} \right)}{I\left( {{y}_{i}}={{c}_{j}} \right)}
xi∈Nk(x)∑I(yi=cj)
最大,所以多数表决规则等价于经验风险最小化。