统计机器学习【3】- K近邻法(一):基础知识

k近邻法是一种基本分类与回归算法。k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。是一种监督学习。

一、k近邻算法

输入:训练数据集
τ = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } \tau = \lbrace(x_1, y_1), (x_2, y_2), ..., (x_N, y_N) \rbrace τ={(x1,y1),(x2,y2),...,(xN,yN)}
其中, x i ∈ χ ⊆ R n 为 实 例 的 特 征 向 量 , y i ∈ γ = { c 1 , c 2 , . . . , c k } x_i \in \chi \subseteq R^n为实例的特征向量, y_i \in \gamma = \lbrace c_1, c_2, ..., c_k \rbrace xiχRnyiγ={c1,c2,...,ck} 为实例的类别, i = 1 , 2 , . . . , N i = 1, 2, ..., 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个点的 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 = a r g m a x ϵ j ∑ x i ∈ N k ( x ) I ( y i = c j ) , i = 1 , 2 , . . . , N ; j = 1 , 2 , . . . , K (1) y = argmax_{\epsilon j} \sum_{x_i \in N_k(x)} I(y_i = c_j), i = 1, 2, ..., N; j = 1, 2,..., K \tag{1} y=argmaxϵjxiNk(x)I(yi=cj),i=1,2,...,N;j=1,2,...,K(1)

式(1)中, I I I是指示函数,即当 y i = c j y_i = c_j yi=cj I I I为1, 否则 I I I为0.

二、k近邻模型

k近邻法使用的模型实际上对应于特征空间的划分,模型由三个基本要素——距离度量、k值的选择和分类决策规则决定

(1)距离度量

特征空间中两个实例点的距离是两个实例点相似程度的反映,k近邻模型的特征空间一般是n维实数向量空间 R n R^n Rn。使用的距离是欧式距离,但也可以是其它距离。
设特征空间 χ \chi χ是n维实数向量空间 R n R^n Rn x i , x j ∈ χ , x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( n ) ) T , x j = ( x j ( 1 ) , x j ( 2 ) , . . . , x j ( n ) ) T x_i, x_j \in \chi, x_i = (x_i^{(1)}, x_i^{(2)}, ..., x_i^{(n)})^T, x_j = (x_j^{(1)}, x_j^{(2)}, ..., x_j^{(n)})^T xi,xjχ,xi=(xi(1),xi(2),...,xi(n))T,xj=(xj(1),xj(2),...,xj(n))T x i , x j 的 L p x_i, x_j的L_p xi,xjLp距离定义为
L P ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p (2) L_P(x_i, x_j) = (\sum_{l = 1}^n |x_i^{(l)} - x_j^{(l)}|^p)^{\frac{1}{p}}\tag{2} LP(xi,xj)=(l=1nxi(l)xj(l)p)p1(2)

这里 p ≥ 1 p \geq 1 p1。当 p = 2 p = 2 p=2时,称为欧式距离,即
L 2 ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( j ) ∣ 2 ) 1 2 (3) L_2(x_i, x_j) = (\sum_{l=1}^n |x_i^{(l)} - x_j^{(j)}|^2)^{\frac{1}{2}} \tag{3} L2(xi,xj)=(l=1nxi(l)xj(j)2)21(3).

p = 1 p = 1 p=1时,称为曼哈顿距离,即
L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ (4) L_1(x_i, x_j) = \sum_{l = 1}^{n} |x_i^{(l)} - x_j^{(l)}| \tag{4} L1(xi,xj)=l=1nxi(l)xj(l)(4)

p = ∞ p = \infty p=时,它是各个坐标距离的最大值,即
L ∞ ( x i , x j ) = m a x l ∣ x i ( l ) − x j ( l ) ∣ (5) L_\infty (x_i, x_j) = max_l |x_i^{(l)} - x_j^{(l)}| \tag {5} L(xi,xj)=maxlxi(l)xj(l)(5)

在这里插入图片描述

(2)k值的选择

k值的选择会对k近邻法的结果产生重大影响。

  • 较小的k值 -》》学习的近似误差减少,但学习的估计误差增大,预测结果会对近邻的实例敏感,如果临近的实例点恰是噪声,预测会出错,k值的减少意味着整体模型变复杂,容易发生过拟合
  • 较大的k值 -》》学习的估计误差较少,但近似误差增大,与输入实例较远的训练实例也会对预测起作用,预测会发生错误,k值的增大就意味着整体模型变得简单

在应用中,k值一般取一个比较小的数值,通常采用交叉验证法来选取最优的k值。
同时我也在其它得资料中,看到有其他的选取k值的方法:首先计算训练集合中元素个数n求 n \sqrt n n ,而且这个n最好是奇数。

(3)分类决策规则

k近邻法中的分类决策规则往往是多数表决,即由输入实例的k个近邻的训练实例中的多数类决定输入实例的类。

多数表决规则(majority voting relu)有如下解释:如果分类的损失函数为0-1损失函数,分类函数为
f : R n → { c 1 , c 2 , . . . , c k } f: R^n \rightarrow \{ c_1, c_2, ..., c_k\} f:Rn{c1,c2,...,ck}

那么误分类的概率是:
P ( Y ≠ 1 f ( X ) ) = 1 − P ( Y = f ( X ) ) P(Y \ne1 f(X)) = 1 - P(Y = f(X)) P(Y=1f(X))=1P(Y=f(X))

对给定的实例 x ∈ χ , 其 最 近 邻 的 k 个 训 练 实 例 点 构 成 集 合 x \in \chi,其最近邻的k个训练实例点构成集合 xχkN_k(x) , 如 果 涵 盖 ,如果涵盖 N_k(x) 的 区 域 的 类 别 为 的区域的类别为 c_j$, 那么误分类率是:
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(y_i \neq c_j) = 1 - \frac{1}{k} \sum_{x_i \in N_k(x) }I(y_i = c_j) k1xiNk(x)I(yi=cj)=1k1xiNk(x)I(yi=cj)
要使误分类率最小即经验风险最小,就要使 ∑ x i ∈ N k ( x ) I ( y i = c j ) \sum_{x_i \in N_k(x)}I(y_i = c_j) xiNk(x)I(yi=cj)最大,所有多数表决规则等价于经验风险最小化。

参考文献:
【1】统计学习方法——李航
【2】KNN Algorithm - How KNN Algorithm Works With Example | Data Science For Beginners | Simplilearn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值