【机器学习具体解释】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.

时间: 2024-12-17 17:42:24

【机器学习具体解释】KNN分类的概念、误差率及其问题的相关文章

【机器学习详解】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-近邻(kNN)分类算法_源代码

因为自己想学着去写机器学习的源码,所以我最近在学习<机器学习实战>这本书. <机器学习实战>是利用Python2完成的机器学习算法的源代码,并利用机器学习方法来对实际问题进行分析与处理. (<机器学习实战>豆瓣读书网址:https://book.douban.com/subject/24703171/) 以下内容是我通过学习<机器学习实战>,以及我对k-近邻(kNN)分类算法的理解,所总结整理出的内容,其中kNN分类算法的源码为Python3的代码,希望大家

机器学习---K最近邻(k-Nearest Neighbour,KNN)分类算法

K最近邻(k-Nearest Neighbour,KNN)分类算法 1.K最近邻(k-Nearest Neighbour,KNN) K最近邻(k-Nearest Neighbour,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实

常见机器学习算法原理+实践系列5(KNN分类+Keans聚类)

一,KNN分类 K-Nearest Neighbor K临近算法是一种有监督的分类算法,工作原理很简单,存在一个样本集合,也成为训练样本,样本中包含标签,将新数据的每个特征与样本集合的数据对应特征进行比较,然后提取样本最相似的分类标签,k就是选择的最相似的数据点,选择k个点中出现频率最高的分类,就是新数据的分类.一般来说k不会超过20个.Knn有两个细节需要注意,一个是相似度算法,常用包含欧式距离,余弦距离等等,另外一个在计算相似度之前需要归一化特征,比如使用离差标准化(Min-Max),把所有

机器学习:K-近邻分类

今天的主题为:K-近邻分类算法.主要包括对算法的解释及理解,以及对算法用实例代码展示出来. K-近邻算法属于分类的一种,由之前机器学习简介中所介绍的,分类是需要一些样本数据来供算法进行学习,因此K-近邻分类算法也需要一些训练数据集. 首先我说一下K-近邻算法的思路:从字面上上看,"K-近邻"可以理解为"K个最近",这也就是K-近邻算法的核心.对于一个待分类的样本,使用K-近邻算法将其分类,首先要将这个样本与训练样本集中的每个样本计算距离或相似度(使用欧氏距离),找出

后端程序员之路 12、K最近邻(k-Nearest Neighbour,KNN)分类算法

K最近邻(k-Nearest Neighbour,KNN)分类算法,是最简单的机器学习算法之一.由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合.该算法的功能有:从目标区域抽样计算欧式或马氏距离:在交叉验证后的RMSE基础上选择启发式最优的K邻域:计算多元k-最近邻居的距离倒数加权平均. 机器学习(一)——K-近邻(KNN)算法 - oYabea - 博客园http://www.cnblo

机器学习算法原理解析——分类

1. KNN分类算法原理及应用 1.1 KNN概述 K最近邻(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法. KNN算法的指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断你的类型. 本质上,KNN算法就是用距离来衡量样本之间的相似度. 1.2 算法图示 从训练集中找到和新数据最接近的k条记录,然后根据多数类来决定新数据类别 算法涉及3个主要因素 1) 训练数据集 2) 距离或相似度的计算衡量 3) k的大小 算法描述 1) 已知两类“先验”数据,分别是蓝方块和红

在Ignite中使用k-最近邻(k-NN)分类算法

在本系列前面的文章中,简单介绍了一下Ignite的线性回归算法,下面会尝试另一个机器学习算法,即k-最近邻(k-NN)分类.该算法基于对象k个最近邻中最常见的类来对对象进行分类,可用于确定类成员的关系. 一个适合k-NN分类的数据集是鸢尾花数据集,它可以很容易地通过UCI网站获得. 鸢尾花数据集由150个样本组成,来自3种不同种类的鸢尾花各有50朵(Iris Setosa, Iris Versicolour和Iris Virginica).以下四个特征可供每个样本使用: 萼片长度(cm) 萼片宽

转:机器学习算法原理解析 - 分类

转:http://www.cnblogs.com/swordfall/p/9517988.html 常见分类模型与算法 距离判别法,即最近邻算法KNN: 贝叶斯分类器: 线性判别法,即逻辑回归算法: 决策树: 支持向量机: 神经网络: 1. KNN分类算法原理及应用 1.1 KNN概述 K最近邻(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法. KNN算法的指导思想是"近朱者赤,近墨者黑",由你的邻居来推断你的类型. 本质上,KNN算法就是用距离来衡量样本