kNN 是机器学习的基础算法. 程序容易写, 但要用数学式子来表达, 却有一定难度. 今天我们就来杠一下吧.
1. 基本符号
Table 1. Notations.
符号 | 涵义 |
---|---|
U = { x 1 , … , x n } \mathbf{U} = \{x_1, \dots, x_n\} U={x1,…,xn} | 样本集 |
δ i j = δ ( x i , x j ) \delta_{ij} = \delta(x_i, x_j) δij=δ(xi,xj) | x i x_i xi 与 x j x_j xj 的距离 |
δ B ( x i , x j ) \delta_{\mathbf{B}}(x_i, x_j) δB(xi,xj) | 使用属性子集 B \mathbf{B} B 时 x i x_i xi 与 x j x_j xj 的距离 |
d ( x i ) d(x_i) d(xi) | x i x_i xi 的决策属性值, 即类别 |
说明: 由于 d d d 要用于表示决策属性, 距离只好用 δ \delta δ. 也可以考虑换成 d i s dis dis 之类.
2. 方案一: 刚好考虑 k k k 个邻居
作为 k k kNN 的基本方案, 邻居刚好考虑 k k k 个.
2.1 邻域的表示
对于 x ∉ U x \not\in \mathbf{U} x∈U, 由于它到不同样本的距离可能相等, 其 k k k 个邻居并不一定唯一, 定义如下:
Definition 1. any X ⊆ U \mathbf{X} \subseteq \mathbf{U} X⊆U is a set of k k k-nearest neighbors of x ∉ U x \not\in \mathbf{U} x∈U iff
- ∣ X ∣ = k |\mathbf{X}| = k ∣X∣=k;
- ∀ x i ∈ X \forall x_i \in \mathbf{X} ∀xi∈X and x j ∈ U ∖ X x_j \in \mathbf{U} \setminus \mathbf{X} xj∈U∖X, δ ( x , x i ) ≤ δ ( x , x j ) \delta(x, x_i) \leq \delta(x, x_j) δ(x,xi)≤δ(x,xj).
换种写法:
The set family of all
k
k
k-nearest neighbors of
x
∉
U
x \not\in \mathbf{U}
x∈U is given by
T
k
(
x
,
U
)
=
{
X
⊆
U
∣
∣
X
∣
=
k
,
∀
x
i
∈
X
and
x
j
∈
U
∖
X
,
d
i
s
(
x
,
x
i
)
≤
d
i
s
(
x
,
x
j
)
}
,
(1)
\Tau_k(x, \mathbf{U}) = \{\mathbf{X} \subseteq \mathbf{U} \vert |\mathbf{X}| = k, \forall x_i \in \mathbf{X} \textrm{ and } x_j \in \mathbf{U} \setminus \mathbf{X}, dis(x, x_i) \leq dis(x, x_j)\}, \tag{1}
Tk(x,U)={X⊆U∣∣X∣=k,∀xi∈X and xj∈U∖X,dis(x,xi)≤dis(x,xj)},(1)
where
∣
⋅
∣
\vert \cdot \vert
∣⋅∣ denotes the cardinality of a set.
下面来定义比
x
i
x_i
xi 更靠近
x
x
x 的集合.
The set of instances that are closer to
x
x
x than
x
i
x_i
xi is given by
C
(
x
,
x
i
,
U
)
=
{
x
j
∈
U
∣
δ
(
x
,
x
j
)
<
δ
(
x
,
x
i
)
}
.
C(x, x_i, \mathbf{U}) = \{x_j \in \mathbf{U} \vert \delta(x, x_j) < \delta(x, x_i)\}.
C(x,xi,U)={xj∈U∣δ(x,xj)<δ(x,xi)}.
如果想要
k
k
k-近邻的唯一性, 就需要加一个条件.
Definition 2. Suppose that
δ
(
x
,
x
i
)
\delta(x, x_i)
δ(x,xi) is different for any
x
i
∈
U
x_i \in \mathbf{U}
xi∈U. The set of
k
k
k-nearest neighbors of
x
x
x is given by
τ
k
(
x
,
U
)
=
{
x
i
∈
U
∣
∣
C
(
x
,
x
i
,
U
)
∣
<
k
}
.
(2)
\tau_k(x, \mathbf{U}) = \{x_i \in \mathbf{U} \vert |C(x, x_i, \mathbf{U})| < k\}. \tag{2}
τk(x,U)={xi∈U∣∣C(x,xi,U)∣<k}.(2)
2.2 投票过程的表示
根据邻域进行投票, 就可以获得支持率最高的类, 所为最终的分类.
p ( x , τ k ( x , U ) ) = arg max c ∣ { x i ∈ τ k ( x , U ) ∣ d ( x i ) = c } ∣ . (3) p(x, \tau_k(x, \mathbf{U}) ) = \argmax_{c}\vert \{x_i \in \tau_k(x, \mathbf{U}) \vert d(x_i) = c\} \vert. \tag{3} p(x,τk(x,U))=cargmax∣{xi∈τk(x,U)∣d(xi)=c}∣.(3)
注意到这里的值其实也不是唯一的, 因为得数最多的类别可能不止一个.
2.3 鹏鹏提供的方式
标签为
c
c
c 的实例集合为:
D
c
(
U
)
=
{
x
i
∈
U
∣
d
(
x
i
)
=
c
}
.
(4)
D_c(\mathbf{U}) = \{x_i \in \mathbf{U} \vert d(x_i) = c\}. \tag{4}
Dc(U)={xi∈U∣d(xi)=c}.(4)
因此
p
(
x
,
τ
k
(
x
,
U
)
)
=
arg max
c
∣
{
τ
k
(
x
,
U
)
∩
D
c
(
U
)
}
∣
.
(5)
p(x, \tau_k(x, \mathbf{U}) ) = \argmax_{c}\vert \{\tau_k(x, \mathbf{U}) \cap D_c(\mathbf{U})\} \vert. \tag{5}
p(x,τk(x,U))=cargmax∣{τk(x,U)∩Dc(U)}∣.(5)
甚至
p
(
x
,
τ
k
(
x
,
U
)
)
=
arg max
c
∣
{
D
c
(
τ
k
(
x
,
U
)
)
}
∣
.
(6)
p(x, \tau_k(x, \mathbf{U}) ) = \argmax_{c}\vert \{D_c(\tau_k(x, \mathbf{U}))\} \vert. \tag{6}
p(x,τk(x,U))=cargmax∣{Dc(τk(x,U))}∣.(6)
3. 方案二: 处理距离相等更好的方式
假设班上有 1 名同学考了 100 分, 3 名同学考了 99 分, 其他同学都是 98 分及以下. 如果想取前 2 名, 怎么办?
按上一节的方案, 按照某种策略 (包括随机, 低序号优先), 把考 99 分的 3 名同学中选择 1 位作为第 2 名, 其余同学机会.
本节讨论另一种方案: 将这 3 名同学并列第 2. 这种方案的优势是公平, 但劣势是已经不再取刚好 2 名.
3.1 邻域的表示
首先来定义
x
x
x 在
U
\mathbf{U}
U 中的
δ
\delta
δ 邻域.
Definition 2. The
ε
\varepsilon
ε-neighborhood of
x
x
x in
U
\mathbf{U}
U is given by
n
ε
(
x
,
U
)
=
{
x
i
∈
U
∣
δ
(
x
,
x
i
)
≤
ε
}
.
n_\varepsilon(x, \mathbf{U}) = \{x_i \in \mathbf{U} \vert \delta(x, x_i) \leq \varepsilon\}.
nε(x,U)={xi∈U∣δ(x,xi)≤ε}.
然后来讨论刚好达到或超过
k
k
k 个邻居的域值.
Definition 3.
ε
=
ε
(
k
,
x
,
U
)
\varepsilon = \varepsilon(k, x, \mathbf{U})
ε=ε(k,x,U) is called the
k
k
k-nearest neighbors threshold of
x
x
x wrt.
U
\mathbf{U}
U iff
a)
∣
n
ε
(
x
,
U
)
∣
≥
k
\vert n_\varepsilon(x, \mathbf{U}) \vert \geq k
∣nε(x,U)∣≥k;
b) Any
ε
′
<
ε
\varepsilon' < \varepsilon
ε′<ε,
∣
n
ε
′
(
x
,
U
)
∣
<
k
\vert n_{\varepsilon'}(x, \mathbf{U}) \vert < k
∣nε′(x,U)∣<k.
其中 a) 为达到邻域个数的约束, 条件 b) 为最小性的约束. 两个综合, 就是“刚好达到”.
Definition 4. The extended k k k nearest neighbors of x x x in U \mathbf{U} U is given by τ k ( x , U ) = { x i ∈ U ∣ δ ( x , x i ) ≤ ε ( k , x , U ) } . \tau_k(x, \mathbf{U}) = \{x_i \in \mathbf{U} \vert \delta(x, x_i) \leq \varepsilon(k, x, \mathbf{U})\}. τk(x,U)={xi∈U∣δ(x,xi)≤ε(k,x,U)}.
用这三个定义, 感觉有些绕, 我们再来想想更好的办法.
Definition 3’. The
k
k
k-nearest neighbors threshold of
x
x
x wrt.
U
\mathbf{U}
U is given by
ε
(
k
,
x
,
U
)
=
min
∣
n
ε
(
x
,
U
)
∣
≥
k
ϵ
.
\varepsilon(k, x, \mathbf{U}) = \min_{\vert n_\varepsilon(x, \mathbf{U}) \vert \geq k} \epsilon.
ε(k,x,U)=∣nε(x,U)∣≥kminϵ.
用它来代替 Definition 3 好像更简洁. min 下方的条件虽然有点奇怪, 但也是可接受的.
3.2 投票
与上一节相同.
欢迎在留言区拍砖
这里也只是提供一些建模的思路, 只要能说清楚, 内容没毛病都行.