第三章 k近邻法
-
只讨论分类问题的k近邻法
-
k近邻三个基本要素:
- k值选择
- 距离度量
- 分类决策规则
k近邻算法
算法 3.1 ( k 近邻法)
输入:
训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } = { ( x i , y i ) } i = 1 N \begin{aligned} T& = \left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} \\ & = \left\{ (x_i,y_i)\right\}_{i=1}^N \end{aligned} T={(x1,y1),(x2,y2),⋯,(xN,yN)}={(xi,yi)}i=1N
其中中, x i ∈ X ⊆ R n x_{i} \in \mathcal{X} \subseteq \mathrm{R}^{n} xi∈X⊆Rn 为实例的特征向量, y i ∈ Y = { c 1 , c 2 , ⋯ , c K } y_{i} \in \mathcal{Y}=\left\{c_{1}, c_{2}, \cdots, c_{K}\right\} yi∈Y={c1,c2,⋯,cK} 为实例的类别, i = 1 , 2 , ⋯ , N i=1,2, \cdots, N i=1,2,⋯,N; 实例特征向量 x x x;
输出:
实例 x x x 所属的类 y y y 。
(1) 根据给定的距离度量, 在训练集 T T T 中找出与 x x x 最邻近的 k k k 个点,当k等于1时候叫最近邻, 涵盖这 k k k 个 点的 x x x 的邻域记作 N k ( x ) N_{k}(x) Nk(x);
(2) 在 N k ( x ) N_{k}(x) Nk(x) 中根据分类决策规则 (如多数表决) 决定 x x x 的类别 y y y :
y = arg max c j ∑ x i ∈ N k ( x ) I ( y i = c j ) , i = 1 , 2 , ⋯ , N ; j = 1 , 2 , ⋯ , K y=\arg \max _{c_{j}} \sum_{x_{i} \in N_{k}(x)} I\left(y_{i}=c_{j}\right), \quad i=1,2, \cdots, N ; j=1,2, \cdots, K y=argcjmaxxi∈Nk(x)∑I(yi=cj),i=1,2,⋯,N;j=1,2,⋯,K
其中, I I I 为指示函数/失性函数(indicator function)
I ( y i = c j ) = { 1 , i f y i = c j 0 , i f y i ≠ c j I\left(y_{i}=c_{j}\right) = \left\{ \begin{aligned} 1, \quad ify_i &= c_j \\ 0, \quad ify_i &\neq c_j \\ \end{aligned} \right. I(yi=cj)={1,ifyi0,ifyi=cj=cj
k近邻模型的距离划分
-
k近邻方法没有显示的模型形式,与感知机的分离超平面不同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VpUjJMxZ-1659022513532)(https://cdn.mathpix.com/snip/images/XT4ehkO9xMyjrMbB_3TAwq2p3dFrLumDpobWUUA-YYQ.original.fullsize.png)]
特征空间中,对每个实例点 x i x_i xi,距离该点比其他点近的所有点组成一个区域,叫做单元,每个训练实例点拥有一个单元,所有训练实例蒂娜的单元构成对特征空间的一个划分。
-
距离度量
k k k 近邻模型的特征 空间一般是 n n n 维实数向量空间 R n \mathbf{R}^{n} Rn 。使用的距离是欧氏距离, 但也可以是其他距离, 如 更一般的 L p L_{p} Lp 距离( L p L_{p} Lp distance)或 Minkowski 距离 (Minkowski distance)。
设特征空间 X \mathcal{X} X 是 n n n 维实数向量空间 R n , x i , x j ∈ X , x i = ( x i ( 1 ) , x i ( 2 ) , ⋯ , x i ( n ) ) T \mathrm{R}^{n}, x_{i}, x_{j} \in \mathcal{X}, x_{i}=\left(x_{i}^{(1)}, x_{i}^{(2)}, \cdots, x_{i}^{(n)}\right)^{\mathrm{T}} Rn,xi,xj∈X,xi=(xi(1),xi(2),⋯,xi(n))T, x j = ( x j ( 1 ) , x j ( 2 ) , ⋯ , x j ( n ) ) T , x i , x j x_{j}=\left(x_{j}^{(1)}, x_{j}^{(2)}, \cdots, x_{j}^{(n)}\right)^{\mathrm{T}}, x_{i}, x_{j} xj=(xj(1),xj(2),⋯,xj(n))T,xi,xj 的 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}\left(x_{i}, x_{j}\right)=\left(\sum_{l=1}^{n}\left|x_{i}^{(l)}-x_{j}^{(l)}\right|^{p}\right)^{\frac{1}{p}} Lp(xi,xj)=(l=1∑n∣ ∣xi(l)−xj(l)∣ ∣p)p1
其中:
p = 1 , 城市街区距离 L 1 范数 L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p = 2 , 欧几里得距离 L 2 范数 L 2 ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ 2 ) 1 2 p = ∞ , 最大距离 L ∞ 范数 L ∞ ( x i , x j ) = max i ∣ x i ( l ) − x j ( l ) ∣ \begin{aligned} p&=1,\quad城市街区距离\quad\quad L_1 范数\quad L_{1} \left(x_{i}, x_{j}\right)=\sum_{l=1}^{n}\left|x_{i}^{(l)}-x_{j}^{(l)}\right| \\ p&=2,\quad欧几里得距离\quad\quad L_2 范数\quad L_{2}\left(x_{i}, x_{j}\right)=\left(\sum_{l=1}^{n}\left|x_{i}^{(l)}-x_{j}^{(l)}\right|^{2}\right)^{\frac{1}{2}} \\ p&= \infin,\quad最大距离\quad\quad\quad L_{\infin} 范数\quad L_{\infin}\left(x_{i}, x_{j}\right) = \max \limits_i |x_i^{(l)}-x_j^{(l)}| \end{aligned} ppp=1,城市街区距离L1范数L1(xi,xj)=l=1∑n∣ ∣xi(l)−xj(l)∣ ∣=2,欧几里得距离L2范数L2(xi,xj)=(l=1∑n∣ ∣xi(l)−xj(l)∣ ∣2)21=∞,最大距离L∞范数L∞(xi,xj)=imax∣xi(l)−xj(l)∣
k值的选择
-
k值选择会对k近邻算法产生重大影响
-
若选择较小k值:(过拟合)
优点:学习的近似误差 ↓ \downarrow ↓
缺点:学习的估计误差 ↑ \uparrow ↑
k值减小意味着整体模型变得复杂,容易发生过拟合
-
若选择较大k值:(欠拟合)
优点:学习的估计误差 ↓ \downarrow ↓
缺点:学习的近似误差 ↑ \uparrow ↑
k值增大意味着整体模型变得简单,容易发生欠拟合
-
若k=N:
模型过于简单,完全忽略了训练实例中大量有用信息,不可取
-
-
一般采用交叉验证法来选取最优k值
k近邻分类决策规则
-
多数表决(majority voting rule)
如果分类的损失函数为 0-1 损 失函数, 分类函数为以下多分类
f : R n → { c 1 , c 2 , ⋯ , c K } f: \mathbf{R}^{n} \rightarrow\left\{c_{1}, c_{2}, \cdots, c_{K}\right\} f:Rn→{c1,c2,⋯,cK}
那么误分类的概率是
P ( Y ≠ f ( X ) ) = 1 − P ( Y = f ( X ) ) P(Y \neq f(X))=1-P(Y=f(X)) P(Y=f(X))=1−P(Y=f(X))
对给定的实例 x ∈ X x \in \mathcal{X} x∈X,其最近邻的 $k$ 个训练实例点构成集合
N k ( x ) N_{k}(x) Nk(x) 。如果涵盖 N k ( x ) N_{k}(x) 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_{x_{i} \in N_{k}(x)} I\left(y_{i} \neq c_{j}\right)=1-\frac{1}{k} \sum_{x_{i} \in N_{k}(x)} I\left(y_{i}=c_{j}\right) k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)
其中: y i y_i yi 表示真实类别, C j C_j Cj 表示判别类别要使误分类率最小即经验风险最小, 就要使 ∑ x i ∈ N k ( x ) I ( y i = c j ) \sum_{x_{i} \in N_{k}(x)} I\left(y_{i}=c_{j}\right) ∑xi∈Nk(x)I(yi=cj) 最大, 所以多数表决规 则等价于经验风险最小化。