在这篇文章中,我将介绍knn算法,knn算法是机器学习中十大经典算法之一。knn可用于分类和回归问题,其算法原理简单,没有涉及太多数学原理,准确的说用一个数学公式就可以表示整个算法的核心。本文主要包括以下四个问题:
1.什么是knn?
2.knn算法原理
3.如何在KNN中选择k值?
4.knn优缺点
什么是knn
Knn,也叫k近邻,是一种简单的机器学习算法,其中k是一个参数,是指包含的最近邻居的数量。它根据所有样本集中的数据,根据相似性度量选择k个最近的邻居并按邻居的类别进行分类。举葡萄酒分类为例。 两种化学成分称为Rutime和Myricetin。 考虑使用红葡萄酒和白葡萄酒的Rutine与Myricetin含量进行分类,如下图所示。
现在如果我们在数据集中添加一类酒。 我们想知道新酒是红葡萄酒还是白葡萄酒?
运用knn算法我们需要找出其最近邻居的类别是什么。 假设k = 5,新数据点按其五个邻居的类别投票进行分类,由于五个邻居中有四个是红葡萄酒,因此这杯酒的类别也就是红葡萄酒。
knn算法原理
在分类问题中,K-最近邻算法基本上归结为在K个最相邻的实例与给定的“看不见的”观察之间形成多数投票。 根据欧氏距离来计算两个数据点之间的距离度量来定义相似性。 欧氏距离的公式如下:
其他相似性度量方法包括曼哈顿距离、闵可夫斯基距离和汉明距离方法。 我们举一个小例子,通过年龄与贷款来预测安德鲁默认状态(是或否)。
下边开始计算各点的欧氏距离,如下表所示:
在K = 5的情况下,五个最近邻居中有两个为N和三个为 Y。因此我们可以说安德鲁的状态是Y。
如何在KNN中选择k值
KNN算法中的k基于特征相似性选择K的正确值是一个称为参数调整的过程,对于更好的准确性非常重要。 找到k的值并不容易。关于选择K值有以下几点想法:
1)首先,没有固定的方法寻找K的最佳值,因此我们必须在确定一个k值之前多尝试几次。因此我们可以假设部分训练数据“未知”来进行测试。
2)较小的K值可能受到异常值的影响。
3)较大的K值将具有更平滑的决策边界,这也意味着较低的方差和较高的偏差。
4)选择K的另一种方法是交叉验证。 从训练数据集中取出一小部分并将其称为验证数据集,然后使用相同的值来评估不同的k值。比如我们将使用K等于1来预测验证集中每个实例的标签。K等于2,K等于3 ..然后我们看看K的值给了我们验证集上的最佳性能然后我们可以取这个值并将其用作我们算法的最终k值以最小化验证误差。
5)一般来说选择k的值是k = sqrt(N),其中N代表训练数据集中的样本数 。
knn优缺点
KNN的缺点