Skip to content
Mo's Blog
Go back

《统计学习方法》学习笔记3:k近邻法

机器学习
  1. k 近邻法(k-nearest neighbor, k-NN)是一种基本分类与回归方法。这里只讨论分类问题的 kNN。
  2. k 近邻法的算法
    1. 输入:

      训练集

      T={(x1,y1),(x2,y2),,(xN,yN)}T = \{ (x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N) \}

      其中,xiXRnx_i \in \mathcal{X} \subseteq \mathbb{R}^n 为实例的特征向量,yiY={c1,c2,,cK}y_i \in \mathcal{Y} = \{c_1, c_2, \ldots, c_K\} 为实例的类别,i=1,2,,Ni = 1, 2, \ldots, N;实例特征向量 xx

    2. 输出实例 xx 所属的类 yy

    3. 过程:

      1. 根据给定的距离度量,找出与 xx 最邻近的 kk 个点,这个邻域记作 Nk(x)N_k(x)

      2. Nk(x)N_k(x) 中根据分类决策规则(如多数表决)决定 xx 的类别 yy

        y=argmaxcjxiNk(x)I(yi=cj),i=1,2,,N;  j=1,2,,Ky = \arg\max_{c_j} \sum_{x_i \in N_k(x)} I(y_i = c_j), \quad i = 1, 2, \ldots, N;\; j = 1, 2, \ldots, K

        其中,II 为指示函数,即当 yi=cjy_i = c_jII 为 1,否则 II 为 0。

  3. k=1k = 1 是一种特殊情况,称为最邻近算法。
  4. k 近邻法的模型三要素是距离度量k 值分类决策规则
    1. 基本概念

      1. 单元(cell):距离该点比其他点更近的所有点组成的一个区域。每个训练实例拥有一个单元。
      2. 类标记(class label):每个单元的类别。最邻近法将实例 xix_i 的类 yiy_i 作为其单元中所有点的类标记。
    2. 距离度量

      1. LpL_p 距离定义为:

        Lp(xi,xj)=(l=1nxi(l)xj(l)p)1pL_p(x_i, x_j) = \left( \sum_{l=1}^{n} \left| x_i^{(l)} - x_j^{(l)} \right|^p \right)^{\frac{1}{p}}
      2. LpL_p 距离中 pp 取 2 时,称为欧氏距离(Euclidean distance)。

      3. LpL_p 距离中 pp 取 1 时,称为曼哈顿距离(Manhattan distance)。

      4. LpL_p 距离中 pp\infty 时,它是各个坐标距离的最大值,即:

        L(xi,xj)=maxlxi(l)xj(l)L_\infty(x_i, x_j) = \max_l \left| x_i^{(l)} - x_j^{(l)} \right|
      5. 此外还有 Minkowski 距离。

      6. 距离度量不同,最邻近点不同。

    3. kk 值越小意味着模型越复杂,更容易过拟合。通常 kk 取一个较小的值。通常采用交叉验证法确定 kk 值。

    4. 分类决策规则:k 近邻法的分类决策往往是多数表决。分类函数为:

      f:Rn{c1,c2,,cK}f: \mathbb{R}^n \to \{c_1, c_2, \ldots, c_K\}

      误分类的概率是:

      P(Yf(X))=1P(Y=f(X))P(Y \neq f(X)) = 1 - P(Y = f(X))

      对给定的实例 xXx \in \mathcal{X},其最邻近的 kk 个训练实例点构成集合 Nk(x)N_k(x)。如果涵盖 Nk(x)N_k(x) 的区域类别是 cjc_j,那么误分类率是:

      1kxiNk(x)I(yicj)=11kxiNk(x)I(yi=cj)\frac{1}{k} \sum_{x_i \in N_k(x)} I(y_i \neq c_j) = 1 - \frac{1}{k} \sum_{x_i \in N_k(x)} I(y_i = c_j)

      要使误分类最小即经验风险最小,就要使 xiNk(x)I(yi=cj)\sum_{x_i \in N_k(x)} I(y_i = c_j) 最大,所以多数表决规则等价于经验风险最小化。

  5. 计算 kNN 的算法是 kd 树。kd 树是一种对 k 维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。注意这里的 kk 与 k 近邻的 kk 并不是一个含义,它等于特征向量的维数。

Share this post on:

Previous Post
《统计学习方法》学习笔记4:朴素贝叶斯法
Next Post
《统计学习方法》读书笔记2:感知机