机器学习常识 6: kNN

这篇具有很好参考价值的文章主要介绍了机器学习常识 6: kNN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要: 具有讽刺意味的是: 机器学习最基本的算法居然是不学习, 也称为惰性学习 (lazy learning). k k kNN (k nearest neighbors) 通过计算样本间的距离 (相似度) 来确定待预测样本应与哪些训练样本的标签保持一致.

1. 基本思想

为了应对一场考试, 我们可以不学习, 而在考场上去翻书. 是的, 在解决实际问题时, 完全可以是开卷考试.
继续使用前面提到的例子. 上午来了 60 个就诊者, 根据他们的各项检测指标 (即数据), 主治医生给出了诊断结论 (如是否患病, 以及患哪种病). 实习医生只是用小本本把带标签数据记录下来, 并没往心里去. 下午来了 1 个就诊者 A, 实习医生将他的检测指标与上午 60 个就诊者的数据逐一比对, 并找出 k = 3 k = 3 k=3 个最相似的. 根据这 k k k 个就诊者的情况, 就可以对 A 的患病情况进行预测 (例如, 他们都没患病, 就预测 A 也没病).
这种方式极度简单, 但揭示了人类认识世界的一个本质而有效的思想: 根据相似性进行预测.
人们常说“见多识广”, 本质上就是大脑内存储的样本多, 就可以对新样本进行准确的判断.大医院的医生更靠谱, 一些小医院所说的疑难杂症, 对他们而言可能是天天见的病例. 因此, 在学习更多的算法之后, 仍然需要记住一句话: 永远不要小瞧 k k kNN. 你很难找到一种算法在随机选择的 100 个数据集上完美地打败它.
前段时间热炒的大数据概念, 其中一个思想就是: 如果训练数据的量足够大, 那么我们只需要用很简单方法 (如 k k kNN) 即可. 假设一个实习生见到的不是 60 个样本, 而是 1 亿个样本, 那么他的判断应该可以达到惊人的准确性. 西瓜书上也说了, 理论上可以证明, 当样本量足够大时, k k kNN 的误差不超过贝叶斯误差 (即理论最大误差) 的 2 倍.

2. 参数设置

k k k 是一个需要调整的参数. 如果是二分类问题, 一般将其设置为奇数, 方便投票. 要知道 k k k 设置为多少合适, 可以使用前面所描述的验证集.

3. 距离度量 distance measure

k k kNN 涉及相似性的计算. 假设就诊者 x 1 x_1 x1 x 2 x_2 x2 的 3 项检测指标值分别为 [ 0.3 , 1.7 , 380 ] [0.3, 1.7, 380] [0.3,1.7,380] [ 0.25 , 1.9 , 400 ] [0.25, 1.9, 400] [0.25,1.9,400], 则它们的欧氏距离为
( 0.3 − 0.25 ) 2 + ( 1.7 − 1.9 ) 2 + ( 380 − 400 ) 2 (1) \sqrt{(0.3 - 0.25)^2 + (1.7 - 1.9)^2 + (380 - 400)^2} \tag{1} (0.30.25)2+(1.71.9)2+(380400)2 (1)
曼哈顿距离为
∣ 0.3 − 0.25 ∣ + ∣ 1.7 − 1.9 ∣ + ∣ 380 − 400 ∣ (2) \vert 0.3 - 0.25\vert + \vert 1.7 - 1.9\vert + \vert 380 - 400\vert \tag{2} ∣0.30.25∣+∣1.71.9∣+∣380400∣(2)
当然还有其它的距离度量方式.

4. 主要缺点

慢.
试想别人学习到知识, 考试的时候刷刷地做题, 而你要一页页地翻书, 速度就不是一个量级的了.
为了缓解这个问题, 可以先把 10,000 条训练数据聚为 50 个簇, 每簇约 200 个样本 (聚类问题), 并获得这些簇中心点. 进行比对的时候, 先确定与哪个簇中心最近, 然后再在这个簇中心找邻居. 这样就可以把 10,000 次对比降为约 50 + 200 次.

5. 归一化 normalization

从 (1)(2) 式可以看出, 由于最后一个指标的值比较大, 前面两个指标对距离的贡献几乎可以忽略不计. 甚至这种指标值大小是由单位所导致的 (如毫升与升). 为消除不同指标取值范围的影响, 可使用归一化, 即所有指标均取 [ 0 , 1 ] [0, 1] [0,1] 区间的值. 例如, 第 3 项指标的最大值是 500, 最小值是 100, 则数据 380 归一化变为
380 − 100 500 − 100 = 280 400 = 0.7 \frac{380 - 100}{500 - 100} = \frac{280}{400} = 0.7 500100380100=400280=0.7

6. 度量学习 metric learning

