用人话讲明白近邻算法KNN

目录

1.KNN简介
2.KNN算法步骤
3.决策边界
4.K的选择
5.要注意的问题
6.小结


1.KNN简介

KNN(K-NearestNeighbor)是机器学习入门级的分类算法,非常非常简单。

上一篇我们讲过Kmeans,初学者常常把这两者搞混,虽然KNN是有监督算法,Kmeans是无监督算法,但KNN和Kmeans确实有相同之处:

  • 两者都有“近朱者赤近墨者黑”的思想,将距离近的样本点划为同一类别

虽然两者名称中都有“K”,但是:

  • KNN中的K指的是近邻个数,也就是最近的K个点 ;
  • Kmeans中的K指的是最终聚类的个数,也就是要将所有点分成K类。

2.KNN算法步骤

我们有一堆样本点,类别已知,如下图左,蓝色为一类,黄色为另一类。现在有个新样本点,也就是图中黑色的叉叉,需要判断它属于哪一类。

KNN做的就是选出距离目标点黑叉叉距离最近的k个点,看这k个点的大多数颜色是什么颜色。这里的距离怎么定义?当然还是可以用我们的老朋友——欧氏距离来度量。

给定两个样本X=(x_{1},x_{2},...,x_{n})Y=(y_{1},y_{2},...,y_{n}),其中n表示特征数 ,X和Y两个向量间的欧氏距离(Euclidean Distance)表示为:
dist_{ed}(X,Y)=\sqrt[2]{(x_{1}-y_{1})^{2}+...+(x_{n}-y_{n})^{2}}


当我们设定k=1时,距离目标点最近的点是黄色,就认为目标点属于黄色那类。当k设为3时,我们可以看到距离最近的三个点,有两个是蓝色,一个是黄色,因此认为目标点属于蓝色的一类。

所以,K的选择不同,得到的结果也会不同,那么最佳的K要怎么确定呢?

3.决策边界

为了理解K对模型的影响,要先说说决策边界这个概念。

还记之前讲的SVM中的线性分类器吗?WX+b=0就是SVM中的决策边界。在二分类问题中,决策边界就把空间划为两部分,两边就对应着两类。


KNN的决策边界一般不是线性的,也就是说KNN是一种非线性分类器,如下图。

image

K越小越容易过拟合,当K=1时,这时只根据单个近邻进行预测,如果离目标点最近的一个点是噪声,就会出错,此时模型复杂度高,稳健性低,决策边界崎岖

但是如果K取的过大,这时与目标点较远的样本点也会对预测起作用,就会导致欠拟合,此时模型变得简单,决策边界变平滑


如果K=N的时候,那么就是取全部的样本点,这样预测新点时,最终结果都是取所有样本点中某分类下最多的点,分类模型就完全失效了。


上图绿线展示的是随着K减小,测试误差值(之前介绍过,回归问题中误差值一般用均方误差,分类问题中误差值指的就是错判率)的变化,我们的目标就是找到测试误差最小时对应的K值。

4.K的选择

找合适的K的过程,也就是“调参”的过程,比较经典的方法是N折交叉验证


上图展示的是5折交叉验证,也就是将已知样本集等分为5份,其中4份作为训练集,1份为验证集,做出5个模型

具体来说:

  1. 把样本集分成5个小的子集,编号为set1、set2、set3、set4、set5;
  2. 先用set1、set2、set3、set4建模,得到model1,并在set5上计算误差error1;
  3. 在用set1、set2、set3、set5建模,得到model2,并在set4上计算误差error2;
  4. 重复以上步骤,建立5个模型,将5个误差值相加后除以5得到平均误差。

了解完交叉验证是什么,我们就可以从k=1开始尝试,计算K=1时的平均误差值,每次K增加2,最终能选到产生最小误差值的K(因为随着K变大,误差值会先变小后变大嘛)。

为什么是每次增加2?因为K最好取奇数。还是用最开始那个例子,如果K取4,最近的4个点有2个蓝色,2个黄色,这时打成了平手,就不好判断目标点属于哪一类了。


5.要注意的问题

第一个要注意的点——标准化!标准化!标准化!

假设我们有两个样本点,有两个特征值,X=(1,200),Y=(2,300),如果不做标准化,他们的欧式距离就是\sqrt{(1-2)^{2}+(200-300)^{2}}=\sqrt{1+10000}。这样计算的距离就会受第二个特征的影响特别大,因为第一个特征的量级与第二个相比太小了。

既可以用极差法消除量级

X_{\text {new }}=\frac{X-\min (X)}{\max (X)-\min (X)}

也可以采用标准差标准化
X_{\text {new}}=\frac{X-\operatorname{mean}(X)}{\operatorname{std}(X)}

第二个要点,KNN实际上是没有训练过程的,因此也没有模型参数(训练数据时就在学习这个参数)。KNN在验证过程中计算验证样本点和已知样本点的距离,这时在学习超参数K,超参数是模型外面的参数。

最后一点,前面我们说的都是用KNN算法解决分类问题,但它同样可以用来处理回归问题,思路也一样,根据K个邻居的Y的平均值(或众数)求未知样本的Y,就将分类问题就转换成了回归问题了。


6.小结

KNN的优点在于原理简单,容易实现,对于边界不规则数据的分类效果好于线性分类器。

当然,也有一些缺点:

  • 要保存全部数据集,需要大量的存储空间;
  • 需要计算每个未知点到全部已知点的距离,非常耗时;
  • 对于不平衡数据效果不好,需要进行改进;
  • 不适用于特征空间维度高的情况。

文中图片的水印网址为本人CSDN博客地址:BeSimple

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

推荐阅读更多精彩内容