机器学习之KNN算法实现原理及Kd-tree的构建

K近邻(K-nearest neighbors,KNN)是一种基本的机器学习算法,所谓K近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻居来代表。KNN在做回归和分类额主要区别在于最后做预测的时候的决策方式不同,KNN在分类预测时,一般采用多数表决法;而在做回归预测时,一般采用平均值法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先输入样本进行分类,然后输入需要判断的物体根据KNN原则将其归类
KNN三要素
K值的选择对于K值的选择,一般根据样本分布选择一个较小的值,然后通过交叉验证来选择一个比较合适的最终值;当选择比较小的K值的时候,表示使用较小邻域中的样本进行预测,训练误差会减小,但是会导致模型变得复杂,容易过拟合;当选择较大的K值的时候,表示使用较大邻域中的样本进行预测,训练误差会增大,同时会使模型变得简单,容易导致欠拟合;
距离的度量一般使用欧式距离(欧几里得距离);
决策规划在分类模型中,主要使用多数表决法或者加权多数表决法;在回归模型中,主要使用平均值法或者加权平均值法。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述KD tree是KNN算法中用于计算最近邻的快速,便捷构建方式。当样本数量少的时候,我们可以使用brute这种暴力的方式进行求解最近邻,即计算到所有样本的距离。担当样本量比较大的时候u,直接计算所有样本的距离,工作量有点大,所以在这种情况下,我们可以使用kd-tree来快速计算。在这里插入图片描述例如:样本中x2维度是方差最大的,那么计算m个样本中所有的x2的值,取中位数,小于该中位数的划分到左边,大于该中位数的划分到右边,分完后再分别取左子树和右子树中寻找方差最大的维度,依次递归直到树节点里只有一个样本。
方差最大的维度,证明波动的范围最大,即左右子树的样本的差异性最大。如果数量是偶数个,则选取中间两个数中较大的作为中位数进行划分。在这里插入图片描述
划分流程如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值