简介
kNN(k nearest neighbors),又叫k最邻近算法,是一种根据待分类的样本与已知类别的样本间的距离得到其分类结果的分类算法。
分类过程
- 计算待分类样本与所有已知类别样本的距离值
- 从这些距离值中选取最小的k个
- 根据这k个样本的类别情况,确定待分类的分类结果
注意事项
- 距离的计算
这里的距离其实是一种相似度的概念,机器学习中关于相似度的度量方法参考这篇文章:机器学习中的相似性度量,一般使用欧氏距离。 - k值的选取
- k值的选取可能会影响到分类的结果,特别是对边界值的点的分类处理影响较大
- k值越大,并不能提高准确率,但是会降低算法的效率
- 通常通过cross validation来进行k的选取,从k=1开始进行交叉校验,直到k=n,取能使交叉校验得到最好的结果的k。经验上,通常k小于数据集的平方根。
- 待分类样本类别的确定
- 通常做法,是从k个最邻近的样本中选取类别出现次数最多的类别作为分类结果
- 在数据集不均衡的情况下,可能需要按各类的比例决定投票,这样小类的正确率才不会过低
特点
- 无需训练
- 实现简单
- 计算量大
每一次都要计算未知数据和所有样本