KNN算法和Kernel KNN算法的区别

KNN算法和Kernel KNN算法的区别

KNN算法

KNN(K-Nearest Neighbor,简称KNN)算法,是一种常用的监督学习方法,其工作机制为:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本。然后基于这k个“邻居”的信息来进行预测,通常可选择这k个样本中出现最多的类别标记作为测试结果;在回归任务中,可使用“平均法”,即将这k个样本的输出类别标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。

也就是去找你要分类的这个数据的邻居,物以类聚人以群分,KNN数据分类的道理也是如此。要想知道该数据属于哪一个类别,只需要去调查哪些数据是离该数据最近的数据,知道了这几“邻居”的类别,就可以预测出该数据的类别。

给定一个待分类样本x,该算法首先找出与x最接近或最相似的k个训练样本,然后根据这k个训练样本x的类别标签确定样本的类别,在度量待分类样本与训练集样本的距离或相似性时,一般采用 欧氏距离。这种方法的缺点就是在应对复杂样本(比如样本分布不规则)时,分类准确率会大大降低。欧式距离 ρ ρ ρ的定义如下:

二维空间的欧氏距离,即两点之间的欧氏距离,点 ( x 1 , y 1 ) (x1,y1) (x1,y1)和点 ( x 2 , y 2 ) (x2,y2) (x2,y2)
ρ = √ ( y 2 − y 1 ) + ( x 2 − x 1 ) . ρ = √(y2-y1)+(x2-x1). ρ=(y2y1)+(x2x1).
三维空间的欧氏距离:
ρ = √ ( y 2 − y 1 ) + ( x 2 − x 1 ) + ( z 2 − z 1 ) . ρ = √(y2-y1)+(x2-x1)+(z2-z1). ρ=(y2y1)+(x2x1)+(z2z1).

Kernel KNN算法

Kernel KNN(核K近邻)算法,使用 核距离 代替欧氏距离作为待分类样本与训练集样本的距离度量,实验表明该算法的分类效果优于传统的K近邻算法。但该算法的主要缺点是核函数的参数P难以确定,主要是依据经验确定。

多项式核函数 K p ( x , y ) Kp(x,y) Kp(x,y)的定义如下:
K ( x , x i ) = ( x ▪ x i + 1 ) d , d = 1 , 2 , . . . , N K(x,xi)=(x▪xi+1)^d, d=1,2,...,N K(x,xi)=(xxi+1)d,d=1,2,...,N
最常用的多项式核函数 K p ( x , y ) Kp(x,y) Kp(x,y)的定义如下:
K p ( x , y ) = ( 1 + < x , y > ) P . Kp(x,y) = (1+)^P. Kp(x,y)=(1+<x,y>)P.

核函数
在实际数据上经常遇到线性不可分的情况,而解决方法是将特征映射到更高维的空间去,核函数虽然也是将特征进行从低维到高维的转化,但是是在低维上进行计算,而实际的效果表现在高维上,这就解决了维度灾难的问题。
核函数的选择要求满足Mercer定理,即核函数在样本空间内的任意格拉姆矩阵(Gram matrix)为半正定矩阵(semi-positive definite)。

你可能感兴趣的:(KNN,Kernel,Kernel,KNN,K近邻算法,核函数)