统计学习方法笔记(二):k近邻法

统计学习方法笔记(二):k近邻法

1.分类问题下的k近邻法简述:

k 近邻法的输入为实例的特征向量,对应于特征空间
的点;输出为实例的类别,可以取多类. k 近邻法假设给定一个训练数据集,其
中的实例类别已定.分类时,对新的实例,根据其 k 个最近邻的训练实例的类别,
通过多数表决等方式进行预测

2.k近邻法模型

i.输入与输出的关系

假设给定数据集如下:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),(x_3,y_3),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),(x3,y3),...,(xN,yN)}
其中xi为实例的特征向量,yi表示实例的类别,满足以下关系:
x i ∈ X ⊆ R n , y i ∈ Y = { c 1 , c 2 , . . . , c k } i = 1 , 2 , . . . , N x_i \in X \subseteq R^n,y_i \in Y=\{c_1,c_2,...,c_k\} \\ i=1,2,...,N xiXRn,yiY={c1,c2,...,ck}i=1,2,...,N
k表示实例的个数

输入值:实例(通过特定算法转化为特征向量)

输出值:实例的特征向量通过给定的分类策略计算得到的类别,即实例所属的类,为集合Y中的元素

若设在给定的距离度量下,训练集中与输入值x最邻近的k个点,涵盖这k个点的邻域为
N k ( x ) N_k(x) Nk(x)
在分类规则为多数表决时,输入与输出的关系为
y = a r g 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(y_i = c_j) \\ i = 1,2,...,N;j=1,2,...,K y=argcjmaxxiNk(x)I(yi=cj)i=1,2,...,N;j=1,2,...,K
其中I为指示函数,当yi = cj时,I=1,否则I=0

ii.模型组成部分

由于k近邻法没有显式的学习过程,故采用分析组成部分描述。

k近邻法的模型由三部分组成:距离度量,k值的选择和分类策略

1)距离度量

对于n维空间的向量xi,xj定义如下:
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_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T\\ x_j=(x_j^{(1)},x_j^{(2)},...,x_j^{(n)})^T xi=(xi(1),xi(2),...,xi(n))Txj=(xj(1),xj(2),...,xj(n))T
则二者的Lp距离表达式为,且p>=1
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p L_p(x_i,x_j)=(\sum_{l=1}^{n}|x_i^{(l)}-x_j^{(l)}|^p)^{\frac{1}{p}} Lp(xi,xj)=(l=1nxi(l)xj(l)p)p1
p=1时,称为曼哈顿距离( Manhattan distance),表达式为
L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ L_1(x_i,x_j)=\sum_{l=1}^{n}|x_i^{(l)}-x_j^{(l)}| L1(xi,xj)=l=1nxi(l)xj(l)
p=2时,称为欧氏距离(Euclidean distance),表达式为
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ 2 ) 1 2 L_p(x_i,x_j)=(\sum_{l=1}^{n}|x_i^{(l)}-x_j^{(l)}|^2)^{\frac{1}{2}} Lp(xi,xj)=(l=1nxi(l)xj(l)2)21
p=∞时,为各个坐标距离最大值,表达式为
L ∞ ( x i , x j ) = max ⁡ l ∣ x i ( l ) − x j ( l ) ∣ L_{\infin}(x_i,x_j)=\max_{l}|x_i^{(l)}-x_j^{(l)}| L(xi,xj)=lmaxxi(l)xj(l)
注:在不同距离度量下,各点的最近邻点是不同的,可通过以下例子说明

在这里插入图片描述

2)k值的选择

k 值的选择会对 k 近邻法的结果产生重大影响.
如果选择较小的 k 值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差( approximation error )会减小,只有与输入实例较近的(相似的)训练实例才会对预测结果起作用.但缺点是“学习”的估计误差( estimation error )会增大,预测结果会对近邻的实例点非常敏感 [2] .如果邻近的实例点恰巧是噪声,预测就会出错.换句话说, k 值的减小就意味着整体模型变得复杂,容易发生过
拟合.

如果选择较大的 k 值,就相当于用较大邻域中的训练实例进行预测.其优点是可以减少学习的估计误差.但缺点是学习的近似误差会增大.这时与输入实例较远的(不相似的)训练实例也会对预测起作用,使预测发生错误. k 值的增大就意味着整体的模型变得简单.

如果 k = N,那么无论输入实例是什么,都将简单地预测它属于在训练实例中最多的类.这时,模型过于简单,完全忽略训练实例中的大量有用信息,是不可取的.

在应用中, k 值一般取一个比较小的数值.通常采用交叉验证法来选取最优的 k 值.

3)分类策略

分类策略由很多,这里介绍一个较为常见的——多数表决

(1)输入输出映射关系:

如果分类的损失函数为 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 ≠ f ( X ) ) = 1 − P ( Y = f ( X ) ) P(Y \neq f(X)) = 1 -P(Y=f(X)) P(Y=f(X))=1P(Y=f(X))
(2)具体解释:


X = { x i ∣ i = 1 , 2 , . . . , N } , n = N k ( x ) X=\{x_i|i=1,2,...,N\},n=N_k(x) X={xii=1,2,...,N},n=Nk(x)

对给定的实例x属于集合X,其最近邻的k个训练实例点构成集合n,涵盖N的类别为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)
达到最大值。

因此多数表决规则等价于经验风险最小化

3.通过构造kd树实现k近邻法

i.kd树的构造

算法:

在这里插入图片描述

实现:

ii.通过kd树进行最近邻搜索

算法:

在这里插入图片描述

  • 27
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hunnybub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值