【发布时间】:2013-03-04 09:38:00
【问题描述】:
我正在使用 libSVM。 假设我的特征值采用以下格式:
instance1 : f11, f12, f13, f14
instance2 : f21, f22, f23, f24
instance3 : f31, f32, f33, f34
instance4 : f41, f42, f43, f44
..............................
instanceN : fN1, fN2, fN3, fN4
我认为有两种缩放可以应用。
-
缩放每个实例向量,使每个向量的均值和单位方差为零。
( (f11, f12, f13, f14) - mean((f11, f12, f13, f14) ). /std((f11, f12, f13, f14) ) 将上述矩阵的每一列缩放到一个范围。例如 [-1, 1]
根据我对 RBF 内核 (libSVM) 的实验,我发现第二次缩放 (2) 将结果提高了约 10%。我不明白为什么(2)给了我一个改进的结果。
谁能解释我应用缩放的原因是什么以及为什么第二个选项给我带来了改进的结果?
【问题讨论】:
-
在尝试回答这个问题之前...每一列是否在同一范围内?例如 fn1 和 fnm 是 [0,100]?
-
不,它可以是任何范围。比如第一列代表年龄,第二列代表工资等。
-
好吧,这取决于您如何计算平均值和标准差,它们可能会因最大范围而产生偏差。另一方面,我认为不能保证该比例会在 [-1,1] 范围内,这是 libSVM 上 RBF 的数值友好范围
标签: machine-learning computer-vision svm libsvm