算法:KNN算法

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

KNN算法

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

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

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

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

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

距离计算

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

二维空间距离计算

二维空间欧式距离

 多维空间距离计算

扫描二维码关注公众号,回复: 13467821 查看本文章

多维空间欧式距离

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

K值选择

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

如图所示(别人的图)

K值与Error

 KNN的优缺点

  • 优点:

① 简单易用

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

③ 效果好,精确度高

  • 缺点:

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

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

何时该选?

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

猜你喜欢

转载自blog.csdn.net/GeniusLS/article/details/119941331