KNN

KNN是一种基本的机器学习算法,用于分类和回归。它基于样本的K个最近邻进行预测,分类时通常采用多数表决,回归时则使用平均值。K值的选择、距离度量和决策规则是KNN的重要因素。KNN实现方式包括蛮力和KD树,后者能提高效率。

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

K近邻 K-nearst neighbors KNN
KNN是一种基本的机器学习算法,所谓K近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻居来代表

KNN在做回归和分类的主要区别在于最后做预测的时候的决策方式不同
KNN在分类预测时,一般采用多数表决法
KNN在回归预测时,一般采用平均值法

KNN算法原理

  1. 从训练集合中获取K个离待预测样本距离最近的样本数据
  2. 根据获取得到的K个样本数据来预测当前待测样本的目标属性值

在KNN算法中,非常重要的主要是三个因素:

  • K值选择,对于K值得选择,一般根据样本分布选择一个较小得值,然后通过交叉验证来选择一个比较合适得最终值。当选择比较小的K值的时候,表示使用较小领域中的样本进行预测,训练误差会减少,但是会导致模型变得复杂,容易过拟合;当选择较大的K值得时候,表示使用较大领域中得样本进行预测,训练误差会增大,同时会使模型变得简单,容易导致欠拟合。
  • 距离的度量,一般使用欧氏距离(欧几里得距离)
  • 决策规则,在分类模型中,主要使用多数表决法或者加权多数表决法;在回归模型中,主要使用平均值法或者加权平均值法

KNN分类预测规则
在KNN分类应用中,一般采用多数表决法或者加权多数表决法
多数表决法:每个邻近样本的权重是一样的,也就是说最终预测的结果为出现类别最多的那个类
加权多数表决法:每个邻近样本的权重是不一样的,一般情况下采用权重和距离成反比的方式来计算

KNN回归预测规则
在KNN回归应用中,一般采用平均值法或者加权平均值法
平均值法:每个邻近样本的权重是一样的,也就是说最终预测的结果为所有邻近样本的目标属性值的均值
加权平均值法:每个邻近样本的权重是不一样的,一般情况下采用权重和距离成反比的方式来计算

KNN算法实现方式
KNN算法的重点在于找出K个最邻近的点,主要的方式有以下几种:
蛮力实现:计算预测样本到所有训练集样本的距离,然后选择最小的K个距离即可得到K个最邻近点。缺点在于当特征数比较多、样本数比较多的时候,算法的执行效率比较低
KD树 KD_TREE:在KD算法中,首先对训练数据进行建模,构建KD树,然后再根据
建好的模型来获取邻近样本数据

KD Tree是KNN算法中用于计算最近邻的快速、便捷构建方式
当样本数据量少的时候,可以使用brute这种暴力方式进行求解最近邻。但是当样本数据量较大的时候,直接计算所有样本的距离,工作量有点大,所以在这种情况下,可以使用KD树来快速的计算

KD树是二叉树

KD Tree构建步骤

  1. 采用m个样本中的n个属性进行划分
  2. 分布计算n个属性特征的方差,进行从大到小排序
  3. 选取方差最大的属性作为划分,选取样本的中位数点nkv,以此样本作点作为根节点,讲该属性特征小于nvk的样本放在左子树上,大于的放在右子树上
  4. 根据方差的第二大属性进行左右子树划分,同上述过程
  5. 循环迭代,数据集划分完毕

从根节点出发,依照方差排列的属性顺序递归的向下访问KD树,若当前维的坐标小于切分点的坐标移动到左子节点,否则移动到右子节点,直到子节点为叶节点为止。以此叶节点为当前最近点,记录搜索路径中的切分点x

计算待测点到每个x的距离R
以待测点为圆心,最小的距离R为半径画圆
将园内包含的点增加到搜索路径中,直到没有实点为止

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值