【机器学习具体解释】KNN分类的概念、误差率及其问题
转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/50923056
勿在浮沙筑高台
KNN概念
KNN(K-Nearest Neighbors algorithm)是一种非參数模型算法。在训练数据量为N的样本点中,寻找近期邻測试数据x的K个样本,然后统计这K个样本的分别输入各个类别w_i下的数目k_i,选择最大的k_i所属的类别w_i作为測试数据x的返回值。当K=1时,称为近期邻算法,即在样本数据D中,寻找近期邻x的样本,把x归为此样本类别下。经常使用距离度量为欧式距离。
算法流程:
左图所看到的:在二维平面上要预測中间'*'所属颜色,採用K=11时的情况,当中有4黑色,7个蓝色,即预測'*'为蓝色。
右图所看到的:当K=1时,即近期邻算法。相当于把空间划分成N个区域,每一个样本确定一块区域。每一个区域中的点都归属于该样本的类别,由于该区域的数据点与所用样本相比与区域样本近期,此算法也被称为Voronoi tessellation。
--------------------------------------------------------------------------------------------------------------------------------------------
以下四副图像是在一个二维平面上。数据点类别为3类。採用K=10。图(a)为样本数据点。图(b)为平面上每一个位置属于y=1(相应‘+’)的概率热量图像。图(c)为类别y=2(相应'*')时相应的热量图像;图(d)採用MAP预计(即最大概率的类别)平面各点所属类别。
------------------------------------------------------------------------------------------------------------------
KNN算法误差率
如果最优贝叶斯分类率记为P_B,依据相关论文证明KNN算法的误差率为:
当数据样本量N趋于无穷大时。K=1时: ,M为数据类别总数
当数据样本量N趋于无穷大时,M=2时:;
由公式看出,KNN的算法要优于1-NN算法,由于减少了误差下界。
并随着k的增大。P_kNN渐近于最优误差率P_B;其实,当k->∞时(但仍然占样本总量N非常小一部分),KNN算法准确率趋近于贝叶斯分类器。
KNN算法的问题
- 当数据量N非常大,同一时候数据维度D非常高,搜索效率会急剧下降。
若採用暴力求解法。复杂度为
。为增大效率,能够採用KD树等算法优化。见:KD树与BBF算法解析
- 有时依据现实情况,须要减少样本数量,能够採用prototype editing或者condensing算法等;prototype
editing算法採用自身数据样本作为測试样本,应用KNN算法,若分类错误则剔除该样本。 - 当样本总量N非常小时,会造成错误率上升。一种解决的方法是训练度量距离方法,对不同的样本採用不同的度量方法目的是为了减少错误率。此种方法能够分为:全局方法(global)、类内方法(class-dependent)、局部方法(locally-dependent)。
Ref:Machine Learning: A Probabilistic Perspective
Pattern Recognition,4th.
【机器学习具体解释】KNN分类的概念、误差率及其问题的更多相关文章
- 机器学习---K最近邻(k-Nearest Neighbour,KNN)分类算法
K最近邻(k-Nearest Neighbour,KNN)分类算法 1.K最近邻(k-Nearest Neighbour,KNN) K最近邻(k-Nearest Neighbour,KNN)分类算法, ...
- 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验
实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...
- Python机器学习算法 — KNN分类
KNN简介 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.KNN分类算法属于监督学习. 最简单最初级的分类器是将全部的训练 ...
- 吴裕雄 python 机器学习——KNN分类KNeighborsClassifier模型
import numpy as np import matplotlib.pyplot as plt from sklearn import neighbors, datasets from skle ...
- (数据科学学习手札29)KNN分类的原理详解&Python与R实现
一.简介 KNN(k-nearst neighbors,KNN)作为机器学习算法中的一种非常基本的算法,也正是因为其原理简单,被广泛应用于电影/音乐推荐等方面,即有些时候我们很难去建立确切的模型来描述 ...
- knn分类算法学习
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的 ...
- 机器学习之路--KNN算法
机器学习实战之kNN算法 机器学习实战这本书是基于python的,如果我们想要完成python开发,那么python的开发环境必不可少: (1)python3.52,64位,这是我用的python ...
- 机器学习实战 之 KNN算法
现在 机器学习 这么火,小编也忍不住想学习一把.注意,小编是零基础哦. 所以,第一步,推荐买一本机器学习的书,我选的是Peter harrigton 的<机器学习实战>.这本书是基于pyt ...
- KNN分类算法及python代码实现
KNN分类算法(先验数据中就有类别之分,未知的数据会被归类为之前类别中的某一类!) 1.KNN介绍 K最近邻(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法. 机器学习, ...
随机推荐
- android 实现调查问卷-单选-多选
非常久没写东西了.今天来总结下有关android调查问卷的需求实现. 转载请加地址:http://blog.csdn.net/jing110fei/article/details/46618229 先 ...
- POJ 1041 John's trip Euler欧拉回路判定和求回路
就是欧拉判定,判定之后就能够使用DFS求欧拉回路了.图论内容. 这里使用邻接矩阵会快非常多速度. 这类题目都是十分困难的.光是定义的记录的数组变量就会是一大堆. #include <cstdio ...
- Sketch 介绍
Sketch 插件大集合 -- Using Sketch Like A BOSS 这几天发现了一个叫做 Sketch Toolbox 的 Mac 应用,简直是下载和安装 Sketch 插件 ...
- JS中confirm,prompt用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- react 设置代理(proxy) 实现跨域请求
一,对于使用creat-react-app构建的项目,可以直接在package.json下配置,具体如下 "proxy": "http://api.xxxx.com&qu ...
- 我的Go语言学习之旅二:入门初体验 Hello World
好吧,全部的程序猿们都已经习惯了.学习不论什么一门语言,我们都会以Hello World实例開始我们的学习,我也不例外.先来一个简单的样例 打开编辑器 (能够用记事本,我已经习惯 Notepad++了 ...
- 我眼中的PageRank算法详解
随着互联网的发展,网络上已有的网页数量庞大,并且每天都会有很多网页发布,如何权衡这些重要度的排名是一个很重要的问题.我们今天就来了解一下PageRank算法. 首先我们要来了解一下图的概念,请看图1. ...
- <转>Oracle Stream Replication技术
Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用. Oracle 的消息队列是通过发布/订阅的方式来解决事件管理.流复制(Stream re ...
- 将HG版本库推送到Git服务器
如何将HG版本库推送到Git服务器? 目的 习惯使用HG来进行版本管理,但是GitHub代码统计比Bitbucket要丰富,所以准备主力仓库选用Bitbucket,GitHub作为备用仓库. GitH ...
- atitit.企业管理----商业间谍策略的使用与防务
atitit.企业管理----商业间谍策略的使用与防务 1. 间谍的历史 2 1.1. 公元前10世纪,<旧约全书>中的<士师记>里讲述了参孙的故事是最早的间谍故事. 2 1. ...