KNN(最邻近规则分类K-Nearest-Neighibor)KNN算法

1. 综述

     1.1 Cover和Hart在1968年提出了最初的邻近算法
     1.2 分类(classification)算法
     1.3 输入基于实例的学习(instance-based learning), 懒惰学习(lazy learning)
    主要在一开始没有建立任何模型来检测输入的数值,在需要分类的时候进行及时分类。
 
2. 例子:
 
         

 
     
          未知电影属于什么类型?
 

 

 
3. 算法详述
 
     3.1 步骤:
     为了判断未知实例的类别,以所有已知类别的实例作为参照
     选择参数K
     计算未知实例与所有已知实例的距离
     选择最近K个已知实例
     根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别
 
     3.2 细节:
     关于K
     关于距离的衡量方法:
         3.2.1 Euclidean Distance 定义
               
 

     
     其他距离衡量:余弦值(cos), 相关度 (correlation), 曼哈顿距离 (Manhattan distance)
               
 
     3.3 举例

     
 
4. 算法优缺点:
     4.1 算法优点
          简单
          易于理解
          容易实现
          通过对K的选择可具备丢噪音数据的健壮性
          
     4.2 算法缺点
         
          需要大量空间储存所有已知实例
          算法复杂度高(需要比较所有已知实例与要分类的实例)
          当其样本分布不平衡时,比如其中一类样本过大(实例数量过多)占主导的时候,新的未知实例容易被归类为这个主导样本,因为这类样本实例的数量过大,但这个新的未知实例实际并木接近目标样本
 
 
5. 改进版本
      考虑距离,根据距离加上权重
      比如: 1/d (d: 距离)
 

最新文章

  1. atitit.web 推送实现方案集合
  2. vc个版本对应的vs版本
  3. Firemonkey的旁门左道[六]
  4. RT-Thread互斥锁
  5. C#委托初探
  6. JSP-02- 使用JSP实现输出
  7. Code Hard or Go Home
  8. hdu1022 Train Problem I
  9. 【转】Maven实战(九)---模块聚合和继承
  10. Codeforces Round #325 (Div. 2) D. Phillip and Trains BFS
  11. Python学习入门基础教程(learning Python)--5 Python文件处理
  12. 3D数学--学习笔记(五岁以下儿童):总结一些概念(避免遗忘!)
  13. ETL作业调度软件TASKCTL4.1单机部署
  14. Cesium3DTileset示例
  15. 林业有害生物监测系统(重庆宇创GIS)
  16. 对于 url encode decode js 和 c# 有差异
  17. 二维码Data Matrix简单介绍及在VS2010中的编译
  18. MySQL 服务(mysqld)crash
  19. L2-014. 列车调度
  20. 1.红黑树和自平衡二叉(查找)树区别 2.红黑树与B树的区别

热门文章

  1. java基础-String不可变的好处
  2. 如何利用GitHub设计一个炫酷的个人网站(含代码)
  3. 虚拟机安装CentOS7(一)
  4. (六) Keras 模型保存和RNN简单应用
  5. wav格式文件、pcm数据
  6. 人脸检测识别,人脸检测,人脸识别,离线检测,C#源码
  7. Github入门详情教程
  8. RIPng(第三组)
  9. Spring boot读取application.properties中文乱码
  10. java集合-HashMap源码解析