假定给定一个训练数据集,其中实例标签已定,当输入新的实例时,可以根据其最近的 k k k 个训练实例的标签,预测新实例对应的标注信息。
具体划分, k k k 近邻又可细分为分类问题和回归问题。
分类问题:对新的实例,根据与之相邻的 k k k 个训练实例的类别,通过多数表决等方式进行预测。
回归问题:对新的实例,根据与之相邻的 k k k 个训练实例的标签,通过均值计算进行预测。
输入:训练集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T=\left\{\left(x_1, y_1\right),\left(x_2, y_2\right) \cdots,\left(x_N, y_N\right)\right\} T={(x1,y1),(x2,y2)⋯,(xN,yN)}
其中: x i ∈ X ⊆ R n , y ∈ Y = { c 1 , c 2 , ⋯ , c K } x_i \in \mathcal{X} \subseteq \mathbf{R}^n, y \in \mathcal{Y}=\left\{c_1, c_2, \cdots, c_K\right\} xi∈X⊆Rn,y∈Y={c1,c2,⋯,cK},实例 x x x ;
输出:实例 x x x 的所属的类 y y y 。
y = arg max c j ∑ x i ∈ N k ( x ) I ( y i = c j ) , i = 1 , 2 , ⋯ , N ; j = 1 , 2 , ⋯ , K y=\underset{c_j}{\arg \max } \sum_{x_i \in N_k(x)} I\left(y_i=c_j\right), \quad i=1,2, \cdots, N ; j=1,2, \cdots, K y=cjargmaxxi∈Nk(x)∑I(yi=cj),i=1,2,⋯,N;j=1,2,⋯,K
k k k 近邻法(k-nearest neighbor,k-NN)不具有显性的学习过程(无优化算法,无训练过程),实际上利用训练数据集对特征向量空间进行划分,以其作为分类的“模型”。
L P L_P LP 距离:特征空间 X \mathcal{X} X 假设为 R n , ∀ x i , x j ∈ X , x i = ( x i ( 1 ) , x i ( 2 ) , ⋯ , x i ( n ) ) T , x j = ( x j ( 1 ) , x j ( 2 ) , ⋯ , x j ( n ) ) T \mathbf{R}^n, \forall x_i, x_j \in \mathcal{X}, x_i=\left(x_i^{(1)}, x_i^{(2)}, \cdots, x_i^{(n)}\right)^T, x_j=\left(x_j^{(1)}, x_j^{(2)}, \cdots, x_j^{(n)}\right)^T Rn,∀xi,xj∈X,xi=(xi(1),xi(2),⋯,xi(n))T,xj=(xj(1),xj(2),⋯,xj(n))T,则有
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p , p ≥ 1 L_p\left(x_i, x_j\right)=\left(\sum_{l=1}^n\left|x_i^{(l)}-x_j^{(l)}\right|^p\right)^{\frac{1}{p}}, \quad p \geq 1 Lp(xi,xj)=(l=1∑n xi(l)−xj(l) p)p1,p≥1
欧氏距离(Euclidean distance) p p p = 2:
L 2 ( x i , x j ) = ( ∑ I = 1 n ∣ x i ( l ) − x j ( l ) ∣ 2 ) 1 2 L_2\left(x_i, x_j\right)=\left(\sum_{I=1}^n\left|x_i^{(l)}-x_j^{(l)}\right|^2\right)^{\frac{1}{2}} L2(xi,xj)=(I=1∑n xi(l)−xj(l) 2)21
曼哈顿距离(Manhattan distance) p p p = 1:
L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ L_1\left(x_i, x_j\right)=\sum_{l=1}^n\left|x_i^{(l)}-x_j^{(l)}\right| L1(xi,xj)=l=1∑n xi(l)−xj(l)
切比雪夫距离(Chebyshev distance) p p p = ∞ {\infty} ∞ :
L ∞ ( x i , x j ) = max l ∣ x i ( l ) − x j ( l ) ∣ L_{\infty}\left(x_i, x_j\right)=\max _l\left|x_i^{(l)}-x_j^{(l)}\right| L∞(xi,xj)=lmax xi(l)−xj(l)
分类函数:
f : R n → { c 1 , c 2 , ⋯ , c K } f: \mathbf{R}^n \rightarrow\left\{c_1, c_2, \cdots, c_K\right\} f:Rn→{c1,c2,⋯,cK}
0-1 损失函数:
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y, f(X))= \begin{cases}1, & Y \neq f(X) \\ 0, & Y=f(X)\end{cases} L(Y,f(X))={1,0,Y=f(X)Y=f(X)
误分类概率:
P ( Y ≠ f ( X ) ) = 1 − P ( Y = f ( X ) ) P(Y \neq f(X))=1-P(Y=f(X)) P(Y=f(X))=1−P(Y=f(X))
给定实例 x ∈ X x \in \mathcal{X} x∈X ,相应的 k k k 邻域 N k ( x ) N_k(x) Nk(x) ,类别为 c j c_j cj ,误分类率:
1 k ∑ x i ∈ N k ( x ) I ( y i ≠ c j ) = 1 − 1 k ∑ x i ∈ N k ( x ) I ( y i = c j ) \frac{1}{k} \sum_{x_i \in N_k(x)} I\left(y_i \neq c_j\right)=1-\frac{1}{k} \sum_{x_i \in N_k(x)} I\left(y_i=c_j\right) k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)
最小化误分析率,等价于:
arg max ∑ x i ∈ N k ( x ) I ( y i = c j ) \underset{}{\arg \max } \sum_{x_i \in N_k(x)} I\left(y_i=c_j\right) argmaxxi∈Nk(x)∑I(yi=cj)
kd 树是一种对 k k k 维空间中的实例点进行储存以便对其进行快速检索的树形数据结构。
本质:二叉树,表示对 k k k 维空间的一个划分。
构造过程:不断地用垂直于坐标轴的超平面将 k k k 维空间切分,形成 k k k 维超矩形区域。
kd 树的每一个结点对应于一个 k k k 维超矩形区域。
输入: k k k 维空间数据集:
T = { x 1 , x 2 , ⋯ , x N } T=\left\{x_1, x_2, \cdots, x_N\right\} T={x1,x2,⋯,xN}
其中, x i = ( x i ( 1 ) , x i ( 2 ) , ⋯ , x i ( k ) ) T x_i=\left(x_i^{(1)}, x_i^{(2)}, \cdots, x_i^{(k)}\right)^T xi=(xi(1),xi(2),⋯,xi(k))T
输出:kd 树
输入:已构造的 kd 树,目标点 x x x
输出: x x x 的最近邻
目标点的最近邻一定在以目标点为中心并通过当前最近点的超球体的内部。
如果父结点的另一个子结点的超矩形区域与超球体相交,那么在相交的区域内寻找与目标点更近的实例点。