机器学习K-近邻算法


1 什么是K-近邻算法

img

  • 根据你的“邻居”来推断出你的类别

2 K-近邻算法(KNN)概念

K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法

  • 定义

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

来源:KNN算法最早是由Cover和Hart提出的一种分类算法

  • 距离公式

两个样本的距离可以通过如下公式计算,又叫欧式距离 ,关于距离公式会在后面进行讨论

img

img

3 电影类型分析

假设我们现在有几部电影

image-20190316204421392

其中? 9号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想

image-20190316204448303

分别计算每个电影和被预测电影的距离,然后求解

image-20190316204517137

4 KNN算法流程总结

1)计算已知类别数据集中的点与当前点之间的距离

2)按距离递增次序排序

3)选取与当前点距离最小的k个点

4)统计前k个点所在的类别出现的频率

5)返回前k个点出现频率最高的类别作为当前点的预测分类

5 K值选择说明

  • 举例说明:

img

  • K值过小

    • 容易受到异常点的影响
  • k值过大:

    • 受到样本均衡的问题

K值选择问题,李航博士的一书「统计学习方法」上所说:

    1. 选择较小的K值,就相当于用较小的领域中的训练实例进行预测,
    • “学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,
    • 换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;
    1. 选择较大的K值,就相当于用较大领域中的训练实例进行预测,
    • 其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误。
    • 且K值的增大就意味着整体的模型变得简单。
    1. K=N(N为训练样本个数),则完全不足取,
    • 因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的类,模型过于简单,忽略了训练实例中大量有用信息。
  • 实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是把训练数据在分成两组:训练集和验证集)来选择最优的K值。

  • 近似误差

    • 对现有训练集的训练误差,关注训练集
    • 如果近似误差过小可能会出现过拟合的现象,对现有的训练集能有很好的预测,但是对未知的测试样本将会出现较大偏差的预测。
    • 模型本身不是最接近最佳模型。
  • 估计误差

    • 可以理解为对测试集的测试误差,关注测试集,
    • 估计误差小说明对未知数据的预测能力好,
    • 模型本身最接近最佳模型。

5.1 小结

  • KNN中K值大小选择对模型的影响【知道】

    • K值过小

      • 容易受到异常点的影响
      • 容易过拟合
    • k值过大:

      • 受到样本均衡的问题
      • 容易欠拟合
  • 近似误差、估计误差基本概念介绍【了解】

    • 近似误差
      • 对现有训练集的训练误差,关注训练集
    • 估计误差
      • 可以理解为对测试集的测试误差,关注测试集
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值