介绍
k近邻(k-Nearest Neighbor 简称KNN)学习是一种常用的监督学习算法,给定一个测试样本,基于某种距离度量来找出训练集的所有样本中与该样本最为靠近的k个样本,然后根据这k个邻居的信息进行预测。
什么时候用到KNN?
knn算法既能够处理分类任务也能进行回归分析,两种任务所采用的方法略有不同。
- 分类任务:通常使用“投票法”,将选择出的k个邻居样本出现最多的类别标记作为最终的预测结果。
- 回归任务:使用“平均法”,测试样本的最终输出为k个邻居样本的实值输出标记的平均值;或者按照加权平均的方式求得,距离越近,权重越大。
KNN是如何工作的?
KNN算法是懒惰学习的代表,因为它没有显示的训练过程。KNN算法是基于特征相似度的,因此确定K值是整个KNN算法的重中之重。下面举个例子说明KNN的预测过程。

优缺点分析
pros
- 能够承担多任务,即可分类又可回归。
- 可解释性极强,算法逻辑通俗易懂。
- 整个预测过程的周期较短。
cons
- 计算成本十分昂贵,由于算法保留了所有的训练数据。
- 高存储的要求。
- 对于数据的规模和非相关的特征来说十分敏感。
参考
《机器学习》- 周志华
Introduction to k-Nearest Neighbors: Simplified (with implementation in Python)
A Quick Introduction to K-Nearest Neighbors Algorithm