【机器学习】kNN-最近邻居算法(附源码)

  1. 算法介绍:

kNN (k-Nearest Neighbour) 算法是一种用于分类和回归的非参数的方法,可以用目标点周围所观察到的数据得平均值来预测出目标点 x 的值。本文将会介绍kNN的回归和分类算法,交叉验证和kNN算法的缺点。

1)kNN回归:

其中N{k}(x)是训练样本中离目标x最近的k个样本。

根据以上公式,我们可以看出在预测y的值时,kNN算法是求在训练样本中离x周围最近的k个样本所对应y值们的平均值。

以R语言为例,我们需要安装“kknn”包,简单的1NN例子如下:

我们可以得到以下fit的结果:

2) kNN分类:

仍以R语言为例,

如上图所示,在预测左图中小黑点的分类时,我们在k为半径的一个圆中发现蓝色点的数量大于橙色点的数量,根据kNN算法,我们把目标点归为蓝色点类。当k=1时,我们能得到上右图分区,称作“Voronoi tessellation"。图中的线段皆是两点的垂直平分线。

3.交叉验证:

不少读者看到这里会好奇,在kNN模型中到底什么样的k最符合我的预测模型呢?

从上图中发现,33NN模型由于方差较小显著优于1NN。然而,当k增加到100时,误差变得尤为显著。我们需要在误差和方差选择一个这种方案:

在寻找平衡点时,我们可以用交叉验证方法寻找最优解。

(1)将训练样本随机分成10组

(2)其中9组作为训练样本,应用k*NN模型;剩下的一组作为模型测试样本记录误差

(3)重新再10组里选择9组作为训练样本,重复10次

(4)平均10次实验的误差,最小的即为最优k。

简单的R代码实现如下,我们得到最佳的k值是33。

4.kNN的缺点:

虽然kNN模型具有容易实现,简单快捷的优点。但在平时建立模型是我们需要注意,kNN模型在每次预测时需要储存所有的训练样本数据,因为在预测时需要返回训练样本找邻近的所有k个点。其次,kNN模型对样本的异常值较为敏感,建立模型是,需要对数据进行预处理降低异常值对结果的影响。

5.参考资料:

https://sites.google.com/site/teazrq/teaching/STAT542

http://blog.csdn.net/suipingsp/article/details/41964713(含数字识别代码)

原文发布于微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX)

原文发表时间:2016-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

深度学习: 参数初始化

好的开始是成功的一半。 为了让你的模型跑赢在起跑线 ε=ε=ε=(~ ̄▽ ̄)~ ,请慎重对待参数初始化。

3133
来自专栏IT派

机器学习算法KNN简介及实现

KNN(K近邻算法)是一种不需要学习任何参数同时也非常简单的机器学习算法,既可以用来解决分类问题也可以用来解决回归问题。直观解释这个算法就是'近朱者赤,近墨者黑...

1180
来自专栏ACM算法日常

第十二篇:《机器学习之神经网络(实战篇)》

874
来自专栏PPV课数据科学社区

TensorFlow基本操作 实现卷积和池化

之前已经提到过图像卷积的操作和意义,并且用OpenCV中的filter2D函数实现了一些例子。OpenCV中的filter2D函数仅仅是用一个卷积核去卷积单个的...

962
来自专栏ATYUN订阅号

一文带你认识深度学习中不同类型的卷积

卷积(convolution)现在可能是深度学习中最重要的概念。靠着卷积和卷积神经网络(CNN),深度学习超越了几乎其它所有的机器学习手段。 ? 这篇文章将简要...

4389
来自专栏青青天空树

趣味问题:画图(c++实现)

描述:在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。下图给出了一...

1064
来自专栏fangyangcoder

数字图像处理之平滑滤波

                                         by方阳

1312
来自专栏机器学习算法工程师

干货|(DL~2)一看就懂的卷积神经网络

文章来自:https://leonardoaraujosantos.gitbooks.io 作者:Leonardo Araujo dos Santos

941
来自专栏Python中文社区

机器学习算法KNN简介及实现

KNN(K近邻算法)是一种不需要学习任何参数同时也非常简单的机器学习算法,既可以用来解决分类问题也可以用来解决回归问题。直观解释这个算法就是'近朱者赤,近墨者黑...

1192
来自专栏小小挖掘机

听说GAN很高大上,其实就这么简单

本文使用的tensorflow版本:1.4 tensorflow安装:pip install tensorflow 1、先来目睹一下效果吧 这篇文章讲解了如何使...

5574

扫码关注云+社区