KNN知识点梳理

KNN算法适用于分类和回归,通过选取最近的k个邻居来预测。暴力算法简单但计算量大;KD树通过递归构建减少搜索复杂度;球树进一步优化,用圆形代替矩形降低计算量。k值、距离度量和决策规则是KNN关键要素。

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

KNN(K-nearest neighbors) 既可用于分类,也可用于回归。

  • 分类预测时,多数表决法,取决于与预测的样本距离最近的k个样本的特征,少数服从多数。
  • 回归时,平均法,将与预测样本距离最近的k个样本的特征进行平均。

KNN算法三要素

k值的选取、距离度量方式和分类决策规则

算法一:暴力算法

计算所有样本与预测样本之间的距离,选取其中距离最小的k个,用于分类或回归。

算法二:KD树

一、生成kd树

所有m个样本一共有n个特征值,针对每个特征计算m个样本的方差,选取方差最大的特征,将此特征中处于中位数位置的样本放入根节点,该特征小于中位数的是左子树,大于中位数的是右子树,然后针对左子树和右子树,继续上述过程,最后生成递归的kd树。

二、搜索最近邻

对于一个目标点,从根节点开始在KD树里面找到包含目标点的叶子节点。以目标点为圆心,以目标点到叶子节点样本实例的距离为半径,得到一个超球体,最近邻的点一定在这个超球体内部。然后返回叶子节点的父节点,检查目标点到该父节点的距离是否缩短,若是,则以这个距离为半径更新原有半径,否则,不予变动。再检查这个父节点的另一个子节点包含的超矩形体是否和超球体相交,如果相交就到这个子节点寻找是否有更加近的近邻,若有就更新最近邻。如果不相交就直接返回父节点的父节点,看这个父节点的另一个子树是否与原超球体相交,若相交,检查是否存在更近的近邻。当回溯到根节点时,算法结束,此时保存的最近邻节点就是最终的最近邻。

三、kd树预测

以上是第一个最近点的产生过程,把已找到的最近点在样本中删掉,再在现有的样本中找最近点,一直到找到k个点。

 

但同时要考虑到这个算法的缺点,因为只要超球体与某一块矩形有相交,就需要检查这个矩形是否存在最近点,而有时可能只是矩形的一小块角与相交,存在最近点的可能性很小,但是也要检查一遍,无疑增大了运算量。

算法三:球树

和kd树类似,只是将矩形改成圆形。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值