SVM缩放输入值

16

我将使用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

我认为可以应用两种缩放方法。

  1. 将每个实例向量进行缩放,使得每个向量具有零均值和单位方差。

    ( (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]之间? - Pedrom
    不,它可以是任何范围。例如,第一列代表年龄,第二列代表薪水等。 - user570593
    根据如何计算平均值和标准偏差,它们可能会被最大范围所偏倚。另一方面,我认为不能保证该比例尺在[-1,1]范围内,而这是libSVM上RBF的数值友好范围。 - Pedrom
    3个回答

    21

    标准做法是使每个维度(或属性,或列(在您的示例中))具有零均值和单位方差。

    这将使SVM的每个维度具有相同的数量级。来自http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

    缩放的主要优点是避免数字范围较大的属性支配数字范围较小的属性。另一个优点是避免计算过程中出现数值问题。因为内核值通常取决于特征向量的内积,例如线性内核和多项式内核,所以大的属性值可能会导致数值问题。我们建议将每个属性线性缩放到[-1,+1]或[0,1]范围内。


    2
    是的,缩放列是正常的做法。缩放行并没有真正意义上的意义:如果您的唯一两个特征是年龄(以年为单位)和薪水(以千美元计),那么一个15岁赚15000美元和一个60岁赚60000美元的人将被强制显示为完全相同! - Danica

    4
    我认为这很大程度上取决于您的原始数据。如果某些列的原始数据有一些极端值,那么在线性缩放时,例如在范围[-1,1]内,您会失去一些定义。假设您有一列数据,其中90%的值在100-500之间,而剩下的10%的值低至-2000,高达+2500。如果您线性缩放这些数据,则会得到以下结果:
    -2000 -> -1 ## <- The min in your scaled data
    +2500 -> +1 ## <- The max in your scaled data
    
     100 -> -0.06666666666666665 
     234 -> -0.007111111111111068
     500 ->  0.11111111111111116
    

    您可以认为,在比较缩放后的数据和原始数据时,100和500之间的区别在缩放后的数据中变得更小了。
    最终,我认为这非常取决于您的特定数据,而且我认为10%的改进表现很巧合,您肯定不会在尝试两种缩放方法的每个数据集中看到这种程度的差异。
    同时,在其他答案中列出的链接的论文中,您可以清楚地看到作者建议将数据线性缩放。
    希望有人觉得这很有用!

    是的。您可以使用上下限来去除极端值,然后应用某些变换来扩大数据范围,我怀疑大部分歧视发生在其中。我已经看到真实的例子,这样做可以显著改善结果。 - P.Windridge

    0

    被接受的答案提到了“标准缩放”,但对于存储在稀疏矩阵中的高维数据(文本数据是一个用例),这种方法并不高效;在这种情况下,您可以采用“最大缩放”及其变体,它适用于稀疏矩阵


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接