图像分类的正确与否取决于它的最近邻值,可以看到KNN的表现效果不是很好,但如果我们使用一个更大的k值,可能会对噪音产生更大的鲁棒性。
当我们使用k-近邻算法时,确定我们应该如何比较相对近邻数据距离值图片间的不同,上节的L1 方法是像素之间绝对值的总和;另一种常见的选择是L2距离,也就是欧氏距离,即取平方和的平方根,并把这个作为距离。
L2距离实际上是一个根据L1距离的这个围绕着原点的方形形成的圆。这个方形上的每一个点在L1上是与原点等距的,而在L2上类似的会是一个圆。L1距离取决于你选的坐标系统,所以如果转动坐标轴,将会改变点之间的L1距离,而改变坐标轴对L2距离毫无影响。
如果你输入的一些特征向量,如果向量中的一些值有一些重要的意义,L1可能更合适,但如果它只是某个空间中的一个通用向量,L2可能更自然些。通过使用不同的距离度量,可以将k-近邻分类器泛化到许多不同的数据类型上,不仅仅是向量,图片。
设定超参的一个方法是 将数据集划分为训练集,验证集,测试集3部分,在训练集上设置不同的参数训练分类器,在验证集上选择效果最好的超参的分类器,然后在测试集上进行测试,查看这个分类器在新的数据集上是否效果最佳。
实际上,KNN在图像分类中很少用到,一个是因为他在测试时运算时间很长,同需求不符,另一个是因为L1或L2距离度量用在比较图像上实在不太合适,这种向量化的函数不太适合表示图像之间视觉的相似度。
那么,如何区分图像间的不同呢?
KNN介绍了图像分类的基本思路,借助训练集的图片和相应的标记我们可以预测测试集中数据的分类。