前言
KNN(K-Nearest Neighbor)算法是机器学习中算法中最基础和简单的算法之一。它既能用于分类,也能用于回归。本文将在不同的小节详细地介绍 KNN 算法在分类和回归两种任务下的运用原理。
KNN 算法的思想非常简单:对于任意的 n 为输入向量,其对应于特征空间一个点,输出为该特征向量所对应的类别标签或者预测值。KNN 算法在机器学习算法中有一个十分特别的地方,那就是它没有一个显示的学习过程。它实际上的工作原理是利用训练数据对特征向量空间进行划分,并将其划分的结果作为其最终的算法模型。
KNN 分类算法
KNN 分类算法的分类预测过程十分的简单和容易理解:对于一个需要预测的输入向量 x,我们只需要在训练数据集中寻找 k 个与向量 x 最近的向量的集合,然后把 x 的类标预测为这 k 个样本中类标数最多的那一类。
图1 KNN 分类算法示意图
如上图所示,w1、w2、w3 分别代表的是训练集中的三个类别。图中与 xu 最相近的5(k=5)个点如图中箭头所指,很明显与 xu 最相近的5个点中最多的类标为 w1,因此 KNN 算法将 xu 的类别预测为 w1。
基于上述思想给出如下所示的 KNN 算法:
输入: 训练数据集
T={(x1,y1),(x2,y2),...,(xN,yN)}
其中:
xi∈X⊆Rn
为 n 维的实例特征向量。
yi∈Y={c1,c2,...,cK}
为实例的类别,i=1,2,...,N,预测实例 x。
输出: 预测实例 x 所属类别 y。
算法执行步骤:
- 根据给定的距离度量方法(一般情况下使用欧氏距离)在训练集 T 中寻找出与 x 最相近的 k 个样本点,并将这 k 个样本点所表示的集合记为 Nk(x);
- 根据如下所示的多数投票的原则确定实例 x 所属类别 y: