kNN(K最近邻)

KNN(K-nearest neighbor)是一种可用作分类与回归的算法,由Cover和Hart于1968年提出。

算法输入为实例的特征向量,可以当做特征空间的一个点,目标是为这个实例确定一个类别,可取多个类别。

算法基于这样一个假设,给定一个训练集并且其中的每个实例的类别已知。当新的实例到来时,根据距离度量方式从训练集中选出k个最相近的实例的类别,然后根据多数投票方式决定新的实例的类别。

k,距离度量以及分类决策规则是该算法的三个基本要素。

1.算法概述
输入:训练集

Train = {(x1, y1), (x2, y2), (x3, y3),…,(xn, yn)}

xi(i=1,2,3…n) X R n是实例的特征向量,yi(i=1,2,3…n) Y={c1,c2,c3,…,ck}是实例的类别,
输入特征向量x;
输出:x的类别y;

(1)根据距离度量公式,在训练集Train中找出与x最相近的k个实例,这k个实例构成了x的一个领域Nk(x);
(2)根据分类决策规则决定x的类别y(如多数投票);

y=argmaxcjxiNk(x)I(yi=cj)i=1,2,3...n;j=1,2,3...k

I(yi=cj)是个指示函数,当两者相同时I=1,否则I=0;

2.算法模型
算法其实是根据三要素对特征空间进行了划分,分为一个个的子空间;
对于训练集中的每个点xi,距离该点比距离其他点更近的所有点组成该点的一个领域,每个训练集中的点有一个领域,所有训练集中点的领域构成对特征空间的一个划分。

2.1 距离度量
假设实例位于n维的特征空间中
Lp距离定义为:

Lp(xi,xj)=(l=1n|xilxjl|p)1p

p>=1, 当p=2时,为欧式距离;
p=1时, 为曼哈顿距离(街区距离);
当p= 时,为各个坐标距离的最大值,即
L(xi,xj)=maxl|xilxjl|

2.2 k的选择
当k选较小的值时,近似误差较小,但估计误差会增大( 近似误差判断的是新实例点和训练实例点是否相似,越近表示越相似;估计误差表示新实例点的判断错误可能性大不大,参考的训练实例点越少表示估计误差越大),此时只有与输入较近的点才会对分类起作用,容易受到噪音数据点的影响,k越小,模型越复杂,也更容易发生过拟合。
k值一般取比较小的值,可以通过交叉验证来选取最优k值。

2.3 分类决策规则
knn中分类决策规则大多是多数投票,及有k个最近邻的多数类别决定输入实例的类。
假设损失函数为0-1损失函数,分类函数为f(X),则误分率为:

P(Yf(X))=1P(Y=f(X))

对于实例x的k近邻构成的邻域N k(x),若涵盖该邻域的类别为cj,则误分率为:

xiNk(x)I(yicj)k

= 1- xiNk(x)I(yi=cj)k

要使误分率最小,则应使
xiNk(x)I(yi=cj)
最大。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值