机器学习之K最近邻居KNN

K最近邻居(K-Nearest Neighbor, KNN)算法是一种简单而强大的监督学习算法。它可以用于分类回归问题。KNN的核心思想是“物以类聚”,即一个数据点的类别由它最接近的K个邻居的类别决定
 

1. KNN的工作原理

KNN是一种基于实例的学习(Instance-based Learning)或懒惰学习(Lazy Learning)方法。它没有明确的训练过程,而是直接存储整个训练数据集。当需要对一个新数据点进行预测时,它会执行以下步骤:

1)选择K值:首先,选择一个正整数K,作为要考虑的最近邻居数量

2)计算距离:计算新数据点与训练集中所有数据点之间的距离。常用的距离度量包括欧几里得距离(Euclidean distance)曼哈顿距离。概念可 参考:机器学习之K-均值算法

3)找到K个最近邻居:根据计算出的距离,找到与新数据点最接近的K个训练样本。

4)进行预测

    • 分类:对这K个邻居的类别进行多数投票,将票数最多的类别作为新数据点的预测类别
    • 回归:计算这K个邻居的数值的平均值,将平均值作为新数据点的预测值。 
 
KNN的关键要素
  • K值的选择:K值的选择对KNN的性能至关重要。
    • K值过小:模型会过度依赖于局部数据,容易受到噪声异常值的影响,导致过拟合
    • K值过大:模型会变得过于平滑,可能会将不同类别的数据点包含进来,导致欠拟合
    • 通常可以通过交叉验证等方法来选择最优的K值。
  • 距离度量:选择合适的距离度量方式,以准确衡量数据点之间的相似度。对于不同类型的数据,可以选择不同的距离公式。
  • 特征缩放:由于KNN依赖于距离计算,因此不同特征的尺度差异会影响结果。通常需要对数据进行归一化或标准化以确保所有特征对距离计算的贡献是公平的

2. 优点和缺点

优点:
  • 简单易懂:算法思想简单,易于理解和实现。
  • 无需训练:没有显式的训练过程,所有工作都在预测阶段完成。
  • 可解释性强:预测结果直接来源于最近邻居,可以方便地解释。
  • 非参数:对数据没有特定的假设,适用于各种类型的数据。 
缺点:
  • 计算量大:在预测阶段,需要计算新数据点与所有训练样本的距离,当数据集较大时,计算成本很高。
  • 内存开销大:需要存储整个训练数据集,对内存要求较高。
  • 对维度敏感:当特征维度较高时,距离度量会变得不那么可靠,这就是维度灾难(Curse of Dimensionality)问题
  • 对不均衡数据敏感:如果数据集中某个类别的样本数量远多于其他类别,多数投票可能会偏向于样本量大的类别。
 

3. 应用场景

尽管存在一些缺点,KNN因其简单和有效性,在许多领域仍有应用:
  • 推荐系统:通过找到与用户最相似的其他用户,向其推荐商品或内容。
  • 图像识别:识别手写数字或进行图像分类。
  • 异常检测:识别出那些与周围邻居差异很大的数据点。

参考:

  1. 明可夫斯基距离

 

posted @ 2025-10-29 17:24  PKICA  阅读(11)  评论(0)    收藏  举报