ARTICLE

K-近邻算法 (KNN)

K-近邻算法 (K-Nearest Neighbors, KNN) K-近邻算法是一种基于实例的非参数监督学习方法,广泛应用于分类与回归问题。其核心思想直观而简洁:一个样本的类别或数值由其特征空间中距离最近的 k 个邻居的多数投票或均值决定。由于无需显式的训练过程,KNN 被归类为"惰性学习"算法。 算法原理 给定训练集 D = \( x_i, y_i)\_

浏览 0 更新 2025-07-15

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

K-近邻算法是一种基于实例的非参数监督学习方法,广泛应用于分类与回归问题。其核心思想直观而简洁:一个样本的类别或数值由其特征空间中距离最近的 kk 个邻居的多数投票或均值决定。由于无需显式的训练过程,KNN 被归类为"惰性学习"算法。

算法原理

给定训练集 D={(xi,yi)}i=1n\mathcal{D} = \{(\mathbf{x}_i, y_i)\}_{i=1}^n,其中 xiRd\mathbf{x}_i \in \mathbb{R}^d 为特征向量,yiy_i 为标签。对于新样本 x\mathbf{x}^*,KNN 的预测流程如下:

  1. 距离计算:计算 x\mathbf{x}^* 与所有训练样本 xi\mathbf{x}_i 之间的距离 d(x,xi)d(\mathbf{x}^*, \mathbf{x}_i)
  2. 邻居筛选:按距离升序排列,选取前 kk 个最近的样本,构成邻居集合 Nk(x)\mathcal{N}_k(\mathbf{x}^*)
  3. 预测输出:分类问题采用多数投票法: \[ \hat{y} = \arg\max_{c} \sum_{(\mathbf{x}_i, y_i) \in \mathcal{N}_k} \mathbb{I}(y_i = c) \] 回归问题采用均值法y^=1kiNkyi\hat{y} = \frac{1}{k} \sum_{i \in \mathcal{N}_k} y_i,亦可使用距离加权平均以增强近邻的影响力。

距离度量

距离度量的选择直接影响邻居的确定,常用的度量包括:

  • 欧氏距离p=2p=2):d(a,b)=j=1d(ajbj)2d(\mathbf{a}, \mathbf{b}) = \sqrt{\sum_{j=1}^d (a_j - b_j)^2},最常用的选择,适用于连续特征;
  • 曼哈顿距离p=1p=1):d(a,b)=j=1dajbjd(\mathbf{a}, \mathbf{b}) = \sum_{j=1}^d |a_j - b_j|,对异常值较不敏感;
  • 闵可夫斯基距离d(a,b)=(j=1dajbjp)1/pd(\mathbf{a}, \mathbf{b}) = \left(\sum_{j=1}^d |a_j - b_j|^p\right)^{1/p},欧氏距离与曼哈顿距离的统一形式;
  • 余弦相似度:适用于文本等高维稀疏数据,衡量方向而非绝对距离。

超参数 kk 的选择

kk 是 KNN 最关键的超参数,其取值直接影响模型的偏差-方差权衡

  • kk 过小(如 k=1k=1):模型复杂度高,决策边界高度曲折,方差大,易过拟合
  • kk 过大:决策边界趋于平滑,偏差增大,极端情况退化为常数预测,导致欠拟合

实践中常通过交叉验证选取最优 kk,经验规则取 k=nk = \sqrt{n} 或奇数以避免平票。

经济学与金融应用

KNN 在经济学金融学中有广泛的实证应用:

  1. 信用评分:基于历史借款人的特征(收入、负债率、信用记录),利用 KNN 对新申请人的违约概率进行预测,是普惠金融风控的常用工具。
  2. 房地产市场估值:给定待估房产的位置、面积、房龄等特征,寻找成交数据集中最相似的 kk 套房产,以加权均价作为估值。这种方法与特征价格模型形成互补。
  3. 客户细分:在市场营销中,利用 KNN 将消费者按消费行为聚类或分类,识别高价值客户群。
  4. 异常检测:在审计和反欺诈领域,通过计算交易与其近邻的距离,识别显著偏离正常模式的异常交易。

优缺点与注意事项

  • 优势:无需训练阶段,易于实现与解释;天然支持多分类;对非线性决策边界具有强表达能力。
  • 局限:预测阶段需扫描全部训练集,计算开销随样本量线性增长;受维数灾难影响显著——高维空间中距离度量趋于失效,所有点近乎等距;对特征尺度敏感,需预先进行标准化或归一化处理。

在经济学实证研究中,KNN 常作为基准模型与逻辑回归支持向量机等更复杂的方法进行比较。其简洁性与可解释性使其在探索性数据分析和政策试点评估中仍占有一席之地。