k近邻法matlab_机器学习03——K近邻算法(KNN)

  • 一、距离度量
    • (一)闵可夫斯基距离
      • 1. 曼哈顿距离:假设A(0,0) B(2,4)

ff96ed4d50fe44e6dbda41e4232a18e0.png
        • 曼哈顿距离 = |2 - 0| + |4 - 0|=6
      • 2. 欧氏距离:

e627d4e2c3b2f1e6653bf3ffcbb5586c.png
        • 欧氏距离=根号 (2-0)^2+(4-0)^2 = 2*根号5
      • 3. 切比雪夫距离:

f4098203f21c7a783e039bc8f8765fdf.png
        • 取坐标差的最大值— |4-0| = 4
      • 4. 带权平均值

fc52894892105b80970a76563374edf5.png
  • 二、KNN算法:
    • (一)定义:
      • KNN算法又称K近邻算法,是一种有监督学习算法。可以用来处理分类和回归问题。
    • (二)KNN算法的3个基本要素:
      • 1. 距离度量,K值选择,决策机制
        • 距离一般采用欧式距离
        • K值选择直接影响计算结果:
          • 过大的K值可能会把对预测结果没有影响的样本点纳入考虑范围,导致分类出错。
          • K值过小会让模型敏感,比如选择的最近几个样本点恰好是噪声点,预测就会出错。
          • K值选择一般选一个较小的奇数3或者5,取奇数是为了避免平局,尽可能小的取值是为了避免取到噪音值。然后需要采取验证方法来选择最优的K值——网格搜索交叉验证。
        • 决策机制:分类问题采取投票机制;回归问题使用求均值。
      • 2. 算法理解:假设有一个样本点A,A点周围有k个距离它最近的邻居样本点,A点的所属类别很大概率就是它的邻居样本点所属的类别。
      • 3. 分类问题:这个分类过程是通过距离度量和投票机制来实现的。
        • 距离度量:可以采取闵氏距离的3种,常用欧氏距离。
        • 投票机制:假设k值取5,即A点周围有5个样本点距离它最近,其中4个属于M类,1个属于N类,投票机制决定A点属于M类。
      • 4. 回归问题:
        • 回归问题采取取平均值或带权平均值。
        • 权重值=1/距离(越靠近样本点的邻居权重就大)
      • 5. 标准化思考:
        • 对于依赖权重的算法,比如线性回归和逻辑回归算法,权重的取值对于模型效果影响极大。如果不对样本数据进行标准化处理,会造成权重值差异增大。
        • 因此需要进行标准化或归一化,避免权重差异带来较大的误差。
  • 三、代码底层实现
    • (一)计算原理
      • 1. 计算测试数据与训练数据之间的距离
      • 2. 对于测试出来的距离进行从小到大的排序
      • 3. 选取距离最小的K个值
      • 4. 确定前K个点所在类别的出现频
      • 5. 根据频率判断测试数据所属的类别
      • 缺点:每有一个测试数据都需要计算与训练数据之间的距离,当数据量大的时候,计算量也很大。
    • (二)优化算法
      • 1. 实现方法:
        • 蛮力法、球树法(没讲)
        • KD树法:
          • 二叉树概念:中位数排布,左子树放较小数值,右子树放较大数值。
          • 为了提高k近邻搜索效率,考虑使用特殊的结构存储训练数据,以减少计算距离的次数,可以使用kd树 (kd tree)方法。
          • kd树分为两个过程:
          • 构造kd树(使用特殊结构存储训练集)
          • 搜索kd树(减少搜索 计算量)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值