机器学习系列03——K近邻算法(KNN)
【前言】上一篇文章写到了机器学习中的一些基础概念,不是特别细致,可能看了之后印象也不是太深刻,不过后面接着写的种种算法会不停的提到相关概念,大家跟着看,慢慢的就都熟悉了,今天大年初一,先给大家拜个年了!祝大家新年快乐!
1、摘要
KNN算法是机器学习中常用的分类算法,该算法思想简单,非常容易入门,本文从KNN的基本思想开始文章书写,接着以一个简单的例子引入KNN算法,中间重点讲解了KNN的三要素(掌握了KNN的三要素基本上就能对KNN算法有一个最基本的把握,面试也能扯一扯),然后对KNN的三要素做了较详细的讲解,最后给出了KNN算法常见的一些应用。
2、KNN的基本思想
KNN的基本思想并不复杂,这里一句话简单的说明:K近邻算法: 给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻 近的K个实例, 这K个实例中哪个类别所占的个数多,就把该输入实例划分到这个类中。
3、引入
如下图所示,有两类不同的训练样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。
衡量待分类样本的周围的k个邻居的类别,k个邻居中哪个类别较多,就把该类别判给待分类样本。(K近邻思想)
【注意】:当然K不同,待分类样本被判别的类别也可能不同。
4、K近邻模型三要素
4.1、距离度量(要素之一)
K近邻算法的核心在于找到实例点的邻居。要找邻居就要度量相似性。估量不同样本之间的相似性,通常采用的方法就是计算样本间的“距离”,相似性度量方法有:欧式距离、余弦夹角、曼哈顿距离、切比雪夫距离等。K近邻中距离的度量有多种方法,下面主要讲前三种常用的方法,其他的计算方法读者自行学习。
4.1.1、欧式距离
欧式距离来源于欧式空间中的两点之间的距离公式。
二维平面上的两点:
4.1.2、曼哈顿距离
4.1.3、切比雪夫距离
4.1.4、余弦距离
4.2、K值选择(要素之二,重要)
若k值较小,只有与输入实例较近(相似)的训练实例才会对预测结果起作用,预测结果会对近邻实例点非常敏感。如果近邻实例点恰巧是噪声,预测就会出错。容易发生过拟合。
若k较大,与输入实例较远的(不相似的)训练实例也会对预测起作用,容易使预测出错。k值的增大就意味着整体的模型变简单。
在应用中,k值一般取较小值。通常通过经验或交叉验证法来选取最优的k值。
4.3、分类决策规则(要素之三,重要)
4.3.1、投票表决
少数服从多数,输入实例的k个近邻中哪个类的实例点最多,就分为该类。
4.3.2、加权投票法(优化)
根据距离的远近,对K个近邻的投票进行加权,距离越近则权重越大(比如权重为距离的倒数)。
5、KNN实现过程
(1)计算当前待分类实例与训练数据集中的每个样本实例的距离;
(2)按照距离递增次序排序;
(3)选取与待分类实例距离最小的k个训练实例;
(4)统计这k个实例所属各个类别数;
(5)将统计的类别数最多的类别作为待分类的预测类别
6、KNN的常见应用