进行 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 可能弊大于利(例如,通过增加几乎不变的特征的噪声)。
所以我的建议是:测试这两种方法,并评估性能,看看哪种方法最适合您的情况。
我正在使用 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 可能弊大于利(例如,通过增加几乎不变的特征的噪声)。
所以我的建议是:测试这两种方法,并评估性能,看看哪种方法最适合您的情况。