K 近邻算法(K-Nearest Neighbor),简称 KNN 算法。
它是一种用来解决分类问题的算法,简单来说,就是用来预测用户是男是女,或者是否喜欢某件商品。分类算法有很多,只不过,不同算法的实现机制不同,我们今天要讲的 KNN 算法是基于距离计算的方式来解决分类问题的。
如何理解 KNN 算法
KNN 的原理就是,对于一个犹豫不决的选择,我们先参考周围最近的一些已经做出的选择,然后再做出相似的决定。
就是对于一个待测的样本点,我们去参考周围最近的已知样本点的分类,如果周围最近的 K 个样本点属于第一类,我们就可以把这个待测样本点归于第一类。
应用场景:预测候选人能不能拿到 Offer
在已知公司历史候选者姓名、工作年限、每月收,以及最终是否拿到公司 Offer 的情况下,通过一个算法模型来预测一个新的候选者是否能通过公司的招聘考核,最终拿到 Offer。
当 K 越小的时候,模型就越容易过拟合,因为预测结果与最近一个样本点强相关。
而 K 越大的时候,就越容易欠拟合,因为预测结果要考虑所有样本的情况,就相当于没有预测。
所以,对于 K 的取值,一种有效的办法就是从 1 开始不断地尝试,并对比准确率,然后选取效果最好的那个 K 值。
KNN 算法优缺点
KNN 算法的优点
1 简单易懂,实现起来非常容易,简单到都不需要进行训练了,只要把样本数据整理好,就可以直接预测新数据了。
2 KNN 在处理边界不规则数据的分类问题时要比线性分类器的效果好。
KNN 算法的缺点
1 首先是它只适合小数据集,因为 KNN 是基于距离的分类算法,如果数据量特别大的时候,就需要计算待测样本和每一个已有样本之间的距离,那样计算量是非常大的。
2 KNN 算法对数据容错性偏低。因为 KNN 对于数据样本的质量依赖度很高,如果训练数据集中存在错误的样本数据,并且又刚好在待测样本的旁边,这样就会直接导致预测的数据不准确。




