跳转至

懒惰学习

K 近邻算法

K 近邻(k-Nearest Neighbor, KNN)是一种监督学习方法。一句话概括就是「近朱者赤近墨者黑」,每一个测试样本的分类或回归结果取决于在某种距离度量下的最近的 k 个邻居的性质。不需要训练,可以根据检测样本实时预测,即懒惰学习。为了实现上述监督学习的效果,我们需要解决以下两个问题:

  • 如何确定「距离度量」的准则?就那么几种,一个一个试即可;
  • 如何定义「分类结果」的标签?分类任务是 k 个邻居中最多类别的标签,回归任务是 k 个邻居中最多类别标签的均值。

KNN 变种:最近邻子空间分类器 (Nearest Subspace Classifier, NS)。同样是懒惰学习的方式,对每一个测试样本计算到「训练样本形成的所有子空间」之间的距离,并将当前样本的类别判定为距离最近的子空间对应的类别。这里有两个问题:

  1. 子空间是怎么来的?这是基于先验假设而来,也就是说所有的子空间都是人为提前定义好的;
  2. 如何计算测试样本到子空间的最小距离?对于高维特征空间,最小距离的计算并不容易,为了计算最小距离,本质上就转变成了一个线性回归的拟合问题,即拟合出一组最佳参数使得当前样本到子空间的距离最小。