【问题标题】:Why feature scaling in SVM?为什么要在 SVM 中进行特征缩放?
【发布时间】:2014-12-01 06:01:02
【问题描述】:

我发现 SVM(支持向量机)问题中的缩放确实提高了它的性能。 我已阅读此说明:

缩放的主要优点是避免较大数值范围内的属性支配较小数值范围内的属性。

不幸的是,这对我没有帮助。有人可以提供更好的解释吗?

【问题讨论】:

  • 您是在谈论日志标准化数据吗?
  • 也许你应该在stats.stackexchange.com 提出这个问题 - 这个论坛是针对编程问题的,你的问题听起来像是理论问题

标签: machine-learning svm scaling


【解决方案1】:

特征缩放是应用于优化问题(不仅仅是 SVM)的一般技巧。解决SVM优化问题的下划线算法是梯度下降。 Andrew Ng 在他的课程视频here 中有很好的解释。

我将在这里说明核心思想(我借用 Andrew 的幻灯片)。假设您只有两个参数,其中一个参数可以取相对较大范围的值。然后是代价函数的轮廓 可以看起来像非常高和瘦的椭圆形(见下面的蓝色椭圆形)。您的渐变(渐变路径以红色绘制)可能需要很长时间,并且来回寻找最佳解决方案。

相反,如果您对特征进行缩放,成本函数的轮廓可能看起来像圆形;那么梯度可以采取更直的路径并更快地达到最佳点。

【讨论】:

  • 非常感谢绿色。您的回答非常清楚,但您的回答解释了为什么缩放可以提高计算速度时间,而不是我所问的准确性,以我的拙见。谢谢!
  • @Venik 我认为上述原因在于他的回答。不过我不确定:>
  • 这个答案是不正确的,SVM在大多数实现中并没有用SGD解决,特征缩放的原因完全不同。
  • 我不同意。避免大价值观的主导效应可能是主要优势。不过,libsvm 的作者也指出,特征缩放具有防止数值问题的优势。请参阅第 2.2 节 csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
  • 我也不知道为什么你认为梯度下降在大多数实现中不用于解决 SVM。在 libsvm 的不同版本中,我看到了坐标梯度下降和次梯度下降的实现。
【解决方案2】:

在 SVM 中缩放特征的真正原因是这个分类器不是仿射变换不变量。换句话说,如果将一个特征乘以 1000,那么 SVM 给出的解决方案将完全不同。它与底层优化技术几乎无关(尽管它们受到这些尺度问题的影响,但它们仍应收敛到全局最优)。

考虑一个例子:你有一个男人和一个女人,由他们的性别和身高(两个特征)编码。让我们用这样的数据假设一个非常简单的案例:

0 -> 男人 1 -> 女人

╔═════╦════════╗
║ sex ║ height ║
╠═════╬════════╣
║  1  ║  150   ║
╠═════╬════════╣
║  1  ║  160   ║
╠═════╬════════╣
║  1  ║  170   ║
╠═════╬════════╣
║  0  ║  180   ║
╠═════╬════════╣
║  0  ║  190   ║
╠═════╬════════╣
║  0  ║  200   ║
╚═════╩════════╝

让我们做一些愚蠢的事情。训练它来预测人的性别,所以我们试图学习 f(x,y)=x(忽略第二个参数)。

很容易看出,对于此类数据,最大边距分类器将在高度“175”附近水平“切割”平面,因此一旦我们获得新样本“0 178”(身高 178 厘米的女性),我们就会得到分类说她是男人。

但是,如果我们将所有内容缩小到 [0,1],我们会得到类似的结果

╔═════╦════════╗
║ sex ║ height ║
╠═════╬════════╣
║  1  ║  0.0   ║
╠═════╬════════╣
║  1  ║  0.2   ║
╠═════╬════════╣
║  1  ║  0.4   ║
╠═════╬════════╣
║  0  ║  0.6   ║
╠═════╬════════╣
║  0  ║  0.8   ║
╠═════╬════════╣
║  0  ║  1.0   ║
╚═════╩════════╝

