我发现SVM(支持向量机)问题的扩展确实提高了它的性能...... 我已经阅读了这个解释:
“缩放的主要优点是避免使用更大数值范围内的属性来控制较小数值范围内的属性。”
不幸的是,这对我没有帮助......有人可以给我一个更好的解释吗? 提前谢谢!
答案 0 :(得分:57)
特征缩放是应用于优化问题的一般技巧(不仅仅是SVM)。求解SVM优化问题的下划线算法是梯度下降。 Andrew Ng在他的课程视频here中有一个很好的解释。
我将在这里阐述核心思想(我借用安德鲁的幻灯片)。假设您只有两个参数,其中一个参数可以采用相对较大的值范围。然后是成本函数的轮廓
可以看起来像很高和瘦的椭圆形(见下面的蓝色椭圆形)。您的渐变(渐变路径以红色绘制)可能需要很长时间并且来回寻找最佳解决方案。
相反,如果缩放了您的要素,则成本函数的轮廓可能看起来像圆圈;那么渐变可以采用更直的路径并更快地实现最佳点。
答案 1 :(得分:44)
SVM中缩放功能背后的真正原因是,此分类器不是仿射变换不变。换句话说,如果将一个特征乘以1000而不是SVM给出的解决方案将完全不同。它与基础优化技术几乎没有任何关系(尽管它们受到这些尺度问题的影响,它们仍然应该收敛到全局最优)。
考虑一个例子:你有男人和女人,按性别和身高(两个特征)编码。让我们假设这样一个非常简单的案例:
0人,1女人
1 150
1 160
1 170
0 180
0 190
0 200
让我们做一些愚蠢的事情。训练它来预测人的性别,所以我们试图学习f(x,y)= x(忽略第二个参数)。
很容易看出,对于这样的数据,最大边距分类器会在高度“175”附近水平“切割”平面,所以一旦我们得到新样本“0 178”(身高178厘米的女人),我们得到了分类,她是一个男人。
但是,如果我们将所有内容缩小到[0,1],我们就会像
一样0 0.0
0 0.2
0 0.4
1 0.6
1 0.8
1 1.0
现在最大的边距分类器“切割”飞机几乎垂直(正如预期的那样),所以给定新的样本“0 178”,它也缩放到“0 0.56”左右,我们得到它是一个女人(正确!)< / p>
所以一般来说 - 缩放确保只是因为某些功能大它不会导致将它们用作主要预测器。
答案 2 :(得分:2)
从另一个角度看个人的想法
的 1。为什么特征缩放影响?
在应用机器学习算法时,有一个词,'垃圾输入,垃圾输出'。功能越真实,您的算法就越准确。这也适用于机器学习算法如何处理特征之间的关系。与人类的大脑不同,当机器学习算法进行分类时,所有的特征都由相同的坐标系表示和计算,在某种意义上,在特征之间建立先验假设(不是真的反映数据本身)。此外,大多数算法的本质是在功能之间找到最合适的权重百分比以适应数据。因此,当这些算法的输入是未缩放的特征时,大规模数据对权重的影响更大。实际上,它并不是数据本身的反映
的 2。为什么通常特征缩放提高了准确度?
无监督机器学习算法中关于超参数(或超超参数)选择(例如,层次Dirichlet过程,hLDA)的常见做法是,您不应该添加任何关于数据的个人主观假设。最好的方法是假设它们具有出现的相等概率。我认为它也适用于此。特征缩放只是试图假设所有特征都具有影响权重的平等机会,这更真实地反映了您对数据的了解的信息/知识。通常也会带来更好的准确性。
答案 3 :(得分:2)
我们可以通过使每个输入值在大致相同的范围内来加速梯度下降。这是因为θ将在小范围内快速下降并且在大范围内缓慢下降,因此当变量非常不均匀时,将无效地振荡到最佳值。 这是来自Andrews NG coursera课程。
因此,可以做一些标准化数据的工作。 有时研究人员想知道特定的观察结果是否常见或异常。根据从平均值中删除的标准差的数量来表示得分。这个数字就是我们所说的z分数。如果我们将原始分数重新编码为z分数,我们说我们将变量标准化。
答案 4 :(得分:1)
从我从Andrew Ng课程中学到的经验来看,特征缩放有助于我们更快地实现渐变,如果数据更加分散,这意味着如果它具有更高的标准偏差,它将相对与我们通过特征缩放来扩展数据的情况相比,花费更多时间来计算梯度体面
答案 5 :(得分:1)
缩放的想法是通过将所有变量标准化为相同的比例来移除特定变量的exess计算,我们倾向于更容易地计算斜率(y = mx + c)我们正在规范化M参数尽可能快地收敛。
答案 6 :(得分:1)
是的,如果没有归一化那么轮廓将是瘦的,因此标准化: