根据scikit-learn中StandardScaler对象的文档:
例如,学习算法的目标函数中使用的许多元素(例如支持向量机的 RBF 内核或线性模型的 L1 和 L2 正则化器)假设所有特征都以 0 为中心并且具有相同顺序的方差。如果一个特征的方差比其他特征大几个数量级,它可能会主导目标函数并使估计器无法按预期正确地从其他特征中学习。
我应该在分类之前缩放我的特征。有什么简单的方法可以说明我为什么要这样做?对科学文章的引用会更好。我已经找到了一个,但可能还有很多其他的。
根据scikit-learn中StandardScaler对象的文档:
例如,学习算法的目标函数中使用的许多元素(例如支持向量机的 RBF 内核或线性模型的 L1 和 L2 正则化器)假设所有特征都以 0 为中心并且具有相同顺序的方差。如果一个特征的方差比其他特征大几个数量级,它可能会主导目标函数并使估计器无法按预期正确地从其他特征中学习。
我应该在分类之前缩放我的特征。有什么简单的方法可以说明我为什么要这样做?对科学文章的引用会更好。我已经找到了一个,但可能还有很多其他的。
所有内核方法都基于距离。RBF 核函数为(使用\gamma=1表示简单)。
给定 3 个特征向量:
那么,也就是说应该更类似于然后到。
和: 之间的相对差异。
因此,在没有缩放的情况下,我们得出结论更类似于而不是,即使和比和大得多。
换句话说,如果您不将所有特征缩放到可比较的范围,则具有最大范围的特征将在核矩阵的计算中完全占主导地位。
您可以在以下论文中找到简单的示例来说明这一点:支持向量分类的实用指南(第 2.2 节)。
这取决于您使用的内核。到目前为止,最常用的(除了线性)是高斯核,其形式为
SVM 采用此函数并使用它来比较一个点 ( ) 与训练集中的每个其他点的相似性,方法是将差异求和为:
其中是您的示例,的值是地标。
如果特征的范围为 0 - 50,000,而特征的范围为 0 - 0.01,您可以看到将主导该总和,而几乎没有影响。出于这个原因,有必要在应用内核之前对特征进行缩放。
如果您想了解更多信息,我推荐 Coursera 上斯坦福在线机器学习课程的模块 12(支持向量机)(免费且随时可用):https ://www.coursera.org/course/ml