什么是k-近邻算法

K-近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。简单来说就是根据邻居的特征来判断样本的特征。

 k-近邻算法的优缺点

优点:

1.k近邻算法是一种在线技术,新数据可以直接加入数据集而不必进行重新训练,

2.k近邻算法理论简单,容易实现。

3.准确性高,对异常值和噪声有较高的容忍度。

4.k近邻算法天生就支持多分类,区别与感知机、逻辑回归、SVM。

缺点:

1.基本的 k近邻算法每预测一个“点”的分类都会重新进行一次全局运算,对于样本容量大的数据集计算量比较大。

2.K近邻算法容易导致维度灾难,在高维空间中计算距离的时候,就会变得非常远;样本不平衡时,预测偏差比较大,k值大小的选择得依靠经验或者交叉验证得到。k的选择可以使用交叉验证,也可以使用网格搜索。k的值越大,模型的偏差越大,对噪声数据越不敏感,当 k的值很大的时候,可能造成模型欠拟合。k的值越小,模型的方差就会越大,当 k的值很小的时候,就会造成模型的过拟合。

k-近邻算法的公式

两个样本的距离可以通过如下公式计算,又叫欧式距离

比如:a(a1,a2,a3)和b(b1,b2,b3)的距离