进行 Min-Max 归一化的正确方法

Correct way to do Min-Max normalization

我正在使用 opencv svm 实现字母表分类。 我对归一化特征向量有疑问。 我有两种规范化特征向量的方法, 我需要找到逻辑上正确的归一化方法 ??

方法一

假设我有3个特征向量如下

[2,  3,  8, 5 ] -> image 1
[3,  5,  2, 5 ] -> image 2
[9,  3,  8, 5 ] -> image 3

而特征向量中的每个值都是通过核与像素进行卷积得到的。

目前我正在寻找每列的最大值和最小值,并基于此进行归一化。

在上面的例子中,第一列是 [2, 3, 9]

min = 2
max = 9

第一列的规范化是基于此完成的。同样,所有其他列都已标准化

方法二

如果内核如下

[-1   0  1]
[-1   0  1]
[-1   0  1]

则与上述kernel卷积得到的最大值和最小值如下(8位图-强度范围:0-255)

max val = 765
min val = -765

并用大于最大值的最小值对每个值进行归一化?

哪种规范化方法在逻辑上是正确的(方法 1 或方法 2)?

标准方法是方法 1(请参阅 this question). I also recommend you to read this paper 的答案以获得有关 svm 训练的良好参考。

但是,在您的情况下,使用相同内核计算的所有特征的范围将是相似的,并且方法 1 可能弊大于利(例如,通过增加几乎不变的特征的噪声)。

所以我的建议是:测试这两种方法,并评估性能,看看哪种方法最适合您的情况。