我是靠谱客的博主 传统芝麻,最近开发中收集的这篇文章主要介绍K-NN Algorithm(K-NN算法原理),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

k text{k} k 近邻法( k-nearest neighbor text{k-nearest neighbor} k-nearest neighbor) 是一种基于分类和回归的方法,这里我们只讨论分类问题的 k text{k} k 近邻法。 k text{k} k 近邻输入为实例点的特征向量,输出为实例所属类别。 k text{k} k 近邻假定给定了一个训练数据集,其中的实例类别已经确定。分类时,对新的实例,根据其 k text{k} k 个最近的训练实例的类别,通过多数表决等方式进行预测。

1. 算法描述

Input: textbf{Input:} Input:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T={ (x_1,y_1),(x_2,y_2),ldots,(x_N,y_N) } T={(x1,y1),(x2,y2),,(xN,yN)}
其中, x i ∈ X ⊆ R n x_i in X subseteq bf{R^n} xiXRn 为实例的特征向量, y i ∈ Y = { c 1 , c 2 , … , c K } y_i in Y={ c_1,c_2,ldots,c_K } yiY={c1,c2,,cK}为实例的类别, i = 1 , 2 , … , N i=1,2,ldots,N i=1,2,,N;
Output: textbf{Output:} Output:
y = arg ⁡ max ⁡ c j ∑ x i ∈ N k ( x ) I ( y i = c j ) ,   i = 1 , 2 , … , N ;   j = 1 , 2 , … , K y=argunderset{c_j}{max}sum_{x_iin N_kleft( x right)}{Ileft( y_i=c_j right) , i=1,2,ldots,N; j=1,2,ldots,K} y=argcjmaxxiNk(x)I(yi=cj), i=1,2,,N; j=1,2,,K
其中, N k ( x ) N_k(x) Nk(x) 为涵盖最近的 k text{k} k 个点的邻域; I text{I} I 为指示函数,即当 y i = c j y_i=c_j yi=cj 时为1,否则为0。通过分类决策规则(多数表决)决定 x x x 的类别 y y y

2. 距离向量

特征空间中两个实例点的距离是两个样本相似程度的反映。 k text{k} k 近邻模型使用的距离一般是欧式空间的欧氏距离,但也可以是其它距离,如一般的 L p L_p Lp距离( L p  distance L_p text{ distance} Lp distance)或者 Minkowski text{Minkowski} Minkowski 距离( Minkowski distance text{Minkowski distance} Minkowski distance)。
设特征空间 X X X n n n 维实数向量空间 R n bf{R^n} Rn x i , x j ∈ X , x i = ( x i ( 1 ) , x i ( 2 ) , … , x i ( n ) ) x_i,x_j in X, x_i=(x_i^{(1)},x_i^{(2)},dots,x_i^{(n)}) xi,xjX,xi=(xi(1),xi(2),,xi(n)) x i , x j x_i,x_j xi,xj L p L_p Lp 定义为:
L p ( x i , x j ) = ( ∑ i = 1 n ∥ x i ( l ) − x j ( l ) ∥ p ) 1 p L_p(x_i,x_j)=(sum_{i=1}^{n}{Vert x_i^{(l)}-x_j^{(l)} Vert}^p)^{frac{1}{p}} Lp(xi,xj)=(i=1nxi(l)xj(l)p)p1
这里 p ≥ 1 p ge 1 p1,当 n = 2 n=2 n=2 时,就成为欧氏距离,即
L p ( x i , x j ) = ( ∑ i = 1 n ∥ x i ( l ) − x j ( l ) ∥ 2 ) 1 2 L_p(x_i,x_j)=(sum_{i=1}^{n}{Vert x_i^{(l)}-x_j^{(l)} Vert}^2)^{frac{1}{2}} Lp(xi,xj)=(i=1nxi(l)xj(l)2)21
p = 1 p=1 p=1 时,称为曼哈顿距离,即
L p ( x i , x j ) = ∑ i = 1 n ∥ x i ( l ) − x j ( l ) ∥ L_p(x_i,x_j)=sum_{i=1}^{n}{Vert x_i^{(l)}-x_j^{(l)} Vert} Lp(xi,xj)=i=1nxi(l)xj(l)
p = ∞ p=infty p= 时,它是各个坐标距离的最大值,即
L p ( x i , x j ) = max ⁡ i ∥ x i ( l ) − x j ( l ) ∥ L_p(x_i,x_j)=underset{i}{max}Vert x_i^{(l)}-x_j^{(l)} Vert Lp(xi,xj)=imaxxi(l)xj(l)

3. k text{k} k 值选择

k text{k} k 值的选取会对最终分类结果产生较大的影响。

  1. 如果 k text{k} k 值过小,则学习的近似误差会下降,只有更输入实例相近的实例点才会起预测作用。但缺点是学习的估计误差会增大,预测结果对近邻的实例点非常敏感,如果实例点恰好是噪声,预测就会出错。容易发生过拟合。
  2. 如果 k text{k} k 值过大,优点是可以减少学习的估计误差,但缺点是会造成近似误差的增大。这使与输入实例较远的训练实例也会对预测起作用,使预测发生错误。

因此,需要多次尝试不同 k text{k} k 值,然后选取最佳 k text{k} k 值。通常做法是 使用交叉验证来选取最优 k text{k} k 值。

最后

以上就是传统芝麻为你收集整理的K-NN Algorithm(K-NN算法原理)的全部内容,希望文章能够帮你解决K-NN Algorithm(K-NN算法原理)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部