数据挖掘K近邻(KNN)算法

  • 1 KNN描述

      k近邻算法是一种基本分类与回归算法,是一种监督式学习。

  • KNN算法思想

       基本思想是在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别。俗话叫,“随大流”。

  简单来说,KNN可以看成:有那么一堆你已经知道分类的数据,然后当一个新的数据进入的时候,就开始跟训练里的每个点求距离,然后挑出离这个数据最近的K个点,看看这K个点属于什么类型,然后用少数服从多数的原则,给新数据归类。

  • 3 k近邻模型

       k近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素距离度量、k值的选择分类决策规则决定。

       k近邻法中,当训练集、距离度量、k值及分类决策规则(如多数表决)确定后,对于任何一个新的输入实例,它所属的类唯一确定。

       k值的选择会对k近邻法的结果产生重大的影响。如果选择小的k值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小, K值的减小就意味着整体模型变得复杂,容易发生过拟合,即增大了估计误差;如果选择的k值较大就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。

       在应用中,k值一般去一个比较小的数。通常采用交叉验证法来选取一个最优的k值。

近似误差与估计误差:

近似误差:可以理解为对现有训练集的训练误差。 
估计误差:可以理解为对测试集的测试误差。

近似误差关注训练集,如果近似误差小了会出现过拟合的现象,对现有的训练集能有很好的预测,但是对未知的测试样本将会出现较大偏差的预测。模型本身不是最接近最佳模型。

  • 4 k近邻法的优缺点

优点:

  1. 理论成熟,思想简单,既可以用来做分类又可以做回归;
  2. 可以用于非线性分类;
  3. 训练时间复杂度O(n)比支持向量机之类的算法低;
  4. 和朴素贝叶斯之类的算法比,对数据没有假设,准确度高,对异常点不敏感。

缺点:

  1. 计算量大,尤其是特征数非常多的时候;
  2. 样本不平衡的时候,对稀有类别的预测准确率低;
  3. KD树,球树之类的模型建立需要大量的内存;
  4. 相比决策树模型,KNN模型的可解释性不强。
  • 5.kd树

         实现k近邻法时,主要考虑如何对训练数据进行快速的k近邻搜索。k近邻法最简单的实现是线性扫描,需要计算输入实例和每一个训练实例之间的距离,当训练集很大时,计算非常耗时,这种方法是不行的。为了提高k近邻搜索的效率,可以考虑用特殊的结构存储训练数据。

        kd树是为了降低KNN的时间复杂度,提升其性能的一种数据结构,是一种二叉树。 使用 kd树,可以对k维空间中的样本点进行存储以便对其进行快速搜索。构造kd树,相当于不断地用垂直于坐标轴的超平面将k维空间进行切分,构成一系列的k维超矩形区域。kd树的每一个节点对应于一个k维超矩形区域。
 

你可能感兴趣的:(数据挖掘经典算法)