统计学习方法——第3章

第3章 k近邻法

简介

k近邻法(k-nea。rest neighbor,k-NN)是一种基于分类与回归方法。

分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方法进行预测。

因此,k近邻法不具有显示的学习过程。k近邻法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。

k近邻法有三个基本的要素:k值的选择、距离度量及分类决策规则

k近邻法的一个实现方法——kd树;

一、k近邻算法

1、k近邻算法:

给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类;

2、算法1:k近邻算法——没有显示的学习过程,即没有显示的梯度更新过程。

距离度量和分类决策是关键;

 

二、k近邻模型

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

1、模型:

确定k近邻模型就是确定距离度量、k值的选择和分类决策规则三个要素,这三个要素确定了,对于任何一个新的输入实例,它所属的类别就唯一的确定了。

单元:特征空间中,对于每个训练实例点x,距离该点比其他点更近的所有点组成一个区域,叫作单元。

【可以这样理解,k近邻模型将所有的实例划分成了一个个的单元,每个单元内的实例是属于同一个类别的,当输入一个新的实例时,判断其属于哪个单元里面,然后就可以知道其所属的类别了。】

下面是对二维特征空间的划分:

2、距离度量:

我们在划分单元的时候是根据距离来划分的,特征空间中,两个点的距离越小就说明了两个点越相似。

k近邻模型可以使用欧式距离、Lp距离、Minkowski距离等。

【注:由不同的距离度量所确定的最近邻点是不同的】

 

3、k值的选择:

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

k值的减小就意味着整体模型变得复杂,容易发生过拟合;

k值的增大意味着整体的模型变得简答;

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

 

4、分类决策规则

有了距离的度量和k值的选择之后,就剩下分类决策规则了。如何由这k个实例的分类确定输入类别的实例,这就是分类决策规则要做的事。

上面说了,每个单元里面的实例是属于一个类别,与输入的实例最近邻的k个实例不一定全部都在一个单元里面,所以这就需要分类决策规则来确定输入实例的所属类别。

k近邻法中分类决策规则往往是多数表决,多数标准规则等价于经验风险最小化。

 

三、k近邻法的实现:kd树

实现k近邻法时,主要考虑的问题是如何对训练数据集进行快速k近邻搜索,这点在特征空间维度大及训练数据容量大时尤其必要。

k近邻法最简单的实现方法是线性扫描,这时要计算输入实例与每一个训练实例的距离。当训练集很大时,非常耗时。

另一种思路是使用特殊的结构来存储训练数据,以减少计算距离的次数。常见的是kd数方法。

1、构造kd树:【递归的思想】

kd树是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形结构。kd树是二叉树,表示对k未空间的一个划分。

下面是用递归的思想构造kd树:

算法2:

【按照我的理解就是:从第一个特征开始对k维的实例进行划分,从1开始一直到k,进行递归。如果,1~k之后还是没有进行跳出递归条件,那就再从1~k开始进行递归,知道两个子区域没有存在时停止,从而形成kd树】

2、搜索kd树:

在构造了用于存储kd树的数据结构之后,接着要考虑的就是如何去索引结点了。

下面是kd图的实例:

算法3:用kd树的最近邻搜索

下面是一个例子:

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值