【机器学习】从入门到实战:深入解析 K 最近邻(KNN)算法在手写数字分类中的应用

K最近邻(K-Nearest Neighbors, KNN)算法

基本原理

K最近邻(KNN)是一种基于距离度量的监督学习算法,既可以用于分类,也可以用于回归任务。其核心思想是,对于一个需要预测的样本点,通过计算它与训练集中所有样本点之间的距离,选取距离最近的 K 个邻居,并基于这些邻居的特性来决定待预测点的输出。KNN 是一种懒惰学习算法,因为它在训练阶段不生成显式的模型,而是在预测阶段利用整个训练数据集来进行计算。

具体来说,KNN 的工作原理可以分为以下几步:

  1. 计算距离:对于每个待预测的数据点,计算它与训练集中所有样本点之间的距离。常用的距离度量包括:

    • 欧氏距离(Euclidean Distance):最常用的距离度量,计算两个点在特征空间中的直线距离。公式为:
      d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x, y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} d(x,y)=i=1n(xiyi)2
    • 曼哈顿距离(Manhattan Distance):适合衡量两个点在网格空间中的路径距离,公式为:
      d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x, y) = \sum_{i=1}^n |x_i - y_i| d(x,y)=i=1nxiyi
    • 切比雪夫距离(Chebyshev Distance):衡量两个点在各个维度上的最大差异,公式为:
      d ( x , y ) = max ⁡ i = 1 n ∣ x i − y i ∣ d(x, y) = \max_{i=1}^n |x_i - y_i| d(x,y)=i=1maxnxiyi
    • 闵可夫斯基距离(Minkowski Distance):是欧氏距离和曼哈顿距离的泛化形式,公式为:
      d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p d(x, y) = \left( \sum_{i=1}^n |x_i - y_i|^p \right)^{\frac{1}{p}} d(x,y)=(i=1nxiyip)p1
      p = 2 p=2 p=2 时为欧氏距离,当 p = 1 p=1 p=1 时为曼哈顿距离。特别地,当 p = 3 p=3 p=3 时,公式为:
      d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ 3 ) 1 3 d(x, y) = \left( \sum_{i=1}^n |x_i - y_i|^3 \right)^{\frac{1}{3}} d(x,y)=(i=1nxiyi3)31
      该距离更注重点之间的较大差异,对某些特定任务可以体现出更高的区分能力。
  2. 选择 K 值:K 值表示最近邻居的数量,是 KNN 的超参数。K 的大小直接影响分类效果:

    • 如果 K K K 值较小,则分类决策主要受局部邻居的影响,可能会对噪声数据过于敏感,导致过拟合。
    • 如果 K K K 值较大,则分类决策会基于更大的邻域,可能会忽略局部结构,导致欠拟合。
  3. 确定邻居:从计算出的距离中选择距离最近的 K 个样本点作为邻居。

  4. 分类或回归

    • 分类:根据 K 个邻居的类别,通过多数投票法决定待分类点的类别。
    • 回归:通过对 K 个邻居的目标值取平均来预测目标值。

特点

  1. 简单直观:KNN 是一种直观易懂的算法,没有复杂的数学模型或训练过程。它直接基于样本间的距离计算和邻居的类别或目标值来进行预测。

  2. 懒惰学习:KNN 属于懒学习算法(Lazy Learning),即在训练阶段不构建显式模型,仅将训练数据存储起来,推迟计算到预测阶段。尽管这种特性简化了训练过程,但预测时计算量较大。

  3. 非参数化:KNN 不对数据的分布做任何假设,因而可以处理复杂的、非线性分布的数据。这使得它非常灵活,但也意味着它对高维数据的表现可能不佳(受维度灾难的影响)。

  4. 计算复杂度高:由于 KNN 需要对每个预测样本计算所有训练样本的距离,因此预测阶段的计算复杂度为 O ( n ⋅ m ) O(n \cdot m) O(nm),其中 n n n 是训练样本数量, m m m 是特征维度。

  5. 对噪声敏感:KNN 对于数据中的异常点和噪声非常敏感。这是因为噪声数据可能会被误选为邻居,从而导致分类错误。通过使用加权距离(较近的邻居权重更大)可以部分缓解此问题。

  6. 维度灾难:在高维空间中,所有样本之间的距离差异可能会变得非常小,难以区分。此时,降维(如 PCA)或特征选择是有效的解决方法。

  7. K 值选择的重要性

    • 小的 K K K 值能够捕获局部模式,但可能受噪声影响较大。
    • 大的 K K K 值能够平滑决策边界,但可能会忽略局部细节,影响预测精度。
    • 通常通过交叉验证来选择合适的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宸码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值