k近邻法(KNN)知识点概括
分类一般分为两种:
积极学习法:先根据训练集构造模型,然后根据模型对测试集分类
消极学习法:推迟建模,先简单存储训练集,等到给定测试集时再进行建模,如KNN算法。
1. 简述
KNN的核心思想就是:物以类聚,人以群分
即给定一个训练数据集,对于新的输入实例,在训练集中找到与该实例最邻近的K个实例,这K个实例多数属于某个类,就把该输入实例分为这个类
2. K值的选择
若K值较小,相当于用较小邻域的实例进行预测,近似误差减小,估计误差增大,对邻近的实例点敏感,若邻近点恰好是噪声点,则预测出错。总之,K值减小,模型复杂,易过拟合(已知数据预测很好,未知数据预测差)
若K值较大,相当于用较大邻域的实例进行预测,近似误差增大,估计误差减小,较远的实例点(可能为不相似点)也会参与预测,使预测出错。总之,K值增大,模型变简单
若K=N,简单地预测为训练集中最多的类,模型过于简单,忽略大量有用信息
所以,K值一般靠经验,或采用交叉验证法选取最优K值,就是初始取个较小值,之后再不断调整来达到最优,但这个K值也只是对这个样本集是最优的,一般采用k为奇数,避免产生票数相等的情况难以抉择
3.距离度量
这是指如何选取邻居的问题,即邻居间的相似度的度量方式
欧氏距离、曼哈顿距离(L1距离、城市区距离)、切比雪夫距离(各个坐标距离的最大值)分别为闵可夫斯基距离在p=2/1/∞的特殊情况,分别应用于空间、距离、国际象棋比赛上
另外,还有标准化欧氏距离(后=(前-均值)/ 方差),马氏距离,巴氏距离,汉明距离(两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数),夹角余弦(向量),jaccard系数(集合),皮尔逊系数PCC(变量的相关性)
4 改进
如何寻找邻居?
最简单的方法就是对整个样本集逐一计算距离,全部存储,再进行查找
改进方案有两种,一是对样本进行组织与整理,分群分层 ,压缩到接近测试样本领域的小范围内(KD树)。另一个就是在原有样本集中挑选出对分类计算有效的样本,减少样本数,从而减少计算与存储(压缩近邻算法)。
压缩近邻法
首先定义两个存储器,一个用来存放即将生成的样本集,称为Store;另一存储器则存放原样本集,称为Grabbag。其算法是:
1. 初始化。Store是空集,原样本集存入Grabbag;从Grabbag中任意选择一样本放入Store中作为新样本集的第一个样本。
2. 样本集生成。在Grabbag中取出第i个样本用Store中的当前样本集按最近邻法分类。若分类错误,则将该样本从Grabbag转入Store中,若分类正确,则将该样本放回Grabbag中。
3. 结束过程。若Grabbag中所有样本在执行第二步时没有发生转入Store的现象,或Grabbag已成空集,则算法终止,否则转入第二步。
5.分类决策规则
多数表决规则,即经验风险最小化
也可以为每个邻居赋予一定的投票权重,通过它们与测试数据的远近来分配相应的投票权重(例如距离的倒数1/d2)
matlab代码:https://github.com/yundou2017
k近邻法(KNN)知识点概括的更多相关文章
- 机器学习中 K近邻法(knn)与k-means的区别
简介 K近邻法(knn)是一种基本的分类与回归方法.k-means是一种简单而有效的聚类方法.虽然两者用途不同.解决的问题不同,但是在算法上有很多相似性,于是将二者放在一起,这样能够更好地对比二者的异 ...
- K近邻法(KNN)原理小结
K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...
- k近邻法(KNN)和KMeans算法
k近邻算法(KNN): 三要素:k值的选择,距离的度量和分类决策规则 KMeans算法,是一种无监督学习聚类方法: 通过上述过程可以看出,和EM算法非常类似.一个简单例子, k=2: 畸变函数(dis ...
- scikit-learn K近邻法类库使用小结
在K近邻法(KNN)原理小结这篇文章,我们讨论了KNN的原理和优缺点,这里我们就从实践出发,对scikit-learn 中KNN相关的类库使用做一个小结.主要关注于类库调参时的一个经验总结. 1. s ...
- k近邻法(kNN)
<统计学习方法>(第二版)第3章 3 分类问题中的k近邻法 k近邻法不具有显式的学习过程. 3.1 算法(k近邻法) 根据给定的距离度量,在训练集\(T\)中找出与\(x\)最邻近的\(k ...
- k近邻法
k近邻法(k nearest neighbor algorithm,k-NN)是机器学习中最基本的分类算法,在训练数据集中找到k个最近邻的实例,类别由这k个近邻中占最多的实例的类别来决定,当k=1时, ...
- 机器学习--K近邻 (KNN)算法的原理及优缺点
一.KNN算法原理 K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法. 它的基本思想是: 在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对 ...
- 《统计学习方法(李航)》讲义 第03章 k近邻法
k 近邻法(k-nearest neighbor,k-NN) 是一种基本分类与回归方法.本书只讨论分类问题中的k近邻法.k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类 ...
- 学习笔记——k近邻法
对新的输入实例,在训练数据集中找到与该实例最邻近的\(k\)个实例,这\(k\)个实例的多数属于某个类,就把该输入实例分给这个类. \(k\) 近邻法(\(k\)-nearest neighbor, ...
- 机器学习PR:k近邻法分类
k近邻法是一种基本分类与回归方法.本章只讨论k近邻分类,回归方法将在随后专题中进行. 它可以进行多类分类,分类时根据在样本集合中其k个最近邻点的类别,通过多数表决等方式进行预测,因此不具有显式的学习过 ...
随机推荐
- Windows10 Enterprise版本周年更新问题
安装Windows10的时候,蛋疼选择了企业版本,导致后来周年更新遇到了蛋疼的问题. 首先是无法接收到周年更新的推送.记得首个周年更新的时候,等了大半年都没有.后来使用了易升进行更新,可以检测到,但是 ...
- TSC打印机使用教程终极版
最近公司做一个资产采集的项目,之前做过此类项目,不过没有整理资料,借这次机会写一下,做个记录. 本教程使用的打印机型号:TSC TTP-244 Plus 官方文档 一.TSC打印机安装 1.机 ...
- VB6之SOAP
根据网上搜来的资料,MS有个组件可以用来支撑VB6访问SOAP接口. 于是下载了个msSoapToolkit.exe安装后试了下,发现确实可以访问用C#或者VB.net写的webservice. 但是 ...
- Html 学习
行内元素和块级元素 行内元素(行级元素) 多个元素会在一行内显示 块级元素 独立成行 注意:块级元素能够嵌套行内元素 <div> <span></span> < ...
- CSS 样式书写规范
可能不同团队都有各自的规范,又或者很多人在写 CSS 的时候还是想到什么就写什么,不存在太多的约束. 我觉得 CSS 代码规范还是有存在的必要的,尤其是在团队配合,多人协作下,规范就显得尤为重要. 本 ...
- apt-get 安装ubuntu-tweak
Ubuntu Tweak是一款专门为Ubuntu(GNOME桌面)准备的配置.调整工具.主要面向新手级的普通用户.它可以设置很多并不能在系统首选项中设置的隐藏选项,以满足用户自定义的乐趣.即使是新手, ...
- 编写一个可配置的网页信息提取组件 (二)—— 优雅的.net core 配置系统
引言 在上篇文章(http://www.cnblogs.com/lightluomeng/p/7212577.html)中,初步实现了一个可配置的网页信息分析组件.但是由于是奔着解决事情的目的去的,所 ...
- 玩玩微信公众号Java版之二:接收、处理及返回微信消息
前面已经配置了微信服务器,那么先开始最简单的接收微信消息吧~ 可以用我们的微信号来直接进行测试,下面先看测试效果图: 这是最基本的文本消息的接收.处理及返回,来看看是怎么实现的吧! 首先可 ...
- 微信小程序怎么用?线下商家最适合玩小程序
随着微信小程序不断地释放新功能,许多行业越来越关注小程序,目前已经有不少餐饮和线下传统零售企业开始谋划利用好小程序.但是,线下商业有着复杂的场景,如何针对自己行业的特点和需求开发出属于自己的小程序,是 ...
- ASP.NET Core API 版本控制
几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...