3、K近邻法

(1)思想

假定给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测。三个基本要素是:k值的选择、距离度量和分类决策规则。

(2)k值的选择

在模型中,k值较小容易造成模型复杂,发生过拟合,而较大意味着欠拟合,通常采用交叉验证法来选取最优的k值。在分类决策时,采用多数表决规则,等价于经验风险最小化。

(3)构造kd树
kd树是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构,k指的是特征向量的维数,主要用于范围搜索和最近邻搜索。kd树是二叉树,表示对k维空间的一个划分。构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分,构成一系列的k维超矩形区域。kd树的结构可使得每次在局部空间中搜索目标数据,减少了不必要的数据搜索,从而加快了搜索速度。

注意:

1、选择切分轴的方法有多种,如随着树的深度轮流选择各轴、每次选择数值方差最大的轴等

2、选择切分点一般采用中位数,可以保证切分后得到的左右子树深度不超过1,所得二叉树为平衡二叉树。

(4)搜索kd树

如果实例点是随机分布的,kd树搜索的平均计算复杂度是O(logN),N表示训练实例数。kd树更适用于训练实例数远大于空间维数时的k近邻搜索。当空间维数接近实例数时,它的效率会迅速下降,几乎接近线性扫描。

(5)k近邻搜索

最近邻的搜索算法是首先找到叶节点,再依次向上回退,直至到达根节点。本文章中的k近邻的搜索算法与其相反,是从根节点开始依次向下查找,直至到达叶节点。算法实现如下:

1、首先构建空的最大堆(列表),从根节点出发,计算当前节点与输入实例的距离,若最大堆元素小于k个,则将距离插入最大堆中,否则比较该距离是否小于堆顶距离值,若小于,则使用该距离替换堆顶元素;
2、递归的遍历kd树中的节点,通过如下方式控制进入分支:
     a、若堆中元素小于k个或该节点中的样本点与输入实例形成的超球体包含堆顶样本点,则进入左右子节点搜索;
     b、否则,若输入实例当前维的坐标小于该节点当前维的坐标,则进入左子节点搜索;
     c、否则,进入右子节点搜索;
3、当到达叶节点时,搜索结束。最后最大堆中的k个节点,即为输入实例的k近邻点。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值