支持向量机缩放输入值

Posted

技术标签:

【中文标题】支持向量机缩放输入值【英文标题】:svm scaling input values 【发布时间】: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 的数值友好范围 【参考方案1】:

我相信很大程度上取决于您的原始数据。

如果您的原始数据在某些列中有一些极值,那么我认为您在线性缩放时会丢失一些定义,例如在 [-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% 的性能提升是非常巧合的,您肯定不会在您尝试两种缩放方法的每个数据集中看到如此巨大的差异开。

同时,在另一个答案中列出的链接中的论文中,您可以清楚地看到作者建议对数据进行线性缩放。

我希望有人觉得这很有用!

【讨论】:

是的。您可以设置上限/下限以删除极值,然后应用一些转换来扩大我怀疑发生最多歧视的数据范围。我见过真实的例子,这可以大大改善事情。【参考方案2】:

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

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

缩放的主要优点是避免属性在更大的数字 范围在较小的数字范围内占主导地位。另一个好处是避免 计算过程中的数值困难。因为内核值通常取决于 特征向量的内积,例如线性核和多项式核- nel,大的属性值可能会导致数值问题。我们推荐线性 将每个属性缩放到 [-1,+1] 或 [0,1] 范围内。

【讨论】:

是的,缩放列是正常的做法。缩放行并没有真正的意义:如果你只有两个特征是年龄(以年为单位)和薪水(以千美元为单位),那么一个 15 岁的人赚 15,000 美元,一个 60 岁的人赚 60,000 美元看起来完全一样!

以上是关于支持向量机缩放输入值的主要内容,如果未能解决你的问题,请参考以下文章

支持向量机大全(SVCSVRSVDDDTSVMTSVMSVCSTM)

支持向量机介绍

支持向量机篇(连载中 6)

徒手推导 “支持向量机”

详解支持向量机

支持向量机