k 近邻法

k 近邻法

k近邻算法

k近邻算法:对于新的输入实例,在训练数据集中寻找最接近的k个实例,这k个实例的多数属于某个类,则将输入实例分到某个类中。

k近邻法没有显式的学习过程

k近邻模型

k近邻法中,当训练集,距离度量,k值以及分类决策规则确定后,对于每个新的输入实例,其所属实例唯一确定

距离度量

我们可以选用Lp距离,其定义如下:
L P ( x i , x j ) = ( Σ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p L_P(x_i,x_j)=(\Sigma_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^p)^{\frac{1}p} LP(xi,xj)=(Σl=1nxi(l)xj(l)p)p1
p=1,为曼哈顿距离;p=2,为欧氏距离;p=∞,为各个坐标距离的最大值。

k值的选择

k值的选择对k近邻法的结果会产生很大影响,k值较小会使模型变得复杂,容易过拟合;较大会使模型变得简单,容易欠拟合;我们一般选择较小的k值,使用交叉验证的方法来选取最优的k值

分类决策规则

分类决策规则:多数表决规则

对于给定的实例x,其最近邻的k个训练实例点构成集合N_k(x)。如果涵盖N_k(x)的区域类别是c_j,那么误分类率是
1 k Σ x i ∈ N k ( x ) I ( y i ≠ c j ) = 1 − 1 k Σ x i ∈ N k ( x ) I ( y i = c j ) \frac{1}{k}\Sigma_{x_i\in N_k(x)}I(y_i\ne c_j) = 1-\frac{1}k \Sigma_{x_i\in N_k(x)}I(y_i= c_j) k1ΣxiNk(x)I(yi=cj)=1k1ΣxiNk(x)I(yi=cj)
要使误分类率最小即经验风险最小,只需使
Σ x i ∈ N k ( x ) I ( y i = c j ) \Sigma_{x_i\in N_k(x)}I(y_i= c_j) ΣxiNk(x)I(yi=cj)
最大,因此多数表决规则等价于经验风险最小化

k近邻算法的实现:kd树

k近邻法最简单的实现方法使线性扫描,但这样时间复杂度为线性,使用树结构可以将时间复杂度降低至O(log n)

kd树的构造

构造kd树的算法:
在这里插入图片描述

kd树的搜索

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值