[与线性回归等其他算法不同,KNN在训练阶段似乎不执行任何计算。像线性回归一样,它可以在训练阶段找到系数。但是KNN呢?
[在训练阶段,KNN整理数据(建立索引的过程),以便在推理阶段有效地找到最接近的邻居。否则,它必须将推理期间的每个新案例与整个数据集进行比较,从而使其效率很低。
您可以在https://scikit-learn.org/stable/modules/neighbors.html#nearest-neighbor-algorithms上了解更多信息>
KNN
属于惰性学习者组。与诸如logistic regression
,svms
,neural nets
之类的渴望学习者相反,懒惰学习者只是将训练数据存储在内存中。然后,在推理过程中,它会从训练数据中找到K个最近的邻居,以便对新实例进行分类。
KNN是基于实例的方法,它完全依赖于训练示例,换句话说,它会记住所有训练示例。因此,在分类的情况下,只要出现任何示例,它都会计算输入示例与所有训练示例之间的欧式距离,并根据距离返回最接近的训练示例的标签。
Knn是个懒惰的学习者。这意味着,像其他算法在训练阶段(线性回归等)学习一样,Knn在训练阶段学习。实际上,它只是在训练时将数据点存储在RAM中。