机器学习入门7: KNN
1. 核心思想 (Nearest Neighbor Classifiers)
“如果它像鸭子一样走路,像鸭子一样嘎嘎叫——那它大概就是一只鸭子。”
KNN 属于 实例(Instance-based learning) :
-
不直接学习显式模型;
-
预测时依赖与测试样本“最接近”的训练样本。
2. 步骤流程
-
准备训练集:每条记录都有标签。
-
定义距离度量:用于衡量两个样本的相似性。
-
常用:欧氏距离 (Euclidean)
-
其他:曼哈顿距离、余弦相似度(文本)
-
-
选择 k 值:选取距离最近的 k 个邻居。
-
分类规则:
-
多数表决 (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. 局限与改进
7. 变体与优化策略
-
Condensing:选取少量代表样本(prototype)加速预测。
-
Editing:删除边界外点减少噪声。
-
Approximate search / hashing:快速近似KNN(如ANN、FAISS)。