优点和缺点
一般而言,k-NN分类器有两个重要参数:邻居数量以及数据点之间的距离计算方式。
k-NN的优势之一是该模型非常易于理解,并且通常无需进行大量参数调整的情况下就能获得比较不错的性能表现。在考虑使用更高级的技术之前,使用此算法是一种很好的基线方法。k-NN模型的建立通常会比较快,但是当训练集非常大时(无论是特征数还是样本数量),预测时耗费的时间会很多。此外,使用k-NN算法时,对数据进行预处理非常重要。该方法通常在具有许多特征(数百或更多)的数据集上表现不佳,并且对于大多数特征在大多数情况下为0的数据集(所谓的稀疏数据集)而言尤其糟糕。
结论
k-NN算法是一种简单有效的数据分类方法,它是基于实例学习的一种机器学习算法,需要通过数据实例来执行机器学习算法,该算法必须携带完整的数据集。而对于大型的数据集,需要耗费比较大的存储。此外,还需要计算数据库中每个数据点距离预测点的的距离,这个过程会很麻烦,且耗时多。另一个缺点是k-NN算法不能够让你了解数据的基础结构,无法知道每个类别的“平均”或“范例”具体是什么样子。
因此,虽然k-NN算法易于理解,但由于预测速度慢且无法处理多特征问题,因此在实践中并不常用。
参考资料
Peter Harrington的机器学习(2012)