使用K-NN时的维数灾难

K-NN最大的缺陷就是很容易引起维数灾难,在高维空间,数据变得异常稀疏,这就使得即使是最近的邻居数据点,所需计算数据点之间的距离也变得异常得远。这导致了随着变量的增加,训练集所要求的数据量呈指数级的增长,计算量也随之变得异常大。

 

为了解决这个问题,有几种措施可以尝试:

  • 对变量(Predictor)进行降维,可以用PCA等降维方法。
  • 尝试找到计算“最近邻”(almost nearest neighbors)的捷径。

个人觉得这在数据的绝对值要求不高,只要求排序(Ranking)的情况下比较适用,用可以简单计算出来的近似于最近邻的数据来代替真正的最近邻

  • 在某些程序中,可以设置算法直到将预测公式(准则)保存到数据表之后才能进行预测。(可以很好地节省计算时间)。

一方面,最近邻不一定是要找通常意义上的最近邻,而是根据需求寻找特征(不一定是欧氏距离)最相似的数据;另一方面,预测公式或者准则可以直接筛除掉一部分不太可能是最近邻的数据

你可能感兴趣的:(经验总结,机器学习,数据挖掘)