机器学习(二)KNN算法

  • K近邻(K-nearst neighbors,KNN)是一种基本的机器学习算法,每个样本都可以用它最接近的k个邻居来代表。
  • KNN在做回归分类的主要区别在于最后做预测的时候的决策方式不同。KNN分类预测时,一般采用**多数表决法**;而在做回归预测时,一般采用**平均值法**

KNN算法原理

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

KNN三要素

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

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

KNN算法实现方式

  • KNN算法的重点在于找出K个最近邻的点,主要方式有:
    • 蛮力实现(brute):计算预测样本导到所有训练集样本的距离,然后选择最小的K个距离即可得到K个最近邻点。缺点在于当特征数比较多、样本数比较多的时候,算法的执行效率比较低;
    • **KD树(kd_tree)**KD树算法中,首先是对训练数据进行建模,构建KD树,然后再根据建好的模型来过去临近样本数据。
  • 此外还有一些从KD_Tree修改后的求解最近邻点的算法,比如:Ball TreeBBF TreeMVP Tree等。

KD Tree

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

KD Tree构建方式

  • KD树采用从m个样本的n维特征中,分别计算n个特征取值的方差,用方差最大的第k维特征 n k n_k nk作为根节点。对于这个特征,选择取值的中位数 n k v n_{kv} nkv作为样本的划分点,对于小于该值的样本划分到左子树,对于大于等于该值的样本划分到右子树,对左右子树采用同样的方式找方差最大的特征作为根节点,递归即可产生KD树

    在这里插入图片描述

KNN在鸢尾花数据集上的Python实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值