算法:KNN算法

KNN(K-NearestNeighbor)是一种简单的机器学习分类算法,基于新点与其最近K个邻居的距离进行分类。K值的选择影响分类结果,小K值可能导致过拟合,大K值则可能使算法失去意义。距离通常用欧式距离计算,但也有其他方式。KNN算法在大数据量时适用,但内存需求高且时间复杂度较高。
摘要由CSDN通过智能技术生成

KNN 全称(K-Nearest Neighbor),意为最近的K个邻居,是一种简单方便的机器学习分类算法。

KNN算法

原理:当新加入一个点,来计算离他最近的K个点,根据这K个点的类型数量对新加入的点进行分类。

而这个k的取值对于KNN算法来说至关重要

如图所示:图中有两个类型,其中黑点是新加入的点,接下来我们来看看KNN算法如何为他进行分类。

当K=3时:黑点 圈中有 两个红色三角形,一个蓝色正方形,由此可以看出来黑点属于红色三角类型

当K=5时:黑点 圈中有 两个红色三角形,四蓝色正方形,由此可以看出来黑点属于蓝色正方形类型

距离计算

KNN算法通常用欧式距离进行距离计算(当然有时候也会用曼哈顿距离,切比雪夫距离来算):

二维空间距离计算

二维空间欧式距离

 多维空间距离计算

多维空间欧式距离

 通过距离计算后,我们对点进行分类,也可以使用堆来对分类的点进行存储,方便分类。

K值选择

如果K值选择的过于小,则会导致过拟合,误差很大,随着K值增大错误率会降低,周围有更多的样本供你借鉴,但是K值越发增大就会导致K值接近样本值,KNN就失去了意义,错误率也将直线上升,重要的是找到K曲线的临界点。

如图所示(别人的图)

K值与Error

 KNN的优缺点

  • 优点:

① 简单易用

② 对异常值不敏感(只看分类数量)

③ 效果好,精确度高

  • 缺点:

对计算机内存要求高,所有数据由该算法存储

时间复杂度高(可以用KDtree解决

何时该选?

当需要分类算法且数据量要求很大时选择KNN算法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值