K-Nearest Neighbor(KNN)

邻近算法(Nearest Neighbor)

概念原理

    邻近算法(Nearest Neighbor)的思想实际上十分简单,就是将测试图片和储存起来的训练集一一进行相似度计算,计算出最相近的图片,这张图片的标签便是赋给测试图片的分类标签。

那么如何比较两组数据之间的相似长度呢?

算法分析

    最常用的两种方式: 

①L1距离(Manhattan distance)
②L2距离(Euclidean distance)

Manhattan distance

计算公式:
在这里插入图片描述

在图片上的具体反映:

在这里插入图片描述

在上述图片中最右侧的数字就是distance

两张图片使用L1距离来进行比较。逐个像素求差值,然后将所有差值加起来得到一个数值。如果两张图片一模一样,那么L1距离为0,但是如果两张图片很是不同,那L1值将会非常大。

K近邻算法(K-Nearest Neighbor)

概念原理

    在邻近算法(Nearest Neighbor)的思想中,我们只计算最相近的图片的标签。但是,在实际上,为了更好的效果,我们可以找最相似的K张图片,然后用这K张图片中数量最多的标签作为测试图片的分类标签。

算法分析

    最常用的两种方式: 
    ①L1距离(Manhattan distance)
     ②L2距离(Euclidean  distance)                  ----其实么得变化

只是将一张图片扩增为K张图片。

那么在K-NN中,K的值应该如何选出呢?

在这里,需要指出的是,K-NN的K值与我们所选择的计算图像距离的方式L1或者L2一样,我们尚且思考,在计算距离时,我们到底是应该选择L1还是L2呢?当你发出这样的提问时,你就会发现,这就如同思考,K的取值一般。K可以是2、3、4,那为什么不能是5、6、7呢?所以,这实际上,是以最后的结果好坏为导向性的。这一类在training中无法learn到,需要人为设置的参数,称之为超参数(hyperparameter),与参数不同,参数是在整个训练过程中可以不断优化得到最终结果的,超参数只能一开始就认为设置。

那么怎么才能确定自己选择的超参数是好的呢?

一遍遍的不断尝试,通过结果好坏进行分析。(要不怎么说人工智能,首先要有人工才能有智能呢,小声bb…)

优缺点分析:

缺点:
其实基本上,在图像识别上,是基本不会用到KNN的,因为KNN的最终结果很大程度上是以背景为导向的。

举一个栗子:

这时一只草地上的小狗:
在这里插入图片描在这里插入图片描述述
这时一只在沙发上的小猫:
在这里插入图片描述

那么,当我们有一只在草地上的猫咪时,会如何呢?

在这里插入图片描述

使用KNN的话,基本上,会认为是与上面左边的在草地上的狗最相似,因为,两张图片上,有着更多的相似像素点,这样一来,距离也就更加相近。你可以认为是,KNN记住了绿色的背景。所以说,他是以背景为导向的。

还有就是,由于KNN的计算特殊性,在所谓的训练阶段,KNN只是简单的储存所有的训练集,然后在检测阶段,进行一一的对比。这样就造成一个问题,那就是在检测阶段花费时间太长,使得基本不可能商用(也就是约等于没用233)。

优点:
但是其实,优点还是有的,因为使用了KNN总比你瞎猜强。

原文链接:https://blog.csdn.net/weixin_38419133/article/details/90814431

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值