统计学习第三章

文章介绍了K近邻法的基本概念,包括通过不同k值来决定实例的类别归属,以及当样本容量大或特征多时,如何使用kd树来优化搜索效率。kd树是一种数据结构,用于在高维空间中快速查找最近邻,通过特征的方差选择划分轴,并通过不断划分降低搜索复杂度。
摘要由CSDN通过智能技术生成

3.1K近邻法

一、直观理解

上图绿色的点是新的实例,
k=3,离绿色实心圆最近的3个实例 是 在实线圆圈中,该圈中,红色三角形占多,故认为绿色实心圆应属于红色三角形类别。

k=5 ,离绿色实心圆最近的5个实例 是 在虚线圆圈中,该圈中,蓝色正方形占多,故认为绿色实心圆应属于蓝色正方形类别。

二、算法

三、误差率(选学)

a为x的真实类别,b为xi的真实类别。

 

3.2K近邻法---三要素

一、模型

二、三要素

距离向量

 

 

K-值的选择

 

        分类决策规则 

3.3K近邻法---构造kd树

一般情况下的K近邻法,对于输入一个未知的点x,要预测x所属的类别,

可以计算出已知训练集中的所有点 与点x的距离,找出距离最近的k个,再按照决策规则,决定x的预测类别。

此时,若训练集的样本容量N过大的话,那么距离的计算量就会非常 大;
另外,若训练集中的实例点,它所包含的特征非常多(即几维的向量),那么,每次计算一个距离的计算量就非常大。

为解决该问题,实现一个快速搜索的方法,就有了kd树

一、什么kd树

 二维情况类似如上,每个结点对应一个矩形区域

上面是三维的情况。

二、构造kd树

对选选取哪一个特征作为坐标轴,其实是可以任意的,即任意一个特征都可作为坐标轴;
其实也可,计算每一个特征上的方差来进行选择,例如上图中,已有N个实例点,每个实例点都有k个特征,可以计算每一个特征上的N个值(对于某一个特征,N个实例就有N个对应位置的特征)得到的方差, 那么就能得到k个方差,选择其中最大的方差所对应的序号。

三、例题解说

训练集中有6个实例,对于每个实例中的第一个特征进行排序,如下,由于是偶数个,中位数其实选5或7都行,这里选择了7,而第一个特征为7的实例点是(7,2).

 如何以实例点(7,2)对整个区域切分:看上图,横轴对应第一个特征x^{(1)},,根据(7,2)实例点所在位置,垂直于特征x^{(1)}坐标轴的地方画垂线。(这样理解,这里把横轴x^{(1)}区域划分为两部分了,纵轴仍是一整块)。

 (7,2)将作为深度为0的根结点, 其左边的都是  特征x^{(1)} < 7 的,作为根的左孩子结点, 
右边都是 特征x^{(1)} > 7 的,作为根的右孩子结点。

对第一个特征划分完之后,可根据  第一个特征+1 = 2, 也就是选择第二个特征x^{(2)} 作为坐标轴,

进行再次划分。

划分完后,

再再次划分:

刚以第二个特征进行划分, 那么 2 + 1 > 实际维数2,故要轮第二遍了,

即再回到第一个特征,以第一个特征为坐标轴 进行划分。

 

3.4搜索kd树

 一、最近邻搜索

“当前最近点”相当于之前算法讲到 的初始值,
寻找“当前最近点”:从树根不停寻找下一级的叶子结点,最后找到 离 我们的 目标点 最近的一个叶子节点 作为 “当前最近点” 。

(寻找是 从 根 --》到 叶子,寻找到 当前最近点, 接着便能由 当前最近点 进行回溯)

(回溯:从当前最近节点出发, 一直到 父辈、祖辈、甚至根节点)

回溯过程中,若发现:某个子节点与目标点 之间的距离  比  “当前最近点”与目标点的距离  更小,则更新“当前最近点” 为 该子节点。  不停得进行更新,直到回到树的根部, 就完成了整个迭代过程。

这时,所确定的“当前最近点” 就是 选择的目标点 的最近邻点了。

二、例题解说

首先,根节点(7,2),目标点(2.1,3.1) ,目标点的2.1<7, 所有目标点在根节点的 左子树,

往根的左子区域找, 左子区域的根是(5,4),以(5,4)进行一个再划分,而目标点(2.1,3.1)中

3.1 < 4, 所以就继续往(5,4)的左子区域继续找。

该左子区域的根是(2,3),已经不能继续往下了,

故将“当前最近点”设为(2,3),           寻找过程结束, 接着进行 回溯。

以目标点x=(2.1,3.1)为圆心,"当前最近点"=(2,3)  与目标点x 之间的距离 为半径,画一个圆,

(二维的是圆,三维是球,更高的是....),

回溯过程就是 从“当前最近点”回到父辈、祖辈、一直到根,看 这个过程中,是否有比 "当前最近点" 离目标点x 更近的点。

看绘制的圆, 与“当前最近点”的父节点(5,4)划分的超平面 是没有交集的, 说明, 不可能在(5,4)的右子区域 找到 更近的点了,  

从父辈 可以 回到 根(7,2), (7,2)用来划分 整个区域的超平面,也和这个圆没有交集,所以不会有最近点出现在由 根节点 确定的右子区域里,

完成整个过程后,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值