数据驱动的方法(Data-driven approach):我们将提供计算机每一个类中的许多例子,进而看着这些类学习每一个类的视觉显示的算法。数据驱动的算法依赖与第一次选取的带有标签的训练数据集。
图像分类管道(image)
输入(Input):输入包括N个图片的集合,每一个图片都标记为k个不同的类之一,叫做训练数据。
学习(Learning):我们的任务是使用训练数据学习每一个类别看起来像什么,这一步叫做训练一个分类器,或者学习一个模型。
评价(评价):在最后,通过让它预测之前从没见过图像,评价这个模型的质量我们将比较这些图片的真实标签和预测结果,直观地,我们希望尽可能多的预测和真实答案匹配。
使用cifar10数据集进行一下算法的测试
最近邻分类器(Nearest Neighbor Classifier)
运行结果:accuracy:29%
K-近邻分类器(K-Nearest Neighbor Classifier):
当我们希望做个预测时,只是用一个最近的标签是奇怪的。更进一步,我们使用k-最近邻时,总会做的更好。它的思想是简单的,不是在训练集中发现一个最近的图片,而是发现k的最近的图片,用这k个图片对测试图片进行投票。特别地,当k=1时就是最近邻。直观地,较高的k具有平滑的作用,使得分类器能够抵抗异常值。
通过在训练集中分出一部分数据作为验证集来调整超参数
最近邻算法的优缺点
优点:简单、易于实现、好理解
没有训练时间,弹药存储训练集和下标
缺点:测试时,计算复杂,效率低
--------->近似最近邻算法(eg.kd树加速算法)
虽然最近邻有时对于低纬度数据是很好的选择,但是在实际的图片分类中它很少使用。一个原因是图片是一个高维的数据 对象,需要更多的空间存储。 而且一般情况下,使用像素的不同来比较图片是不充分的。