机器学习——K近邻算法
作者头像
  • 韩景昱
  • 2020-09-17 08:37:06 1

k 近邻法及其应用

k 近邻法(k-NN)是一种基于实例的学习方法,主要应用于分类任务。它通过分析特征空间中的相似性来进行预测,而不像其他一些机器学习算法那样通过参数优化来寻找最佳模型。本文将介绍k-NN的核心概念,并讨论几个关键问题,包括距离度量、k-d树搜索算法等。

一、算法

输入: - 训练集:包含实例特征和实例类别。 - 实例:待分类的实例所属的类别。

在给定的距离度量下,我们可以找到最近的k个实例。具体而言,k-NN算法会查找距离目标实例最近的k个点,并依据这k个点中出现次数最多的类别作为预测结果。

步骤: - 计算目标实例与训练集中各实例之间的距离。 - 找到距离最近的k个实例。 - 计算这k个实例中各类别的频率。 - 输出频率最高的类别作为预测结果。

二、模型

根据模型分类,k-NN模型属于非概率模型。与感知机不同,k-NN不需要确定未知参数,而是直接从训练数据中获得预测结果。

1. 距离度量

k-NN的基本思想是在特征空间中,距离越近的实例具有更高的相似度。距离度量的方式多样,常见的包括闵可夫斯基距离、曼哈顿距离和欧几里得距离。

  • 闵可夫斯基距离(Minkowski distance): 当 ( p = 1 ) 时,称为曼哈顿距离;当 ( p = 2 ) 时,称为欧几里得距离。

    python def L(x, y, p=2): if len(x) == len(y) and len(x) > 1: sum = 0 for i in range(len(x)): sum += abs(x[i] - y[i]) ** p return sum ** (1 / p) else: return 0

  • 曼哈顿距离:只允许沿着坐标轴方向移动,相当于城市中的出租车行驶路径。

  • 欧几里得距离:两点之间直线距离,是最常用的度量方式。

2. 切比雪夫距离

切比雪夫距离是指两点之间最大坐标差的绝对值。例如,在平面上,切比雪夫距离计算公式为:

[ d{infty}(x, y) = max(|x1 - y1|, |x2 - y_2|) ]

三、k值选择与误差

k值的选择直接影响模型性能。较小的k值意味着单个样本的影响较大,模型复杂度较高,容易导致过拟合;较大的k值则会使模型更加平滑,但可能造成欠拟合。

通常,我们使用交叉验证方法来确定最佳的k值。

四、决策规则

k-NN的决策规则是“多数表决”,即选择距离目标实例最近的k个实例中出现频率最高的类别作为预测结果。

五、kd树搜索算法

kd树是一种高效的空间划分数据结构,适用于多维数据的快速搜索。kd树的每个节点记录了一个特征坐标、切分轴以及指向左枝和右枝的指针。

构建kd树

kd树的构建过程涉及递归地选择切分轴,并将数据集按照选定轴的中位数进行排序和分割。

kNN算法在kd树上的应用

利用kd树,可以在O(DlogN)的时间复杂度内找到最近的k个实例,其中D是维度,N是数据集大小。

通过上述方法,我们可以有效地实现k-NN算法,从而提高分类任务的准确性和效率。

    本文来源:图灵汇
责任编辑: : 韩景昱
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
近邻算法机器学习
    下一篇