k-NN算法简介

1. 算法简介

        k近邻法(k-nearest neighbor)是一种基本分类与回归方法。

算法思想:

        给定一个训练集,其中的实例类别已定,分类时,对新的实例,根据其k个最邻近的训练实例的类别,通过多数表决等方式进行预测。(给定一个训练集,对于新输入的实例,在训练数据集中找到与该实例最近邻的k个实例,这k个实例的多数属于某个类,就把该实例分为这个类。)

        因此,k近邻法不具有显示学习过程。knn实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。

3. k近邻模型

        knn使用的模型对应于基于训练数据集对特征空间的一个划分,其模型组成三要素:

3.1 距离度量

        如曼哈顿距离、欧氏距离等;

3.2 k值的选择

        选择不同的k值会对knn的结果产生很大的影响。k值的减小意味着整体模型变得复杂(对噪声点特别敏感),容易发生过拟合,k值的增大意味着整体模型变得简单。

        k值的选择反映了对近似误差与估计误差之间的权衡;在应用中,k一般取一个比较小的数值,通常采用交叉验证来选取最优的k值。

3.3 分类决策规则

        多数投票表决,对应于经验风险最小化。

4. kd树

        KNN的实现需要考虑如何快速搜索k个最近邻点,kd树便是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。kd树是二叉树,表示对k维空间的一个划分。

4.1 kd树的构造

        构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分,构成一系列的k维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。

4.2 kd树的搜索

        利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。如果实例点是随机分布的,kd树搜索的平均计算复杂度为O(logN)。

        kd树更适合用于训练实例数远大于空间维数时的k近邻搜索。当空间维数接近训练实例数时,它的效率会迅速下降,几乎接近线性扫描。

猜你喜欢

转载自blog.csdn.net/MusicDancing/article/details/130013989