CH3 k近邻法《统计学习方法》-学习笔记

文章原创,最近更新:2018-06-25

1.k近邻算法的初步了解
2.k近邻算法的基本概念,原理以及应用
3.k近邻算法中k的选取以及特征归一化的重要性
4.将kNN分类器用于的场景
5.将kNN分类器用于的场景
6.本文的一点总结
参考链接:
1、 一文搞懂k近邻(k-NN)算法(一)
2、K-最近邻算法的应用
3、距离产生美?k近邻算法python实现
4、06 K-近邻算法,初中生也能理解的机器学习
5、k-近邻算法

前言:通过网上找的文章,通过归纳总结具体如下:

1.k近邻算法的初步了解

设想你想了解一个陌生人的饮食风格,如果你对他所知无几,那么最容易想到的一个捷径就是看看他生存的周围人群的口味。但是如果你对他的信息知道更多,例如知道他的年龄、收入等,那么这个时候就最好从他周围的人群中去挑选与他年龄、收入相近的人的饮食风格,这样预测会更准确一点。这其中蕴含的算法就是最近邻算法。

最近邻算法的思想很简单,”距离“相近的事物总会具有更多的共性。其中涉及的数学知识并不深厚。

要想运用最近邻算法解决问题,得明确要个要点,具体如下:

  • 一是设定一种距离的定义,这个距离可能是物理距离,也可能是实际属性之间的抽象距离;
  • 二是要假定物以类聚人以群分,即距离相近的事物总是有更多的共性。

最近邻算法是一种预测型算法,它在实际操作中会忽略很多要素,只是给出结论而并不会描述结论的具体推理。例如,预测一个人的饮食风格只是根据与他相近的人来预测的,而并没有说明这个人的年龄、收入是如何影响他的饮食风格的。

为什么要设置成K近邻呢?这是因为在实际操作中,我们要首先确定一个合理的K值,假如我们需要预测一个事物的某项特征,找出被预测事物的K个最近邻,然后让这K个最近邻对预测结果进行投票,最终去投票最高的作为预测结果。

2.k近邻算法的基本概念,原理以及应用

k近邻算法是一种基本分类和回归方法。本篇文章只讨论分类问题的k近邻法。

k近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分类到这个类中。(这就类似于现实生活中少数服从多数的思想)根据这个说法,咱们来看下引自维基百科上的一幅图:

如上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据

这也就是我们的目的,来了一个新的数据点,我要得到它的类别是什么?好的,下面我们根据k近邻的思想来给绿色圆点进行分类。

  • 如果k=3,绿色圆点的最邻近的3个点是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。

  • 如果k=5,绿色圆点的最邻近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。

从上面例子我们可以看出,k近邻的算法思想非常的简单,也非常的容易理解,那么我们是不是就到此结束了,该算法的原理我们也已经懂了,也知道怎么给新来的点如何进行归类,只要找到离它最近的k个实例,哪个类别最多即可。

哈哈,没有这么简单啦,算法的核心思想确实是这样,但是要想一个算法在实际应用中work,需要注意的不少额~比如k怎么确定的,k为多少效果最好呢?所谓的最近邻又是如何来判断给定呢?

3.k近邻算法中k的选取以及特征归一化的重要性

3.1选取k值以及它的影响

k近邻的k值我们应该怎么选取呢?

如果我们选取较小的k值,那么就会意味着我们的整体模型会变得复杂,容易发生过拟合!结论说完了,太抽象了吧你,不上图讲解号称通俗讲解的都是流氓

好吧,那我就上图来讲解假设我们选取k=1这个极端情况,怎么就使得模型变得复杂,又容易过拟合了呢?

假设我们有训练数据和待分类点如下图:

上图中有俩类,一个是黑色的圆点,一个是蓝色的长方形,现在我们的待分类点是红色的五边形。

好,根据我们的k近邻算法步骤来决定待分类点应该归为哪一类。我们由图中可以得到,很容易我们能够看出来五边形离黑色的圆点最近,k又等于1,那太好了,我们最终判定待分类点是黑色的圆点。

由这个处理过程我们很容易能够感觉出问题了,如果k太小了,比如等于1,那么模型就太复杂了,我们很容易学习到噪声,也就非常容易判定为噪声类别,而在上图,如果,k大一点,k等于8,把长方形都包括进来,我们很容易得到我们正确的分类应该是蓝色的长方形!如下图:

