kNN的主要思想:根据某个对象的属性值找到相似的对象们,让对象们一起投票决定这个对象属于哪一类。

这里银行的信息是,根据属性值找到的对象们,并不是来源于一个类,如果是一个类的话,直接将这个待分类对象归类为此类就完成了。

既然是投票,就意味着可能是平票,如果平了的话,就随便选择一个类作为此类的分类即可。

《数据科学实战》这本书里举的例子很贴近我们的生活,引用过来,作为参考:

假设一个人会对自己看过的每部电影都打上“好看”或者“不好看”的标签,现在根据这些历史标签信息,如果给定一部新的电影叫作《狂野的数据》, 我们可以用 k 近邻的方法预测此人是否会觉得这部电影好看。方法首先是要确定电影的属性值,包括电影的长度、风格、性爱场景数、奥斯卡最佳演员的个数以及电影的拍摄预算等。根据这些属性,我们可以找到与《狂野的数据》最相似的 k 部电影,并记录下这 k 部电影的标签信息。如果这些电影总体来看包括更多的是“好看”的标签(这个过程,叫作“投票” ) ,那么我们也自然会预测《狂野的数据》这部电影会得到此人的青睐。

这个例子里,引出了kNNk的含义,根据属性找到最相似的k个。

其实这个比较好理解,有投票过程,就意味着要确定投票人数,这个数字就是k啦。

而现在的问题是,如何根据多种标签寻找到最相似的k部电影。

实际上,kNN需要解决两个核心问题:

  • 如何根据属性来定义个体之间的相似性
  • 如何确定k的值

kNN的详细步骤

  • 确定相似性定义:距离
  • 将数据分割为训练数据 + 测试数据
  • 选择模型评价标准
  • 选择不同的k值,应用kNN模型,看模型效果(这是选择k的过程)
  • 基于模型评价标准,选出最优的k值
  • 确定k后,测试模型表现(用测试数据)

针对kNN的两个核心问题,第一,相似性衡量的距离是开始就选定好的,k的值是根据多个k值进行对比得出的。

但是,我们并不能穷尽k的选择,只是在有限次的选择中找到最优的。

另外,kNN模型,是无需训练的,只有一个k值是参数,模型本身不包含参数,只有规则。

相似性度量:距离

距离的测量方法选择,有点具体问题具体分析的味道。

另外,还要注意到数据的量纲计算导致的差别,尽量让不同特征的数值在同一水平上,不然,一个特征数值在十万级别,一个在百级别,那距离的度量,就会被这个大万级别的带偏了。比如:

  • 250000
  • 500

为了使其大致进入同一个量级,可以用250千代替250000,250和500就在一个量级了。

距离的度量选择很多,常见的有:

  • 欧式距离
  • 余弦相似度
  • Jaccard距离:衡量两个集合的相似度
  • Mahalanobis 距离
  • Hamming距离
  • Manhattan距离

这里我都没有放公式,且距离还有很多其他选择,比较好的实际操作方式是,根据问题定义,去查别人是怎么选择的距离。

上面这些距离度量是很整洁的,但是现实数据是多样的,如果需要判别的特征值取值类型都不同,比如有连续值,有分类值,上面这些距离衡量就不能直接用,我们就得变通,甚至是定义自己的距离衡量指标。

一些名词辨析

敏感度 && 特异性:上帝的归上帝,凯撒的归凯撒。

举例子:

敏感度(sensitivity):所有患病的人被诊断为患病,也叫真阳性率(true positive rate),也叫召回率(recall)
特异性(specificity):所有未患病的人被诊断为未患病,也叫真阴性率

END.

