最简单易懂的KNN最近邻算法

在阅读《图解算法》时,感觉此书对于KNN算法的讲解非常生动形象,故按自己思路重新整理,与大家分享

1.区别一种水果

假设在一张桌子上按水果特征摆着两堆水果。一堆是橙子,一堆是柚子,

现在,在这个桌子的一处(还是按特征摆放)出现了一个你并不知道的水果,那么你该如何判断这是什么水果呢?是柚子还是橙子?

最简单易懂的KNN最近邻算法

我们一般思路是不是就是看这个水果和周围某几个水果的距离是多少,从而来判断它更像什么水果,对吧。

那么刚刚这个思路,就是K最邻近(k-nearest neighbors,KNN)算法进行了分类

2.分析电影口味

那么挖深一点,我们上面只是根据两个特征(个头,颜色)来对一个未知水果进行判断,那么我们可不可能还会存在其他特征呢?

下面我们使用Netflix的推荐系统进行介绍

一般影视的推荐系统,都是将观影人群按照相似度进行分类,就是假如你的观影口味与A很相似,那么在A观看了某部影片之后,系统很可能就会给你推送相同的影片。那么系统是如何知道你与A有相同的口味呢?
最简单易懂的KNN最近邻算法

我们现在选取了三名用户,来判断他们谁更加类似,注意,此时需要判断的因素可不止两种了!

那么对于一个五维空间,我们其实还是可以按照类似的方法进行计算!

这样通过计算,我们便可以发现,Priyanka的喜好更接近于Justin而不是Morpheus,那么这时候作为Netflix,它一定会知道怎么做的!

3.总结

从上面两个简单的例子,想必大家对KNN算法的思路有一个基本的印象了吧

  1. 对需要判断的东西抽象出一定的特征,在上述例子中,水果的颜色和大小,电影的类型,其实都是特征。那么在机器学习中,有一个更专业的名词叫做维度,即这一个东西有多少维度。
  2. 通过已经得到的特征和结论,对于未知结论但已知特征的东西进行算法分析,然后通过比较结果的大小来预测未知的结论

打个比方,你开一家蛋糕店,蛋糕的销量受到天气,气温,日期等多个特征的影响,那么你在准备一天需要准备多少蛋糕时,是否就需要根据以前的销售记录,结合特征来进行预测,从而能合理知晓今天需要多少蛋糕。

在上述两个步骤中,其实就对应了KNN算法的两个基本工作–分类与回归。

分类就是编组,设定特征

回归就是预测结果(如一个数字)。