我发现在SVM(支持向量机)问题中进行缩放确实可以改善其性能……我已阅读以下说明:
“缩放的主要优点是避免较大数值范围的属性主导较小数值范围的属性。”
不幸的是,这并没有帮助我。有人可以给我更好的解释吗?先感谢您!
在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”(身高178cm的女性),我们便得到了是一个男人。
但是,如果我们将所有内容按比例缩小到[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”左右),我们得到的是一个女人(正确!)
因此总的来说,缩放可以确保仅仅因为一些功能大而不会导致将它们用作主要的预测器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句