k近邻(笔记提纲)

0 综述

k近邻法: 基本的分类与回归方法

  • 输入:实例的特征向量
  • 输出:实例的类别

不具有显式的学习过程
使用训练数据集对特征向量空间进行划分
三个基本要素

  • k值选择
  • 距离度量
  • 分类决策规则

1 算法

给定一个训练集,对于新的输入,在训练集中找到与该输入最邻近的k个实例,这k个实例的多数属于哪个类,就将输入实例划分到这个类。

特殊情况: k = 1时,称为最近邻算法,将训练集中与输入最邻近点的类作为输入的类

2 模型

2.1 模型

当训练集、距离度量、k、分类决策规则确定之后,对于一个新的输入,所属的类别唯一确定
在特征空间中,对每个点,距离此点比其他点更近的所有点组成一个区域,叫做单元
所有点的单元构成了对特征空间的划分

2.2 距离度量

设特征空间 X 是n维实数向量空间 Rn
xi,xj 是特征空间 X 中的元素, xi=(x(1)i,x(2)i,...,x(n)i)T
xi,xj 之间的 Lp 距离定义为(p >= 1)

Lp(xi,xj)=(i=0n|xlixlj|p)1p

  • 欧式距离 p = 2

    L2(xi,xj)=(i=0n|xlixlj|2)12

  • 曼哈顿距离 p = 1

    L1(xi,xj)=(i=0n|xlixlj|1)

  • p趋于无穷时

    Lp(xi,xj)=maxl|xlixlj|p

2.3 k值选择

  • k减小 – 模型复杂 – 容易过拟合
  • k增大 – 模型简单
  • k = N 模型过于简单-忽略大量有用信息
  • k一般选择较小的数值–通常采用交叉验证选择最优k值

2.4 分类决策规则

经验风险最小化
分类函数

f:Rn{c1,c2,,cn}

损失函数为0-1损失函数, 误分类概率
P(Yf(X))=1P(Y=f(X))

对于给定的输入 xX , 最近邻的k个训练实例点集合 Nk(x) ,涵盖的区域类别 cj
误分类可能的情形
xiNk(x)I(yicj)=kxiNk(x)I(yi=cj)

误分类率
1kxiNk(x)I(yicj)=11kxiNk(x)I(yi=cj)

最小化误分类率,即最大化
xiNk(x)I(yi=cj)

所以是经验风险最小化

3 kd树

实现KNN,主要考虑–快速搜索问题–训练集大时必要
简单方法–线性扫描 缺点:训练集很大时,计算耗时,方法不可行

3.1 构造

构造方法:
1. 构造根节点,对应k维特征空间包含所有特征点的矩形区域
2. 在超矩形区域(节点)选择一个坐标轴和此坐标轴上的切分点,确定一个超平面,超平面通过选定的切分点并垂直于选定的坐标轴,将当前超矩形区域切分成左右两个子区域(子节点)
3. 对子区域递归步骤2,直到子区域中没有点时算法终止

对于kd树
输入 k 维空间数据集 T={x1,x2,...,xi}
xi=(x(1)i,x(2)i,...,x(n)i)T
1. 根节点– x(1) 为坐标轴,T所有节点的 x(1) 的中位数作为切分点
2. 递归时– l=j(modk)+1 x(l) 为坐标轴,T所有节点的 x(l) 的中位数作为切分点

3.2 搜索

输入:kd树,目标点x
输出:x的最近邻
1. 根节点出发,递归向下访问(DFS)kd树,直到kd树的叶节点
2. 将叶节点作为当前最近点
3. 递归回退同时,在每个节点
若该节点比当前最近点距x更近,更新当前最近点
检查另一子节点的矩形区域是否与目标点为球心,当前最小距离为半径的球体相交
若相交,搜索另一子节点中更近的节点,更新当前最近点,并移动至该节点,递归搜索
若不相交,回退
4. 回退到根节点,搜索结束,返回当前最近点

3.3 总结

  • kd树搜索平均复杂度 O(logN)
  • 适用–训练样本数远大于空间维数
  • 训练样本数接近空间维数时,效率接近线性扫描
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值