统计学习笔记-第三章 k邻近法

第三章 k近邻法


k近邻法(k-nearnest neighbor, K-NN)是一种基本分类与回归方法.

  • 对于输入的实例,k近邻法通过多数表决等方式进行预测,故其不具有显式的学习过程;
  • 三个基本要素是:K值的选择、距离度量及分类决策准则.

3.1 k近邻算法

算法 3.1(k近邻法)
输入: 训练数据集
T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} T=(x1,y1),(x2,y2),...,(xN,yN)
其中, x i ∈ X ⊆ R n x_i \in X \subseteq \mathbb{R}^n xiXRn 为实例的特征向量, y i ∈ Y = c 1 , c 2 , . . . , c k y_i \in Y = {c_1,c_2,...,c_k} yiY=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个点,涵盖这个点的 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 max ⁡ c j ∑ x i ∈ N k ( x ) I ( y i = c j ) , i = 1 , 2 , . . . , N ; j = 1 , 2 , . . . , K y=arg \max \limits_{c_j} \sum \limits_{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 I I为指示函数,即当 y i = c j y_i=c_j yi=cj I = 1 I=1 I=1,否则 I = 0 I=0 I=0.

3.2 k近邻模型

k近邻法使用的模型实际上对应于特征空间的划分

3.2.1 模型

  • k近邻法中,当其三要素基本确定后,对于一个新的输入实例,它所属的类唯一地确定.

  • k近邻法分类类似于将特征空间划分为一些子空间,确定子空间的每个点所属的类

在这里插入图片描述

3.2.2 距离度量

特征空间中两个实例点的距离是两个实例点相似程度的反映.距离计算有以下几种方法:

  • 欧氏距离
  • L p L_p Lp距离( L p L_p Lp distance)
  • Minkowski距离(Minkowski distance)

L p L_p Lp距离

L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p , ( p ≥ 1 ) L_p(x_i,x_j)=(\sum \limits_{l=1}^n |x_i^{(l)}-x_j^{(l)}|^p)^{\frac{1}{p}},(p \geq 1) Lp(xi,xj)=(l=1nxi(l)xj(l)p)p1,(p1)

  • p = 2 p=2 p=2时,称为欧氏距离(Euclidean distance)
  • p = 1 p=1 p=1时,称为曼哈顿距离(Manhattan distance)
  • p = ∞ p=\infty p=时,它是各个坐标距离的最大值

3.2.3 K值的选择

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

  • k值较小,相当于选择较小的邻域中的训练实例进行预测,学习的近似误差(approximation error)会减小,但是估计误差(estimation error)会增大.即k值的减小就意味着整体模型变的复杂,容易发生过拟合;
  • k值较大,相当于用较大的训练实例进行预测,可以减少学习的估计误差,但是近似误差会增大.即k值的增大意味着整体的模型变的简单.

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

3.2.4 分类决策规则

一般是多数表决,即由输入实例的k个邻近的训练实例中的多数类决定输入实例的类.
在这里插入图片描述

3.3 k近邻法的实现:kd树

实现k近邻法时,主要考虑的问题是如何对训练数据进行快速k近邻搜索

  • 简单地实现方法是线性扫描(linear scan),计算输入实例与每一个训练实例的距离. 在训练集很大时,计算十分耗时
  • k d kd kd 树( k d kd kd tree)方法

3.3.1 构造 k d kd kd

k d kd kd 树是一种对 k k k维空间中的空间进行存储以便对其进行快速检索的树形数据结构,是一种二叉树

构造 k d kd kd 树的算法如下所示:

算法3.2 (构造平衡 k d kd kd树)
输入: k k k 维空间数据集 T = x 1 , x 2 , . . . , x N T={x_1,x_2,...,x_N} T=x1,x2,...,xN, 其中 x 1 = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( k ) ) , i = 1 , 2 , . . . , N x_1=(x_i^{(1)},x_i^{(2)},...,x_i^{(k)}), i=1,2,...,N x1=(xi(1),xi(2),...,xi(k)),i=1,2,...,N
输出: k d kd kd
(1) 开始:构造根节点,根节点对应于包含 T T T k k k 维空间的矩形区域.
选择 x ( i ) x^{(i)} x(i) 为坐标轴,以 T T T 中所有实例的 x ( i ) x^{(i)} x(i) 坐标的中位数为切分点,将根节点对应的超矩形区域切分为两个子区域.切分由通过切分点并与坐标轴 x ( i ) x^{(i)} x(i) 垂直的超平面实现.
由根节点生成深度为1的左、右子节点;左子节点对应坐标 x ( l ) x^{(l)} x(l) 小于切分点的子区域,右子节点对应与坐标 x ( i ) x^{(i)} x(i) 大于切分点的值区域.
将落在切分超平面上的实例点保存在根节点.

(2) 重复:对深度为 j j j的结点,选择 x ( i ) x^{(i)} x(i) 为切分的坐标轴, l = j ( m o d k ) + 1 l=j(mod k)+1 l=j(modk)+1,以该结点的区域中所有实例的 x ( i ) x^{(i)} x(i) 坐标的中位数为切分点,将该结点对应的超矩形区域切分为两个子区域.切分由通过切分点并与坐标轴 x ( i ) x^{(i)} x(i) 垂直的超平面实现.
由该结点生成深度为 j + 1 j+1 j+1的左、右子结点,左子结点对应于坐标 x ( i ) x^{(i)} x(i)小于切分点的子区域,右子结点对应坐标 x ( i ) x^{(i)} x(i)大于切分点的子区域.
将落在切分超平面上的实例点保存在该结点.
(3) 直到两个子区域没有实例存在时停止,从而形成 k d kd kd树的区域划分.

3.3.2 搜索 k d kd kd

使用 k d kd kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量.

在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值