使用SVM时,为什么需要缩放功能?


9

根据scikit-learn中StandardScaler对象的文档:

例如,学习算法的目标函数中使用的许多元素(例如支持向量机的RBF内核或线性模型的L1和L2正则化器)都假定所有特征都围绕0居中并且具有相同顺序的方差。如果某个特征的方差比其他特征大几个数量级,则它可能会支配目标函数,并使估计器无法按预期从其他特征中正确学习。

分类前应先缩放特征。有什么简单的方法可以说明为什么我应该这样做?引用科学文章会更好。我已经找到了,但可能还有很多。

Answers:


16

所有内核方法均基于距离。RBF核函数是(使用γ = 1κ(u,v)=exp(uv2)γ=1为简单起见)。

鉴于3的特征向量:

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

然后,即X 1是所谓更类似于X 3再到X 2κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

之间的相对差和: X 2[ 0.1 0 0 ] x1

x2[0.1,0,0],x3[0.05,10,10].

因此,没有缩放,我们得出结论,更类似于X 3不是X 2,即使每个要素之间的相对差异X 1X 3是比那些大得多X 1X 2x1x3x2x1x3x1x2

换句话说,如果不将所有要素缩放到可比较的范围,则具有最大范围的要素将完全主导内核矩阵的计算。

您可以在以下论文中找到简单的示例来说明这一点:支持向量分类的实用指南(第2.2节)。


您可能还需要讨论正则化:权重的大小取决于输入的大小...
seanv507 2015年

正则化的效果是不同的缩放比例暗示了不同的最佳,这与该特定问题有些正交。C
马克·克莱森

2
但是,确实有可能沿一个维度的接近更为重要。因此,目标并不是在所有要素上都具有相同的方差,而是要对它们进行缩放以使沿每个要素的距离在任务中具有相同的重要性。
isarandi 2015年

@Marc Claesen,如果变量的数量级不同,则权重也将数量级不同,并且l2范数将集中于方差较小且权重较大的输入。换句话说,权重范数正则化确保“较小”的输入产生较小的影响。仅当您标准化了“小”(跨输入)时(例如通过标准化变量)
这才有意义-seanv507 2015年

1
@ seanv507仅适用于线性SVM。
马克·克莱森

0

这取决于您使用的内核。迄今为止,除线性外,最常用的是高斯核,其形式为

F=ËXp-||X1个-X2||22σ2

X1个

X1个-1个2+X2-22+Xñ-ñ2

哪里 X 是您的示例,并且的价值 是地标。

如果功能 X1个 该功能的范围是0-50,000 X2 范围从0-0.01,您可以看到 X1个 将占主导地位,而 X2几乎没有影响。因此,在应用内核之前必须先缩放特征。

如果您想了解更多信息,我建议您在Coursera的斯坦福在线机器学习课程中学习模块12(支持向量机)(免费并随时可用):https : //www.coursera.org/course/ml

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.