KNN详解

Kth Nearest Neighbor

K临近算法是我个人认为的最简单直接的一种有监督的分类算法。KNN算法的思想其实非常的intuitive,俗话说的好:“近朱者赤近墨者黑”, KNN就将这句古语利用的淋漓尽致。下面我们详细展开

Model Detail

KNN算法的流程为:给定一个待预测的样本 x x x,在数据集中找到距离样本 x x x最近的 k k k个样本,然后利用这 k k k个样本进行预测。如果是分类问题,就采用“Voting”的方式,少数服从多数,以数量最多的标签作为分类结果;如果是回归问题,就取 k k k个样本的均值作为结果。

在这里插入图片描述

如上图所示,加入 k = 20 k=20 k=20,我们要预测灰色点的类别,那么红色圆圈内部的就是我们的分类依据,最终得到的结果应该是蓝色。

KNN算法有一个显著的特点,就是当你不做预测任务的时候,模型不会对数据集做任何操作,也就是没有明显的训练过程,我们将这种算法叫做“Lazy Learning”。

Distance Measuring

根据上面的算法描述,我们注意到其中很重要的一点就是这个“距离”的计算。一般我们最常用的是欧氏距离,也可以使用最一般的 L p L_p Lp距离,也叫做 M i n k o w s k i     D i s t a n c e Minkowski \ \ \ Distance Minkowski   Distance

n n n维实向量空间 R n R^n Rn x i , x j ∈ R n x_i,x_j\in{R^n} xi,xjRn x i = ( x i ( 1 ) , x i ( 2 ) , … , x i ( n ) ) x_i=(x_{i}^{(1)}, x_{i}^{(2)},\dots,x_{i}^{(n)}) xi=(xi(1),xi(2),,xi(n)) x j = ( x j ( 1 ) , x j ( 2 ) , … , x j ( n ) ) x_j=(x_{j}^{(1)},x_{j}^{(2)},\dots,x_{j}^{(n)}) xj=(xj(1),xj(2),,xj(n)),那么 L p L_p Lp距离定义为:
L P ( x i , x j ) = ( ∑ k = 1 n ∣ x i ( k ) − x j ( k ) ∣ p ) 1 p L_P(x_i, x_j) = (\sum_{k=1}^n|x_i^{(k)} - x_j^{(k)}|^p)^{\frac{1}{p}} LP(xi,xj)=(k=1nxi(k)xj(k)p)p1
特别的,当 p = 1 p=1 p=1时,就是曼哈顿距离;当 p = 2 p=2 p=2时,就是欧氏距离。

The Choice of K

KNN中另一个关键点就是超参数 K K K的选择,如果 K K K设置的太小,则会使得模型过于复杂,容易导致模型的过拟合(类比多项式回归, K K K太小就相当于多项式回归中特征项太多,或者说限制条件太强,泛化能力差);如果 K K K设置的太大,容易影响模型的准确性,泛化误差会变大。因此超参数 K K K的选择非常的重要,对最终的结果会产生很大的影响。
K$的选择非常的重要,对最终的结果会产生很大的影响。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值