机器学习之K近邻简介

描述

KNN是常见的监督学习算法,输入是实例的特征向量,输出是实例对应的类别。
给定测试样本,基于某种距离计算方法,计算出与其距离最近的K个训练样本,根据多数表决方法判定属于哪个类别。

典型的懒惰学习算法,不具有显示的学习过程。在接受数据时,不做处理,当真正计算的时候才按照算法流程走。
三大要素:

  • K值的选择
    • 较小的K,会导致过拟合
    • 较大的K,会导致欠拟合
  • 距离的度量。
    不同的距离度量算法所确定的点的距离是不同的。
    • Lp距离
    • Min距离
  • 分类决策规则

算法构造

  • 根据已知的实例作为参考
  • 选择K(一般选择奇数,并且需要多次试验来确定)
  • 计算所有样本与输入样本之间的关系(计算方法有许多种)
  • 将距离排序,并选择最仅的K个实例
  • 在K个样本中,根据多数表决(加权平均)原则把输入实例归结为该类

kd树的构造。
由于KNN可能的数据量比较大,导致时间复杂度非常大,为了提升效率,引出了kd树数据结构(kd Tree)。
平衡kd树未必是效率最高的。

评价

  • 精度高,异常值不敏感
  • 计算复杂度高。当某类数据占据较多的时候,容易把实例归纳为该类,产生误差
  • 适用于标称型和数值型

优化

加权KNN
不是对元素简单的求平均,而是求他的加权平均
每一项的值*他的权重。

进阶

降维
距离计算的各种算法(欧氏距离,曼哈顿距离等)
KDTree
ballTree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值