M2-050M2: Classical Machine LearningK-Nearest Neighbors & Metric LearningMedium
Mastery:

K-Nearest Neighbors & Metric Learning: KNN 如何用于回归与异常检测?

📐 Mathematical Definition
y^=1K∑i∈kNNyi,LOF(x)=local density of neighborslocal density of x\hat y=\frac1K\sum_{i\in\mathrm{kNN}}y_i,\qquad \text{LOF}(x)=\frac{\text{local density of neighbors}}{\text{local density of }x}
⚡ Executive Summary
Core Concept: 回归取邻居均值;异常检测用第 k 距离或局部离群因子(LOF)。

📌 Key Takeaways

  • •
    LOF 对局部密度差异鲁棒
  • •
    也可用 k 距离作为异常分数

📐 Mathematical Derivations

<strong>KNN 回归</strong>——预测为 k 个近邻的目标均值(或距离加权均值)。它与分类有相同的偏差-方差权衡(K 小则拟合噪声、K 大则过度平滑)。理论上 KNN 回归是一致的(n→∞、K→∞、K/n→0 时收敛到 E[y|x])。局限:无法外推(预测值总在训练目标的范围内)、高维失效、对无关特征敏感。<strong>KNN 异常检测</strong>的两条路线:① <strong>k 距离</strong>——样本到其第 k 近邻的距离作为异常分数;孤立点(远离密集区)距离大。缺点:对<strong>局部密度差异</strong>敏感——在稀疏簇中的正常点也可能有大 k 距离而被误判。② <strong>LOF(Local Outlier Factor)</strong>——比较样本的局部密度与其邻居的局部密度:LOF(x) = 邻居平均局部密度 / x 的局部密度。若 x 的密度远低于邻居(LOF≫1),则为异常。LOF 的<strong>关键优势</strong>是对局部密度差异鲁棒——它在每个局部邻域内做相对比较,故能在'稠密区'与'稀疏区'同时发现异常。

🏭 Production Trade-offs

实践要点:① <strong>参数选择</strong>——k 的选择决定'局部'的范围:k 小 → 关注极局部结构(对噪声敏感);k 大 → 更全局(可能漏掉局部异常);常用 k=20 或启发式(k≈√n)。② <strong>距离度量</strong>——同样需特征缩放;高维下建议先降维。③ <strong>LOF vs 孤立森林</strong>——孤立森林(Isolation Forest)通过随机划分的路径长度度量异常,对高维更鲁棒、计算更快(O(n log n))、无需距离计算;LOF 更擅长'局部异常'(密度相对差异),但在高维下距离失效。实践中常两者对比,或用<strong>集成异常检测</strong>(Feature Bagging + LOF/IF)。④ <strong>评估困难</strong>——异常检测通常无标签,评估需用领域知识构造验证集,或用'异常注入'合成测试;常用指标是 top-k 精度或 AUC(若有部分标签)。⑤ <strong>工程考虑</strong>——KNN 类方法需存储全部数据并计算距离,大规模场景用近似索引(HNSW)或改用基于树的孤立森林。
⚠️ Common Interview Pitfalls
  • ✕
    用 k 距离做异常检测而不考虑局部密度差异
  • ✕
    在高维数据上不做降维直接做距离型异常检测
🎯 Interviewer Follow-ups
  • ?
    LOF 与孤立森林的区别?
  • ?
    KNN 距离为什么是好的异常分数?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM2-049: K-Nearest Neighbors & Metric Learning: 为什么 KNN 需要特征缩放?不同距离度量有何差异。📋Back to BankNext →M2-051: K-Nearest Neighbors & Metric Learning: 解释维度灾难对 KNN 的具体影响。