基于KD树的K近邻算法(KNN)算法

KNN算法是一种基于实例的学习,通过找到训练集中与新样本最接近的k个邻居来预测其类别。本文介绍了KNN的三要素:距离度量(如欧式距离)、k值选择及其影响、分类决策规则。KNN实现中通常面临计算复杂度高的问题,而kd树作为一种数据结构,能有效加速最近邻搜索,降低时间复杂度至O(logN)。文章详细讲解了kd树的构建、搜索最近邻和预测过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


K近邻算法(KNN)算法,是一种基本的分类与回归算法,本文只讨论解决分类问题的KNN算法。

KNN 简介

思想:给定一个训练数据集,对于新输入的样本,在训练集中找到与该样本最邻近的k个已知样本,这k个已知样本的多数属于某个类别,那么新输入的样本就属于这个类别。

如下图所示,假定使用欧氏距离作为度量方式,采样投票法决定类别,并且?表示待预测的样本,当k取1时,则变成了最近邻算法,对应的类别为★;当k取7时,类别为▲;可见k的取值对分类效果有比较大的影响。在实际应用中,k的取值一般不超过20。

在这里插入图片描述

该算法的优点是:

  1. 精度高
  2. 对异常值不敏感
  3. 无数据输入假定

缺点是:

  1. 计算复杂度高
  2. 空间复杂度高

KNN 三要素

KNN算法不具有显式的训练过程。距离度量(如欧氏距离)、k值以及分类决策规则(如投票表决)是KNN算法的三要素。在给定训练集合于三要素后,对于任何新输入的样本,它所属的类别是唯一确定的。下面对这三个要素展开讨论。

距离度量

在n维的特征空间中,距离反映的是两个点的相似程度。KNN 算法常用的距离度量为欧式距离,但也可以采用其他距离,比如更一般的 L p L_{p} Lp距离,其中p为正整数:
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p L_p(x_i, x_j)=\left(\sum_{l=1}^{n}{\left|x_{i}^{(l)}-x_{j}^{(l)}\right|^p}\right)^{\frac{1}{p}} Lp(xi,xj)=(l=1nxi(l)xj(l)p)p1
当p=1时,即为曼哈顿距离,也叫出租车距离,用以标明两个点在标准坐标系上的绝对轴距总和,如下图中的红色线条所示,蓝色和黄色为等价曼哈顿距离。

img

当p=2时,即为常见的欧氏距离,也就是直线距离,如上图的绿色线条所示。

不同距离度量确定的最近点是不同的,例如对于:
x 1 = ( 1 , 1 ) , x 2 = ( 5 , 1 ) , x 3 = ( 4 , 4 ) x_1=(1, 1), x_2 = (5,1), x_3 = (4,4) x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值