【机器学习详解】KNN分类的概念、误差率及其问题
2016-03-18 17:23
211 查看
转载请注明出处:/article/3729666.html
勿在浮沙筑高台
算法流程:
左图所示:在二维平面上要预测中间'*'所属颜色,采用K=11时的情况,其中有4黑色,7个蓝色,即预测'*'为蓝色。
右图所示:当K=1时,即最近邻算法,相当于把空间划分成N个区域,每个样本确定一块区域。每个区域中的点都归属于该样本的类别,因为该区域的数据点与所用样本相比与区域样本最近,此算法也被称为Voronoi tessellation。
--------------------------------------------------------------------------------------------------------------------------------------------
下面四副图像是在一个二维平面上,数据点类别为3类,采用K=10。图(a)为样本数据点;图(b)为平面上每个位置属于y=1(对应‘+’)的概率热量图像,图(c)为类别y=2(对应'*')时对应的热量图像;图(d)采用MAP估计(即最大概率的类别)平面各点所属类别。
------------------------------------------------------------------------------------------------------------------
当数据样本量N趋于无穷大时,K=1时:
,M为数据类别总数
当数据样本量N趋于无穷大时,M=2时:
;
由公式看出,KNN的算法要优于1-NN算法,因为降低了误差下界。并随着k的增大,P_kNN渐近于最优误差率P_B;事实上,当k->∞时(但仍然占样本总量N很小一部分),KNN算法准确率趋近于贝叶斯分类器。
。为增大效率,可以采用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概念
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.
相关文章推荐
- CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
- CentOS 6.5系统上安装SVN服务器端的方法及步骤
- RabbitMQ消息队列(五): 主题分发
- python的列表(一)
- 实习day2
- 练习1-b
- Html_tag
- DrawerLayout结构分析
- 如何实现嵌套的内部div垂直水平居中
- 20+条MySQL性能优化的最佳经验
- 报错解决 error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
- Android显示webview加载的网页源码
- 菜鸟成长记-UICollectionView使用
- git 常用的东西!
- DMX512 for Arduino 例子详解
- C语言小结3
- RxJava使用场景搜集
- C#基本语法学习(八)
- CentOS下添加新硬盘
- 反编译问题