分类一般分为两种:

  积极学习法:先根据训练集构造模型,然后根据模型对测试集分类

  消极学习法:推迟建模,先简单存储训练集,等到给定测试集时再进行建模,如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)知识点概括的更多相关文章

  1. 机器学习中 K近邻法(knn)与k-means的区别

    简介 K近邻法(knn)是一种基本的分类与回归方法.k-means是一种简单而有效的聚类方法.虽然两者用途不同.解决的问题不同,但是在算法上有很多相似性,于是将二者放在一起,这样能够更好地对比二者的异 ...

  2. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  3. k近邻法(KNN)和KMeans算法

    k近邻算法(KNN): 三要素:k值的选择,距离的度量和分类决策规则 KMeans算法,是一种无监督学习聚类方法: 通过上述过程可以看出,和EM算法非常类似.一个简单例子, k=2: 畸变函数(dis ...

  4. scikit-learn K近邻法类库使用小结

    在K近邻法(KNN)原理小结这篇文章,我们讨论了KNN的原理和优缺点,这里我们就从实践出发,对scikit-learn 中KNN相关的类库使用做一个小结.主要关注于类库调参时的一个经验总结. 1. s ...

  5. k近邻法(kNN)

    <统计学习方法>(第二版)第3章 3 分类问题中的k近邻法 k近邻法不具有显式的学习过程. 3.1 算法(k近邻法) 根据给定的距离度量,在训练集\(T\)中找出与\(x\)最邻近的\(k ...

  6. k近邻法

    k近邻法(k nearest neighbor algorithm,k-NN)是机器学习中最基本的分类算法,在训练数据集中找到k个最近邻的实例,类别由这k个近邻中占最多的实例的类别来决定,当k=1时, ...

  7. 机器学习--K近邻 (KNN)算法的原理及优缺点

    一.KNN算法原理 K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法. 它的基本思想是: 在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对 ...

  8. 《统计学习方法(李航)》讲义 第03章 k近邻法

    k 近邻法(k-nearest neighbor,k-NN) 是一种基本分类与回归方法.本书只讨论分类问题中的k近邻法.k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类 ...

  9. 学习笔记——k近邻法

    对新的输入实例,在训练数据集中找到与该实例最邻近的\(k\)个实例,这\(k\)个实例的多数属于某个类,就把该输入实例分给这个类. \(k\) 近邻法(\(k\)-nearest neighbor, ...

  10. 机器学习PR:k近邻法分类

    k近邻法是一种基本分类与回归方法.本章只讨论k近邻分类,回归方法将在随后专题中进行. 它可以进行多类分类,分类时根据在样本集合中其k个最近邻点的类别,通过多数表决等方式进行预测,因此不具有显式的学习过 ...

随机推荐

  1. 16.如何做到webpack打包vue项目后,可以修改配置文件

    问题描述: 前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api ...

  2. HTML Element 与 Node 的区别

    Element 与 Node 的区别 <html> <head><title>Element & Node</title></head&g ...

  3. java程序员常见面试题目

      答:每当程序出现异常之后,如果程序没有进行相应的处理,则程序会出现中断现象.实际上,产生了异常之后,JVM会抛出一个异常类的实例化对象,如果此时使用了try语句捕获的话,则可以进行异常的处理,否则 ...

  4. angular4.0 父子组建之间的相互通信

    父组建---->子组建 传递信息 首先先通过angular脚手架生成两个基本组件,有一个好处是 会自动关联到跟模版,节约时间,而且还是偷懒 ng generate component compo ...

  5. (转载)KMP算法讲解

    网上找到了一篇详细讲解KMP字符串匹配算法,质量很高.特备忘于此. 摘自:http://blog.csdn.net/v_july_v/article/details/7041827 实现代码如下: / ...

  6. eclipse打开时提示:failed to create the java virtual machine

    Eclipse打开时提示: failed to create the java virtual machine 原因:C盘空间不够   编辑删除 处理:1.用金山清理临时文件: 2.用金山手机卫士连接 ...

  7. JavaScript一个拖动元素的实例

    <script type="text/javascript" src="./whenReady.js"></script> <bo ...

  8. 动态绑定DropDownList

    1.首先前台创建一个dropdownlist控件,并为这个控件起名id ,并且不要忘记runat=server这个属性,否则后台不能获取到该控件. 2.后台自定义方法绑定控件(本方法以三层架构的写法为 ...

  9. 说声PHP的setter&getter(魔术)方法,你们辛苦了

    php作为快速迭代项目的语言,其牛逼性质自不必多说.今天咱们要来说说php语言几个魔术方法,当然了,主要以setter&getter方法为主. 首先,咱们得知道什么叫魔术方法? 官方定义为:_ ...

  10. POJ 3984 路径输出

    迷宫问题 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, ...