KNN算法和Kernel KNN算法的区别
KNN算法
KNN(K-Nearest Neighbor,简称KNN)算法,是一种常用的监督学习方法,其工作机制为:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本。然后基于这k个“邻居”的信息来进行预测,通常可选择这k个样本中出现最多的类别标记作为测试结果;在回归任务中,可使用“平均法”,即将这k个样本的输出类别标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。
也就是去找你要分类的这个数据的邻居,物以类聚人以群分,KNN数据分类的道理也是如此。要想知道该数据属于哪一个类别,只需要去调查哪些数据是离该数据最近的数据,知道了这几“邻居”的类别,就可以预测出该数据的类别。
给定一个待分类样本x,该算法首先找出与x最接近或最相似的k个训练样本,然后根据这k个训练样本x的类别标签确定样本的类别,在度量待分类样本与训练集样本的距离或相似性时,一般采用 欧氏距离。这种方法的缺点就是在应对复杂样本(比如样本分布不规则)时,分类准确率会大大降低。欧式距离 的定义如下:
二维空间的欧氏距离,即两点之间的欧氏距离,点
和点
:
三维空间的欧氏距离:
Kernel KNN算法
Kernel KNN(核K近邻)算法,使用 核距离 代替欧氏距离作为待分类样本与训练集样本的距离度量,实验表明该算法的分类效果优于传统的K近邻算法。但该算法的主要缺点是核函数的参数P难以确定,主要是依据经验确定。
多项式核函数
的定义如下:
最常用的多项式核函数
的定义如下:
核函数
在实际数据上经常遇到线性不可分的情况,而解决方法是将特征映射到更高维的空间去,核函数虽然也是将特征进行从低维到高维的转化,但是是在低维上进行计算,而实际的效果表现在高维上,这就解决了维度灾难的问题。
核函数的选择要求满足Mercer定理,即核函数在样本空间内的任意格拉姆矩阵(Gram matrix)为半正定矩阵(semi-positive definite)。