现在最大的边距分类器几乎垂直地“切割”平面(如预期的那样),因此给定新样本“0 178”,它也被缩放到“0 0.56”左右,我们得到它是一个女人(正确!)

因此,一般来说 - 缩放可确保仅仅因为某些特征,它不会导致将它们用作主要预测器

【讨论】:

  • 另一个直观的例子:假设我们想根据身高(以米为单位)和体重(以公斤为单位)等属性对一组人进行分类。高度属性具有低可变性,范围从 1.5 m 到 1.85 m,而重量属性可能从 50 kg 到 250 kg 变化。如果不考虑属性的尺度,则距离度量可能由人的权重差异主导。资料来源:数据挖掘导论,第 5 章,谭潘宁
  • 我仍然不明白为什么网络不会自动扩展功能。培训不会只是为您设置权重来扩展数据吗?就像这些 cmets 中的身高和体重示例一样。我认为训练会以较大的权重缩放低可变性属性,并以较低的权重缩放高可变性特征。为什么不会发生这种情况?
  • 同意第一张桌子之后的帖子,在我看来好像关键应该是 0-woman,1-man,第一张桌子应该是 0 150, 0 160, 0 170 , 1 180, 1 190, 1 200。
【解决方案3】:

只是从另一个角度的个人想法。
1。为什么特征缩放会影响?
应用机器学习算法有一个词,'garbage in,garbage out'。对你的特征的真实反映越多,你的算法就越准确。这也适用于机器学习算法如何处理特征之间的关系。与人脑不同的是,机器学习算法在进行分类时,所有的特征都是在同一个坐标系下表达和计算的,这在某种意义上建立了一个先验假设数据本身的反映)。而且大多数算法的本质是在特征之间找到最合适的权重百分比来拟合数据。所以当这些算法的输入是未缩放的特征时,大规模数据对权重的影响更大。其实这并不是数据本身的反映。
2.为什么通常特征缩放会提高准确性?
无监督机器学习算法中关于超参数(或超超参数)选择(例如,分层狄利克雷过程,hLDA)的常见做法是,您不应该添加任何关于数据的个人主观假设。最好的方法就是假设它们具有相等的概率出现。我认为它也适用于这里。特征缩放只是试图假设所有特征都有平等的机会影响权重,这更真实地反映了你对数据了解的信息/知识。通常也会导致更好的准确性。

顺便说一句,关于仿射变换不变量和收敛速度更快,stats.stackexchange.com 上有兴趣链接here

【讨论】:

    【解决方案4】:

    从我在coursera上的Andrew Ng课程中学到的是特征缩放可以帮助我们更快地实现梯度下降,如果数据更加分散,这意味着如果它具有更高的标准偏差,它会相对与我们通过特征缩放来缩放数据的情况相比,需要更多时间来计算梯度体面

    【讨论】:

      【解决方案5】:

      我们可以通过使每个输入值在大致相同的范围内来加速梯度下降。这是因为 θ 会在小范围内快速下降,而在大范围内缓慢下降,因此当变量非常不均匀时,它会低效地振荡到最优值。 这是来自 Andrews NG coursera 课程。

      因此,我们已经完成了诸如标准化数据之类的工作。 有时研究人员想知道一个特定的观察是常见的还是特殊的。用从平均值中去除的标准差数来表示分数。这个数字就是我们所说的 z 分数。如果我们将原始分数重新编码为 z 分数,我们就说我们标准化了一个变量。

      【讨论】:

        【解决方案6】:

        缩放的想法是通过将所有变量标准化到相同的比例来消除对特定变量的过度计算,我们倾向于更容易计算斜率(y = mx + c),我们正在标准化M 参数尽可能快地收敛。

        【讨论】:

          【解决方案7】:

          是的,如果没有归一化,那么轮廓会很瘦,因此归一化:

          1. 值在范围内
          2. 加速 theta 的计算,因为需要的计算次数会更少

          【讨论】:

            猜你喜欢
            • 2012-07-25
            • 2023-03-29
            • 2021-01-21
            • 2019-07-25
            • 2015-12-09
            • 2021-09-10
            • 2021-08-03
            • 2018-07-01
            • 2020-05-31
            相关资源
            最近更新 更多