标签:效率 类型 选择 平移 部分 分类器 之间 适应 衡量
KNN算法可用于图像分类,且根据K值的不同,分割边界也会受到比较大的影响。
KNN并不常用于如今的图像分类,原因主要有两点:
没有显式的训练过程,测试时每个测试样本点需要遍历所有样本点,找到K个最近邻的点,以确定分类。
距离计算标准(欧几里得、曼哈顿距离)公式在比较图像上并不适用,这种向量化的距离函数不太适合表示图像之间视觉的相似度,或是发现它们之间的不同。实际上,这样的距离计算在KNN中是该算法唯一的衡量标准,因此有许多不适用性需要克服。
比如此时将某图片进行平移、遮挡、换色,对得到的三张图结果计算L2值,结果得到三个相同的L2距离,因此可以发现,L2距离不适用于表示图像之间视觉感知的差异。
维度爆炸:当维度上升时,数据点需要呈现指数级别上升,才能训练出较好的模型,完成空间覆盖。但实际上不可能拿到那么多的图片去密集分布,因为大部分时候我们都是在高维空间进行训练的。
假设当维度为1时,只需要四个样本点;那么当维度为2时,就需要\(4^2\)个样本点;同理,当维度为2时,就需要\(4^3\)个样本点.... 这样首先容易数据爆炸啦。
理论:在线性分类器中,实际上是使用训练集训练出一个合适的函数F。这一参数化的方法,将总结对训练数据的认识,并把所有的知识都使用到这些参数W中。所以,和KNN相比,在测试的时候,我们不再需要原始的训练数据,而是直接借助该函数的参数进行预测即可,大大提升了模型效率。
参数:进行类别判断时,模型将计算出一个矩阵,当有10个类别时,该矩阵为\(10 \times 1\)的向量,其中每个位置上的数值代表了对这个类的打分情况,然后选择那个分数最高的索引位作为我们的分类。同时,bias不与训练数据交互,而是给我们一些数据独立的偏好值,仅仅针对一类的偏好值。
训练:一张\(2 \times 2\)的图片,使用一个已经训练好的模型对其进行分类,共有 K = 3种类型。
输入图像:N = 4个pixels组成一个\(4 \times 1\)的列向量
W值:W的维度是规定好的,即【K,N】,得到一个\(3 \times 4\)的矩阵
bias:\(K \times 1\)的列向量
结果:与bias的结构相同,每个位置都是类别的打分
存在问题:每个类别只能学习出一个模版,如果这个类别出现了该类型的变体,模型将尝试求取所有不同变体,选择一个适应所有样本的平均值作为参数。重新组成模版后,仍然使用这唯一的函数来识别测试集中的每个类别。
标签:效率 类型 选择 平移 部分 分类器 之间 适应 衡量
原文地址:https://www.cnblogs.com/recoverableTi/p/13216302.html