【数据科学】kNN算法笔记
kNN的主要思想:根据某个对象的属性值找到相似的对象们,让对象们一起投票决定这个对象属于哪一类。
这里银行的信息是,根据属性值找到的对象们,并不是来源于一个类,如果是一个类的话,直接将这个待分类对象归类为此类就完成了。
既然是投票,就意味着可能是平票,如果平了的话,就随便选择一个类作为此类的分类即可。
《数据科学实战》这本书里举的例子很贴近我们的生活,引用过来,作为参考:
假设一个人会对自己看过的每部电影都打上“好看”或者“不好看”的标签,现在根据这些历史标签信息,如果给定一部新的电影叫作《狂野的数据》, 我们可以用 k 近邻的方法预测此人是否会觉得这部电影好看。方法首先是要确定电影的属性值,包括电影的长度、风格、性爱场景数、奥斯卡最佳演员的个数以及电影的拍摄预算等。根据这些属性,我们可以找到与《狂野的数据》最相似的 k 部电影,并记录下这 k 部电影的标签信息。如果这些电影总体来看包括更多的是“好看”的标签(这个过程,叫作“投票” ) ,那么我们也自然会预测《狂野的数据》这部电影会得到此人的青睐。
这个例子里,引出了kNN
的k
的含义,根据属性找到最相似的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算法笔记相关推荐
- UCSD COGS108 数据科学实战中文笔记·翻译完成
原文:COGS108/Tutorials 译者:飞龙 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 机器学习交流群 62 ...
- 《R数据科学》学习笔记|Note5:使用dplyr进行数据转换(下)
点击蓝字 关注我! 写在前面 本系列为<R数据科学>(R for Data Science)的学习笔记.相较于其他R语言教程来说,本书一个很大的优势就是直接从实用的R包出发,来熟悉R及数据 ...
- 《R数据科学》学习笔记|Note8:使用dplyr处理关系数据
使用dplyr处理关系数据 往期文章 <R数据科学>学习笔记|Note1:绪论 <R数据科学>学习笔记|Note2:使用ggplot2进行数据可视化(上) <R数据科学& ...
- 东北大学数据科学基础(MATLAB)-笔记
(本地用typora写的md笔记,导入图片得建一个picGo图床,嫌麻烦,所以如有需要带完整图片的笔记,参见: 课件,参见:东北大学数据科学基础MATLAB学习PPT.zip) 文章目录 一. 零散知 ...
- 数据科学系列读书笔记
记录一下笔者所阅读过的与大数据相关的书籍,以及阅读感受,以期为同仁提供此许参考建议. 1. <数据科学实战>(英文版本名称: Doing data science) 读后感: 这是一本有态 ...
- 第2章KNN算法笔记_函数classify0
<机器学习实战>知识点笔记目录 K-近邻算法(KNN)思想: 1,计算未知样本与所有已知样本的距离 2,按照距离递增排序,选前K个样本(K<20) 3,针对K个样本统计各个分类的出现 ...
- 第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 ...
- 数据科学中的6个基本算法,掌握它们要学习哪些知识
晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 如果想从事数据科学,但是又没有数学背景,那么有多少数学知识是做数据科学所必须的? 统计学是学习数据科学绕不开的一门数学基础课程,但数据科学也 ...
- GitHub:数据科学最全资料集合
在数据科学.算法领域,涉及到的知识点很多,比如Python.Pandas.Scikit Learn.机器学习等等. 由于近几年AI领域热门,吸引了很多学者投入到数据科学领域的研究当中.而对于初学者,一 ...
最新文章
- We wear culture:Google 艺术与文化项目带你探秘穿在身上的文化
- LeetCode374 猜数字大小 (二分法)
- 向工作表中添加列表框或组合框
- windows 10开机后弹出的certificate选择弹出窗
- VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
- linux编译内核后无法进入,编译linux内核,ubuntu,x86的环境出现warning,然后就出现无法启动ubuntu...
- Struts2的声明式异常处理
- Activity端详
- 13 个设计 REST API 的最佳实践
- 计算机二级关系模式知识点,2013年计算机二级VFP关系模式知识点详解
- mysql数据库的属性_mysql 数据库属性
- dataset 用法(1)
- Kaggle共享单车需求项目详解
- Epicor 调拨方式平负数库存 直接生成DMT格式
- Java关键字,标识符,数据类型,运算符
- fileinfo的作用以及如何开启fileinfo扩展
- .NET中LinkButton的使用
- 3、Windows之CMD装逼命令————CMD命令打开网页(让人一看你就是个电脑高手)
- Algorithm1
- 峰值预测性能指标PPTS(Peak percentage of threshold statistic)
热门文章
- 一文详解opencv摄像头数字识别
- LabView学习笔记(四):动态数据类型
- Eratosthenes筛法求素数
- java 维文生成图片_维文、哈萨克文、柯尔克孜文检测 (java实现把UTF-8转为unicode)...
- oracle数据块坏,Oracle数据块损坏解决办法
- rocketmq 顺序消费_RocketMQ核心概念扫盲
- arm中断保护和恢复_ARM中断处理过程
- apache struts linux,Apache Struts2远程代码执行漏洞(S2-053)(CVE-2017-12611)
- php5.6 mysql被重置_php5.6连接mysql8出现错误解决方法
- Java图形编程实验总结_实验二java图形界面编程2015级.doc