在机器学习里,要说哪一款非常实用的分类和回归工具,那不得不提到K 近邻算法(KNN),大家对它了解吗?下面这篇文章的笔者整理分享关于此的内容,感兴趣的同学过来了解了解吧!
K 近邻算法(KNN),听起来很高大上,其实本质就是一个“找邻居”的游戏。在机器学习的世界里,它可是一款非常实用的分类和回归工具。
它棱角分明,具有可解释性强,易实现的优点,在很多应用中扮演重要的角色。我们将一起探究它的算法原理、案例以及适用边界,一起慢慢地拆解它,使用它。
一、KNN算法的原理KNN(K-Nearest Neighbors)是一种基于实例的学习方法,它通过测量新样本与已知样本之间的距离,找到距离最近的 K 个邻居,然后根据这 K 个邻居的类别来决定新样本的类别。
概念中提到了一个词“最近”,那我们该如何定义样本间距离的远近呢?
通常来讲,我们会通过数学公式计算两个样本点之间的距离,最常见的一个计算方法就是欧式距离(Euclidean Space)。
最后再做一个简单的统计,找到距离待测样本点最近的 K 个样本点中,哪些类别最多。当然除了欧式距离,还有很多距离计算的方式,如曼哈顿距离、余弦距离等等。
总得来说,它不仅适用于分类问题,还能处理回归问题。
二、KNN案例之挑选适合的商店假设你是一个刚搬到城市的农村青年,对城市生活一无所知。但是,你有许多热情的邻居,他们愿意帮助你适应新环境。你家的周围有两家商店,一家卖水果,一家卖蔬菜。你想知道哪家商店更适合你,于是你开始了探索。
你首先去水果店,店主热情地迎接你,告诉你水果的新鲜程度和价格。然后你去蔬菜店,店主也热情地迎接你,告诉你蔬菜的新鲜程度和价格。你发现,水果店的水果种类更多,价格也更贵;而蔬菜店的价格相对便宜,种类虽然没有那么多,但也很丰富。最后,你根据自己的需求,决定经常去蔬菜店购买蔬菜。
这个过程,就像 KNN 算法的工作原理。你就像是待分类的新样本,两家商店就像是已知的类别。你通过比较两家商店的相似度(也就是水果和蔬菜的新鲜程度和价格),找到了距离你最近的那个邻居(也就是最适合你的蔬菜店),然后决定了自己的选择。
三、KNN算法的应用步骤计算方式,主要有以下几个步骤:
准备数据:收集一批已知类别的样本,构成训练集。
计算距离:对于每一个新样本,计算它与训练集中每个样本的距离。
找到最近邻:选出距离新样本最近的 K 个样本。
确定类别:根据这 K 个邻居的类别,决定新样本的类别。
关于K值的问题:需要注意的是K值是人工假定的选取样本数量,它会直接影响到模型的预测效果。
当 K 越小的时候,模型就越容易过拟合,因为预测结果与最近一个样本点强相关。而 K 越大的时候,就越容易欠拟合,因为预测结果要考虑所有样本的情况,就相当于没有预测。
所以,对于 K 的取值,一种有效的办法就是从 1开始不断地尝试,并对比准确率,然后选取效果最好的那个 K 值。
四、KNN算法的适用边界和优缺点【优点】简单易实现,可以快速解决多分类问题,并且相对于线性分类算法用一条直线来分割数据的方式来说,KNN 对于边界不规则的数据预测效果会更好。
【缺点】KNN 对于数据的容错性很低。比如,当待测样本周围的 K 个数据样本中存在错误样本的时候,就会对预测结果有很大的影响。KNN 一般适用于样本数较少的数据集。因为它在处理数据量比较大的样本时会非常耗时,所以,在实际工业中,我们一般会选用 Kd-tree 来进行预测。
【适用场景】在数据量不多,特征都相对单一的业务场景下很适合选择 KNN 算法。
五、最后的话总的来说,KNN 算法就像是一个热情友善的邻居,它用自己的智慧和经验,帮助你解决生活中的问题。只要你理解它的原理,掌握它的计算方法,就能充分利用它的优点,克服它的缺点,它可以快速的帮你实现目标。
如果用一句话来概括它,那就是“近朱者赤,近墨者黑”。