k-近邻算法(KNN)原理

KNN算法概述

K-近邻算法(KNN,K-NearestNeighbor)是最常用的分类算法之一,属于有监督学习中的分类算法。

先来看个例子:
在这里插入图片描述
如图,对于一个待分类点(绿色圆点),
如果K = 3,绿色圆点最近的3个邻居是2个红色三角形和1个蓝色正方形,少数服从多数,基于统计的方法,判定该分类点属于红色三角形一类。
如果K = 5,绿色圆点最近的5个邻居是2个红色三角形和3个蓝色正方形,少数服从多数,基于统计的方法,判定该分类点属于蓝色正方形一类。

KNN算法基本思想:

对待分类的点:
①计算已知类别数据集中的点与该点的距离
②按照距离依次排序
③选取与该点距离最小的K个点
④确定前K个点所在类别的出现概率
⑤返回前K个点出现频率最高的类别作为该点的预测分类
(看到这里应该明白为什么叫K-NearestNeighbor算法了吧)

KNN算法特点:

KNN算法是一种lazy-learning算法,KNN算法分类器不需要使用训练集进行训练,训练时间复杂度为0 。
但是,因为KNN分类器直接对训练样本进行分类,计算比较每个样本离待分类点的距离,所以KNN分类的计算复杂度与训练集中的样本数成正比。

KNN算法的优缺点

优点:
原理简单,模型训练时间快,分类预测的效果较好。
缺点:对异常值不敏感,预测效率低

距离的计算

通常KNN算法中使用欧式距离,以二维平面为例,二维空间两个点的欧式距离计算公式如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200710204521427.png

K值的选择

对于K值的选择,一般通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据),从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。通过交叉验证计算方差后大致会得到下面这样的图:
在这里插入图片描述
增大k时,错误率会先降低,因为有周围更多的样本可以借鉴了,分类效果会变好,但当K增大到一定程度时效果又会逐渐变差,因为K越大就越接近整体样本的分布。

参考文章:
https://www.cnblogs.com/listenfwind/p/10311496.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值