【数据科学】kNN算法笔记相关推荐

  1. UCSD COGS108 数据科学实战中文笔记·翻译完成

    原文:COGS108/Tutorials 译者:飞龙 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 机器学习交流群 62 ...

  2. 《R数据科学》学习笔记|Note5:使用dplyr进行数据转换(下)

    点击蓝字 关注我! 写在前面 本系列为<R数据科学>(R for Data Science)的学习笔记.相较于其他R语言教程来说,本书一个很大的优势就是直接从实用的R包出发,来熟悉R及数据 ...

  3. 《R数据科学》学习笔记|Note8:使用dplyr处理关系数据

    使用dplyr处理关系数据 往期文章 <R数据科学>学习笔记|Note1:绪论 <R数据科学>学习笔记|Note2:使用ggplot2进行数据可视化(上) <R数据科学& ...

  4. 东北大学数据科学基础(MATLAB)-笔记

    (本地用typora写的md笔记,导入图片得建一个picGo图床,嫌麻烦,所以如有需要带完整图片的笔记,参见: 课件,参见:东北大学数据科学基础MATLAB学习PPT.zip) 文章目录 一. 零散知 ...

  5. 数据科学系列读书笔记

    记录一下笔者所阅读过的与大数据相关的书籍,以及阅读感受,以期为同仁提供此许参考建议. 1. <数据科学实战>(英文版本名称: Doing data science) 读后感: 这是一本有态 ...

  6. 第2章KNN算法笔记_函数classify0

    <机器学习实战>知识点笔记目录 K-近邻算法(KNN)思想: 1,计算未知样本与所有已知样本的距离 2,按照距离递增排序,选前K个样本(K<20) 3,针对K个样本统计各个分类的出现 ...

  7. 第3章 Pandas数据处理(3.7-3.8)_Python数据科学手册学习笔记

    3.7 合并数据集: Concat与Append操作 - pd.concat - pd.merge - pd.join import pandas as pd def make_df(cols,ind ...

  8. 数据科学中的6个基本算法,掌握它们要学习哪些知识

    晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 如果想从事数据科学,但是又没有数学背景,那么有多少数学知识是做数据科学所必须的? 统计学是学习数据科学绕不开的一门数学基础课程,但数据科学也 ...

  9. GitHub:数据科学最全资料集合

    在数据科学.算法领域,涉及到的知识点很多,比如Python.Pandas.Scikit Learn.机器学习等等. 由于近几年AI领域热门,吸引了很多学者投入到数据科学领域的研究当中.而对于初学者,一 ...

最新文章

  1. We wear culture:Google 艺术与文化项目带你探秘穿在身上的文化
  2. LeetCode374 猜数字大小 (二分法)
  3. 向工作表中添加列表框或组合框
  4. windows 10开机后弹出的certificate选择弹出窗
  5. VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
  6. linux编译内核后无法进入,编译linux内核,ubuntu,x86的环境出现warning,然后就出现无法启动ubuntu...
  7. Struts2的声明式异常处理
  8. Activity端详
  9. 13 个设计 REST API 的最佳实践
  10. 计算机二级关系模式知识点,2013年计算机二级VFP关系模式知识点详解
  11. mysql数据库的属性_mysql 数据库属性
  12. dataset 用法(1)
  13. Kaggle共享单车需求项目详解
  14. Epicor 调拨方式平负数库存 直接生成DMT格式
  15. Java关键字,标识符,数据类型,运算符
  16. fileinfo的作用以及如何开启fileinfo扩展
  17. .NET中LinkButton的使用
  18. 3、Windows之CMD装逼命令————CMD命令打开网页(让人一看你就是个电脑高手)
  19. Algorithm1
  20. 峰值预测性能指标PPTS(Peak percentage of threshold statistic)

热门文章

  1. 一文详解opencv摄像头数字识别
  2. LabView学习笔记(四):动态数据类型
  3. Eratosthenes筛法求素数
  4. java 维文生成图片_维文、哈萨克文、柯尔克孜文检测 (java实现把UTF-8转为unicode)...
  5. oracle数据块坏,Oracle数据块损坏解决办法
  6. rocketmq 顺序消费_RocketMQ核心概念扫盲
  7. arm中断保护和恢复_ARM中断处理过程
  8. apache struts linux,Apache Struts2远程代码执行漏洞(S2-053)(CVE-2017-12611)
  9. php5.6 mysql被重置_php5.6连接mysql8出现错误解决方法
  10. Java图形编程实验总结_实验二java图形界面编程2015级.doc