开言
从本篇起,将开始我们的机器学习算法系列文章。
机器学习算法的作用不言而喻,是数据挖掘的核心部分也是比较难的一部分。但是别担心,跟着文章一步步来。
现在网上有很多现有的机器学习框架,例如scikit-learn,很方便,直接调用就可以。那我们为什么还要费时间学习这些算法的原理呢? 因为如果不懂得这些算法背后的理论,逻辑,可以很肯定的说你将无法灵活运用这些框架。
本系列文章力争将这些算法原理,重点,应用描述得简单易懂,深入浅出。那就让我们开始吧。
k-近邻(KNN)
从最简单的 K 最近邻(kNN,k-NearestNeighbor)开始。为什么说它最简单呢。因为,不需要高深的数学知识,而且直观易懂。
下面我们通过一个场景代入来了解 KNN 的原理。 相信我们都投过票,最后我们选出的结果是不是票数最高的那个。 投票的结果决策依据便是多数表决法,这也是 KNN 的底层思想。
现在有5个日本男生和5个韩国男生,然后第十一个男生的国籍是未知的,我们叫他为 Tony ,需要你来判断他是来自韩国还是日本的。经过我们对头发,身份,五官等特征的比对,发现跟 Tony 比较像的5个人里,有4个是韩国人,1个是日本人,那我们是不是可以说,Tony是韩国人的概率大一点,从而初步判定他是韩国人。
前面我们判断 Tony 是哪国人用的方法,其实就是我们今天要讲 KNN 算法。 KNN 的原理就是通过当前对象跟已知类别对象对比,选取最像的前 k 个对像,看看这 k 个对象中哪个类别最多,就认为这个对象就是 这个类别,从而得出这个未知对象的类别。是不是很简单?
那么怎么判断像不像呢?根据对象之间的距离大小来判断。
数学理论
前面我们已经了解了 KNN 算法的基本思想,下面我们来通过数学理论来解决 ‘多像’ 的问题,也就是如何计算对象之间的距离。
计算对象之间的距离,有很多公式,比如欧拉距离,这是最简单的,是我们初中学的。除此之外还有曼哈顿距离,闵可夫斯基距离等,本文只用欧拉距离。