所谓的过拟合就是在训练集上准确率非常高,而在测试集上准确率低,经过上例,我们可以得到k太小会导致过拟合,很容易将一些噪声(如上图离五边形很近的黑色圆点)学习到模型中,而忽略了数据真实的分布!

如果我们选取较大的k值,就相当于用较大邻域中的训练数据进行预测,这时与输入实例较远的(不相似)训练实例也会对预测起作用,使预测发生错误,k值的增大意味着整体模型变得简单。

k值增大怎么就意味着模型变得简单了,不要急,我会解释的!

哈哈。我们想,如果k=N(N为训练样本的个数),那么无论输入实例是什么,都将简单地预测它属于在训练实例中最多的类。这时,模型是不是非常简单,这相当于你压根就没有训练模型呀!直接拿训练数据统计了一下各个数据的类别,找最大的而已!这好像下图所示:

我们统计了黑色圆形是8个,长方形个数是7个,那么哈哈,如果k=N,我就得出结论了,红色五边形是属于黑色圆形的(明显是错误的好不)

这个时候,模型过于简单,完全忽略训练数据实例中的大量有用信息,是不可取的。

恩,k值既不能过大,也不能过小,在我举的这个例子中,我们k值的选择,在下图红色圆边界之间这个范围是最好的,如下图:


(注:这里只是为了更好让大家理解,真实例子中不可能只有俩维特征,但是原理是一样的1,我们就是想找到较好的k值大小)

那么我们一般怎么选取呢?李航博士书上讲到,我们一般选取一个较小的数值,通常采取 交叉验证法来选取最优的k值。(也就是说,选取k值很重要的关键是实验调参,类似于神经网络选取多少层这种,通过调整超参数来得到一个较好的结果)

3.2距离的度量

在上文中说到,k近邻算法是在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,我们就说预测点属于哪个类。

定义中所说的最邻近是如何度量呢?我们怎么知道谁跟测试点最邻近。这里就会引出我们几种度量俩个点之间距离的标准。

我们可以有以下几种度量方式:


其中当p=2的时候,就是我们最常见的欧式距离,我们也一般都用欧式距离来衡量我们高维空间中俩点的距离。

在实际应用中,距离函数的选择应该根据数据的特性和分析的需要而定,一般选取p=2欧式距离表示,这不是本文的重点。

在实际应用中,距离函数的选择应该根据数据的特性和分析的需要而定,一般选取p=2欧式距离表示,这不是本文的重点。

3.3特征归一化的必要性

所以我们应该让每个特征都是同等重要的!这也是我们要归一化的原因!归一化公式如下:



讲到这里,k近邻算法基本内容我们已经讲完了。除去之后为了提高查找效率提出的kd树外,算法的原理,应用等方面已经讲解完毕,由于每篇文章内容不宜太多,kd树等知识下篇讲解,这里总结一下本文讲的内容。

4.将kNN分类器用于的场景

人们将kNN分类器用于:

  • Amazon上的物品推荐
  • 消费者信贷风险的评估
  • 利用图像分析技术对地表分类
  • 人脸识别
  • 识别图像中的人物性别
  • 推荐Web网页
  • 推荐度假套餐

5.将kNN分类器用于的场景

其实,kNN算法非常简单,可以说在训练过程中基本没有算法参与,只有存储训练样本。可以说KNN算法实际上是一种识记类算法。因此,kNN虽然简单,但是其明显包含了以下几个缺点:

  • 整个训练过程需要将所有的训练样本极其输出label存储起来,因此,空间成本很大

  • 测试过程中,每个测试样本都需要与所有的训练样本进行比较,运行时间成本很大

  • 采用距离比较的方式,分类准确率不高

6.本文的一点总结

1.我们提出了k近邻算法,算法的核心思想是,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分类到这个类中。

更通俗说一遍算法的过程,来了一个新的输入实例,我们算出该实例与每一个训练点的距离(这里的复杂度为0(n)比较大,所以引出了下文的kd树等结构),然后找到前k个,这k个哪个类别数最多,我们就判断新的输入实例就是哪类!

2.与该实例最近邻的k个实例,这个最近邻的定义是通过不同距离函数来定义,我们最常用的是欧式距离

3.为了保证每个特征同等重要性,我们这里对每个特征进行归一化

4.k值的选取,既不能太大,也不能太小,何值为最好,需要实验调整参数确定!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容