归一化还是会引入新的问题: 认为所有的指标同等重要. 在现实应该中, 应该为每个指标赋予一定的权值 w w w, 并使得该指标的取值范围成为 [ 0 , w ] [0, w] [0,w]. 相应的权值可以从数据中学习到. 这就是度量学习的初衷.

7. 常见误区

  • 小瞧 k k kNN, 觉得它过于简单.
  • 没有认识到 k k kNN 正是人类认识物体的基本方式.
  • 不知道 k k kNN 可以做回归 (把邻居的实数型标签值取平均即可).

8. 延伸阅读

k k kNN 的 Java 代码参见 日撸 Java 三百行(51-60天,kNN 与 NB).文章来源地址https://www.toymoban.com/news/detail-467968.html

到了这里,关于机器学习常识 6: kNN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习——KNN算法实例

    目录 1.项目背景 2.流程步骤  3.代码部分 3.1导入可能需要用的包  3.2准备数据:从文本文件中解析数据  3.3分析数据:用Matplotlib创建散点图  3.4准备数据:数据归一化 3.5 测试算法:作为完整程序验证分类器  【关于K值的选择】 3.6使用算法:构建完整可用系统 4.总结    关

    2024年02月11日
    浏览(44)
  • 机器学习——KNN算法

    机器学习笔记 KNN的算法原理,可以简单如下描述: 一个数据集中存在多个已有标签的样本值,这些样本值共有的n个特征构成了一个多维空间N。当有一个需要预测/分类的样本x出现,我们把这个x放到多维空间n中,找到离其距离最近的k个样本,并将这些样本称为最近邻(nea

    2024年02月06日
    浏览(31)
  • 【机器学习】KNN 算法介绍

    KNN 算法,或者称 k-最近邻算法,是 有监督学习 中的 分类算法 。它可以用于分类或回归问题,但它通常用作分类算法。 KNN 的全称是 K Nearest Neighbors,意思是 K 个最近的邻居。该算法用 K 个最近邻来干什么呢?其实,KNN 的原理就是:当预测一个新样本的类别时, 根据它距离

    2023年04月24日
    浏览(73)
  • 机器学习——KNN回归

    回归:可以理解为拟合,就是根据训练数据的趋势,对输入数据进行预测。 KNN回归:是一种有监督学习,因为需要提供目标数据(target) 用KNN回归拟合sin函数,首先通过sin函数上的点训练KNN模型,然后用随机生成的点拟合函数。 代码:

    2024年02月10日
    浏览(22)
  • 机器学习_7、KNN

    KNN完整的代码+电离层数据资源-CSDN文库  

    2024年01月19日
    浏览(27)
  • 【机器学习笔记】7 KNN算法

    欧几里得度量(Euclidean Metric)(也称欧氏距离)是一个通常采用的距离定义,指在𝑚维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。 想象你在城市道路里,要从一个十字路口开车到

    2024年02月21日
    浏览(27)
  • 机器学习小结之KNN算法

    ​ KNN (K-Nearest Neighbor)算法是一种最简单,也是一个很实用的机器学习的算法,在《 机器学习实战 》这本书中属于第一个介绍的算法。它属于基于实例的 有监督学习 算法,本身不需要进行训练,不会得到一个概括数据特征的 模型 ,只需要选择合适的参数 K 就可以进行应用。

    2024年02月06日
    浏览(64)
  • 机器学习——kNN算法之红酒分类

    目录 StandardScaler的使用 KNeighborsClassifier的使用 代码实现 数据集介绍 数据集为一份红酒数据,总共有 178 个样本,每个样本有 13 个特征,这里不会为你提供红酒的标签,你需要自己根据这 13 个特征对红酒进行分类。部分数据如下图: StandardScaler的使用 由于数据中有些特征的

    2024年02月11日
    浏览(27)
  • 机器学习KNN最邻近分类算法

    KNN (K-Nearest Neighbor) 最邻近分类算法,其核心思想“近朱者赤,近墨者黑”,由你的邻居来推断你的类别。 图中绿色圆归为哪一类? 1、如果k=3,绿色圆归为红色三角形 2、如果k=5,绿色圆归为蓝色正方形 参考文章 knn算法实现原理:为判断未知样本数据的类别,以所有已知样

    2024年04月10日
    浏览(55)
  • 机器学习——K近邻(KNN)算法

    目录 一、knn算法概述 1.简单介绍 2.工作原理 3.knn算法中常用的距离指标 4.knn算法优势 5.knn算法一般流程 二、knn算法经典实例——海伦约会网站 三、关于天气和旅行适合度的例子 四、总结 K近邻算法(KNN)是一种用于分类和回归的统计方法。k-近邻算法采用测量不同特征值之

    2024年01月16日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包