机器学习面试题之KNN——k近邻
1. 简述一下KNN算法的原理
KNN算法利用训练数据集对特征向量空间进行划分。KNN算法的核心思想是在一个含未知样本的空间,可以根据样本最近的k个样本的数据类型来确定未知样本的数据类型。
该算法涉及的3个主要因素是:k值选择,距离度量,分类决策。
2. 如何理解kNN中的k的取值?
-
选取较小的k值时,相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例很相近的样本才会对预测结果起作用。但是,“学习”的估计误差会增大,预测结果会对近邻的实例点非常敏感。如果邻近的实例点恰好是噪声,预测就会出错。换句话说,k值的减小就意味着整体模型会变得复杂,容易过拟合。
-
选取较大的k值是,相当于用较大的领域中的训练实例进行预测,其优点是可以减少学习的估计误差。但缺点是学习的近似误差会增大,这时与输入实例较远的样本也对预测结果起作用,容易使预测发生错误。k值的增大就意味着整体的模型变得简单。
-
在应用中,k值一般取比较小的值,并采用交叉验证法进行调优。
3. 在kNN的样本搜索中,如何进行高效的匹配查找?
- 线性扫描(数据多时,效率低)
- 构建数据索引——Clipping和Overlapping两种。前者划分的空间没有重叠,如k-d树;后者划分的空间相互交叠,如R树。(对R树了解很少,可以之后再去了解)
4. KNN算法有哪些优点和缺点?