目录
数据驱动方法
第一个分类器:最近邻分类器(Nearest Neighbor)
计算机如何比较两张图片的差别(L1距离比较法)
KNN(K值最近邻算法)
关于L1和L2范数
超参数
如何在实验中选择合适的超参数
KNN在图像分类中不被使用的原因
KNN概要(中英版)
计算机存储图片(RGB模式)
使用具有不同类别和标签的数据集,然后使用机器学习去训练一个分类器,使用该分类器去识别新的图片。
训练数据集会会给定类别和对应的类别标签,分类器要识别的类从可以选的标签中进行选择
def train(images,labels):
#一系列机器学习算法
return model
def predict(model,test_images):
#使用训练好的模型去预测标签
return test_labels
需要识别的图片从与他最相近的图片处复制标签,即图片的类别与其长得最像的图片标签相同。
如何计算两个图片的差值?
使用L1距离,每个测试图片像素点和训练图片像素点的插值的总和
缺点:
基于此,提出了KNN
从距离最近的K个点进行投票, 在这些相邻点中进行投票,根据投票多的点来得出预测结果。
该算法的思想是: 一个样本与数据集中的k个样本最相似, 如果这k个样本中的大多数属于某一个类别, 则该样本也属于这个类别。
(63条消息) 机器学习之KNN(k近邻)算法详解_平原2018的博客-CSDN博客_knn
我们可以看出,取不同的K值对图像分类的效果不同,当K=5时,图像分类的边缘更加平滑,分类效果更好,而且不容易受单一像素点的干扰。
课程提供的KNN效果演示:
vision.stanford.edu/teaching/cs231n-demos/knn/
超参数的选择是依赖于具体问题的,需要通过实验去测试选择超参数
一般我们把数据集分为三部分:训练集、验证集和测试集,首先我们在训练集中选择不同的超参数进行实验,选出效果最好的超参数组,在验证集上进行验证,然后再把该组超参数放在测试集中使用,得出最终结果。
(63条消息) 训练集、验证集、测试集以及交验验证的理解_Kieven2oo8的博客-CSDN博客_验证集
一个形象的比喻:
训练集-----------学生的课本;学生 根据课本里的内容来掌握知识。
验证集------------作业,通过作业可以知道 不同学生学习情况、进步的速度快慢。
测试集-----------考试,考的题是平常都没有见过,考察学生举一反三的能力。
传统上,一般三者切分的比例是:6:2:2,验证集并不是必须的。
3. 维度灾难:需要指数级别的数据量
KNN分类器需要样本空间分成几部分来进行数据的训练,验证和测试,想要KNN分类器表现效果好,那么我们需要让训练数据能够密集的分布在样本空间中,一维时需要4个点覆盖整个空间,二维需要4*4个点,三维需要4*4*4个点,因此维度越高我们需要的数据就越多,因此会造成所需数据的指数级爆炸增长
在图像分类中,我们在训练集中提供图像和标签,然后在测试集中预测图像的标签
在K最近邻分类器中基于K个最相近的训练集图像的标签来预测测试集图片的标签
距离测度和K值是超参数
使用验证集选择合适的超参数,选择出最合适的超参数后再在测试集上运行一次,得出最后的测试结果。
计算机在看图片时,看到的是一个像素矩阵,长乘宽乘3,rgb三基色。
rgb模式的原理就是通过一个二维数组来记录每个像素点的位置,每个像素点都有rgb三个属性值用来记录对应的数值(实际上应该是一个三维数组)