第三章 k k k 近邻法(KNN)
-
多分类模型,思路是将最近的 N N N 个邻居的分类值中的多数作为自己的分类值。没有显式的学习过程。
-
三个基本要素:距离度量、 k k k 值选择和分类决策规则。
-
距离度量:一般形式,Minkowski距离的定义为
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p L_p(x_i, x_j) = \left (\sum_{l=1}^n \mid x_i^{(l)} - x_j^{(l)} \mid^p \right)^\frac{1}{p} Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)p1
当 p = 1 p = 1 p=1 时,称为曼哈顿距离(Manhattan distance);当 p = 2 p = 2 p=2 时,称为欧氏距离(Euclidean Distance);当 p = ∞ p = \infin p=∞ 时,是各个坐标距离中的最大值:
L ∞ ( x i , x j ) = max l ∣ x i ( l ) − x j ( l ) ∣ L_\infin(x_i, x_j) = \max_l\mid x_i^{(l)} - x_j^{(l)} \mid L∞(xi,xj)=lmax∣xi(l)−xj(l)∣ -
k k k 值的选择:减小使模型对近邻的实例点敏感,模型变得复杂,容易过拟合;增大使模型变得简单。通常采用交叉验证法选取最优的 k k k 值。
-
k d kd kd 树:当数据集较大时,寻找 k k k 个最近邻点的过程使用线性扫描开销太大。使用树形结构搜索可以将复杂度降至 O ( l o g N ) O(logN) O(logN)。详细算法见书P54,核心思路:
- k d kd kd 树的构建:自顶向下轮流循环使用第1-第k维特征作为节点划分依据,使二叉树实现对k维特征空间的划分。
- k d kd kd 树的搜索:先自顶向下搜索出一条从根节点到目标点最近邻叶节点的路径,然后向上回溯,如果目标点到父节点距离更近,说明在父节点另一侧的子树中可能有更近邻的点,向下搜索;否则继续向上,直至根节点。原书中给的是寻找最近邻的一个点的算法,如果需要找k个点,则用一个集合保存已搜索到的最近点,判定条件改为目标点与父节点距离小于集合内的最大距离,或集合内点数小于k即可。