kNN 是机器学习的基础算法. 程序容易写, 但要用数学式子来表达, 却有一定难度. 今天我们就来杠一下吧.
1. 基本符号
Table 1. Notations.
符号 | 涵义 |
---|---|
U={x1,…,xn}\mathbf{U} = \{x_1, \dots, x_n\}U={x1,…,xn} | 样本集 |
δij=δ(xi,xj)\delta_{ij} = \delta(x_i, x_j)δij=δ(xi,xj) | xix_ixi 与 xjx_jxj 的距离 |
δB(xi,xj)\delta_{\mathbf{B}}(x_i, x_j)δB(xi,xj) | 使用属性子集 B\mathbf{B}B 时 xix_ixi 与 xjx_jxj 的距离 |
d(xi)d(x_i)d(xi) | xix_ixi 的决策属性值, 即类别 |
说明: 由于 ddd 要用于表示决策属性, 距离只好用 δ\deltaδ. 也可以考虑换成 disdisdis 之类.
2. 方案一: 刚好考虑 kkk 个邻居
作为 kkkNN 的基本方案, 邻居刚好考虑 kkk 个.
2.1 邻域的表示
对于 x∉Ux \not\in \mathbf{U}x∈U, 由于它到不同样本的距离可能相等, 其 kkk 个邻居并不一定唯一, 定义如下:
Definition 1. any X⊆U\mathbf{X} \subseteq \mathbf{U}X⊆U is a set of kkk-nearest neighbors of x∉Ux \not\in \mathbf{U}x∈U iff
- ∣X∣=k|\mathbf{X}| = k∣X∣=k;
- ∀xi∈X\forall x_i \in \mathbf{X}∀xi∈X and xj∈U∖Xx_j \in \mathbf{U} \setminus \mathbf{X}xj∈U∖X, δ(x,xi)≤δ(x,xj)\delta(x, x_i) \leq \delta(x, x_j)δ(x,xi)≤δ(x,xj).
换种写法:
The set family of all kkk-nearest neighbors of x∉Ux \not\in \mathbf{U}x∈U is given by
Tk(x,U)={X⊆U∣∣X∣=k,∀xi∈X and xj∈U∖X,dis(x,xi)≤dis(x,xj)},(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.
下面来定义比 xix_ixi 更靠近 xxx 的集合.
The set of instances that are closer to xxx than xix_ixi is given by
C(x,xi,U)={xj∈U∣δ(x,xj)<δ(x,xi)}.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)}.
如果想要 kkk-近邻的唯一性, 就需要加一个条件.
Definition 2. Suppose that δ(x,xi)\delta(x, x_i)δ(x,xi) is different for any xi∈Ux_i \in \mathbf{U}xi∈U. The set of kkk-nearest neighbors of xxx is given by
τk(x,U)={xi∈U∣∣C(x,xi,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 maxc∣{xi∈τk(x,U)∣d(xi)=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 鹏鹏提供的方式
标签为 ccc 的实例集合为:
Dc(U)={xi∈U∣d(xi)=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 maxc∣{τk(x,U)∩Dc(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 maxc∣{Dc(τ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 邻域的表示
首先来定义 xxx 在 U\mathbf{U}U 中的 δ\deltaδ 邻域.
Definition 2. The ε\varepsilonε-neighborhood of xxx in U\mathbf{U}U is given by
nε(x,U)={xi∈U∣δ(x,xi)≤ε}.n_\varepsilon(x, \mathbf{U}) = \{x_i \in \mathbf{U} \vert \delta(x, x_i) \leq \varepsilon\}.nε(x,U)={xi∈U∣δ(x,xi)≤ε}.
然后来讨论刚好达到或超过 kkk 个邻居的域值.
Definition 3. ε=ε(k,x,U)\varepsilon = \varepsilon(k, x, \mathbf{U})ε=ε(k,x,U) is called the kkk-nearest neighbors threshold of xxx 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 kkk nearest neighbors of xxx in U\mathbf{U}U is given by τk(x,U)={xi∈U∣δ(x,xi)≤ε(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 kkk-nearest neighbors threshold of xxx 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 投票
与上一节相同.
欢迎在留言区拍砖
这里也只是提供一些建模的思路, 只要能说清楚, 内容没毛病都行.