Sehlani
Sehlani
发布于 2025-10-28 / 4 阅读
0
0

机器学习入门7: KNN

机器学习入门7: KNN

1. 核心思想 (Nearest Neighbor Classifiers)

“如果它像鸭子一样走路,像鸭子一样嘎嘎叫——那它大概就是一只鸭子。”

KNN 属于 ​实例(Instance-based learning)

  • 不直接学习显式模型;

  • 预测时依赖与测试样本“最接近”的训练样本。

2. 步骤流程

  1. 准备训练集:每条记录都有标签。

  2. 定义距离度量:用于衡量两个样本的相似性。

    • 常用:欧氏距离 (Euclidean)

    • 其他:曼哈顿距离、余弦相似度(文本)

  3. 选择 k 值:选取距离最近的 k 个邻居。

  4. 分类规则

    • 多数表决 (majority vote) :k 个邻居中最多的类别。

    • 加权表决 (distance weighting) :权重 $w = 1/d^2$,距离越近权重越高。

3. 距离度量 (Proximity Measures)

  • 数值型特征常用欧氏距离。

  • 文本或高维稀疏向量常用 余弦相似度 (cosine similarity) :​\cos(\theta) = \frac{x \cdot y}{\|x\|\|y\|}

  • 不同量纲的特征需要标准化(scale normalization),否则大的量纲会主导距离。

4. 参数选择与预处理

  • 特征缩放:防止收入/身高/体重等数值差异过大。

  • 选择 k:

    • 太小 → 对噪声敏感(高方差);

    • 太大 → 平滑过度,包含其他类(高偏差)。

    • 通常使用交叉验证选取最优 k。

  • 缺失值处理:距离计算要求完整数据,否则可能导致不一致性。

5. 决策边界与性质

  • 1-NN(最近邻)对应的决策边界是 Voronoi diagram

  • KNN 是局部分类器(local classifier) ,可产生任意形状的决策边界,相比线性模型更灵活。

6. 局限与改进

问题

说明

常见改进

计算代价高

对每个测试样本都要计算所有训练样本距离

使用 ​KD-Tree​、​Ball-Tree​、Locality Sensitive Hashing (LSH)

受无关特征影响

噪声或冗余特征会误导距离计算

特征选择或加权

样本不平衡

多数类会主导表决

距离加权或采样调整

高维数据效果差

“维度灾难”

PCA、降维

7. 变体与优化策略

  • Condensing:选取少量代表样本(prototype)加速预测。

  • Editing:删除边界外点减少噪声。

  • Approximate search / hashing:快速近似KNN(如ANN、FAISS)。


评论