K近邻学习笔记



K近邻(K Nearest Neighbor,简称KNN)

K近邻,是一种简单的有监督学习方法。它没有训练过程。
它的判别过程是这样子的:每当输入一个新的测试样本,它会在训练集中,找出与这个测试样本距离最近的K个训练样本,并把这K个样本中,占比最大的类别作为测试样本的类别,最后输出测试样本的类别。
例1
如图,当我们输入测试样本——绿色点的时候,它的类别是什么?
如果K=3,那么离它最近的三个点中红色点占了 2 3 \frac{2}{3} 32,所以测试样本的类别为红色。
如果K=5,那么离绿色点最近的五个样本中,蓝色点占了 3 5 \frac{3}{5} 53,所以测试样本的类别为蓝色。

下面就要具体讲解KNN的三个要素:距离度量,K值的选取,以及分类决策规则。


距离度量

通常的距离度量函数有这么几个:
欧氏距离(Euclidean distance):
L 2 ( x i , x j ) = ( ∑ l = 1 n ∣ x i l − x j l ∣ 2 ) 1 2 L_2(x_i,x_j) = (\sum_{l=1}^{n}|x_i^{l} - x_j^{l}|^2)^\frac{1}{2} L2(xi,xj)=(l=1nxilxjl2)21
曼哈顿距离(Manhattan distance):
L 2 ( x i , x j ) = ∑ l = 1 n ∣ x i l − x j l ∣ L_2(x_i,x_j) = \sum_{l=1}^{n}|x_i^{l} - x_j^{l}| L2(xi,xj)=l=1nxilxjl

使用距离度量函数来计算训练集中每个点与测试样本的距离。当度量函数不同时,得到的距离也会不同。也就是说与测试样本最近的k个点也会有所不同。


K值的选取

在红绿蓝小点的例子中可以看到,当选取不同的K值时,测试样本的类别也会有变动。
当K值选取过小时,测试样本会对它附近的点非常敏感,如果测试样本附近的点刚好是噪声,可能会导致测试样本的类别输出为噪声的类别。容易过拟合。
如果K值选取过大,比如>11时,那么测试样本(绿色点)无论在何处,都会被判别为蓝色。K值选取过大会导致模型过于简单。容易欠拟合。


分类决策规则

K近邻中一般使用多数表决,也就是测试样本的K个距离最近的点中的多数类作为测试样本的类。
误分类的概率是:
P ( Y ≠ f ( X ) ) = 1 − P ( Y = f ( X ) ) P(Y ≠ f(X)) = 1- P(Y = f(X)) P(Y̸=f(X))=1P(Y=f(X))
在这K个训练样本中,也就是:
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 ∈ N_k(x)} I(y_i ≠ c_j) = 1-\frac{1}{k}\sum_{x_i ∈ N_k(x)} I(y_i = c_j) k1xiNk(x)I(yi̸=cj)=1k1xiNk(x)I(yi=cj)
要使误分类的几率最小,也就是要让 1 k ∑ x i ∈ N k ( x ) I ( y i = c j ) \frac{1}{k}\sum_{x_i ∈ N_k(x)} I(y_i = c_j) k1xiNk(x)I(yi=cj)最大,所以多数表决等价于经验风险最小化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值