我和一位同事讨论过,我们开始想知道,什么时候应该对数据应用特征标准化/缩放?假设我们有一组特征,其中一些特征具有非常广泛的值范围,而一些特征的值范围不那么广泛。
如果我要进行主成分分析,我需要对数据进行归一化,这很清楚,但是假设我们正在尝试使用简单的 k 最近邻/线性回归方法对数据进行分类。
在什么条件下应该或不应该对数据进行规范化,为什么?一个简短的例子强调添加到答案中的点将是完美的。
我和一位同事讨论过,我们开始想知道,什么时候应该对数据应用特征标准化/缩放?假设我们有一组特征,其中一些特征具有非常广泛的值范围,而一些特征的值范围不那么广泛。
如果我要进行主成分分析,我需要对数据进行归一化,这很清楚,但是假设我们正在尝试使用简单的 k 最近邻/线性回归方法对数据进行分类。
在什么条件下应该或不应该对数据进行规范化,为什么?一个简短的例子强调添加到答案中的点将是完美的。
在我看来,关于缩放/不缩放机器学习中的特征的问题是关于特征测量单位的陈述。它与您对该问题的先验知识有关。
一些算法,如线性判别分析和朴素贝叶斯通过设计进行特征缩放,您手动执行一个不会有任何影响。其他人,比如 knn 可能会受到它的严重影响。
因此,使用 knn 类型的分类器,您必须测量样本对之间的距离。距离当然会受到人们使用的测量单位的影响。想象一下,您将人口分为男性和女性,并且您有一堆测量值,包括身高。现在,您的分类结果将受到报告的高度测量值的影响。如果高度以纳米为单位测量,那么任何 k 个最近邻居都可能仅具有相似的高度测量值。你必须扩大规模。
然而,作为一个对比示例,想象对具有相同测量单位且记录有噪声的事物进行分类。就像照片或微阵列或某些光谱一样。在这种情况下,您已经先验地知道您的特征具有相等的单位。如果你要对它们进行缩放,你会放大所有样本中不变的特征的影响,但测量时会带有噪声。(就像照片的背景)。这再次会对 knn 产生影响,并且如果您的数据与变化的数据相比具有更多嘈杂的常数值,则可能会大大降低性能。现在 k 最近邻之间的任何相似性都会受到噪声的影响。
所以这就像机器学习中的其他一切一样——尽可能使用先验知识,在黑盒特征的情况下,两者都做交叉验证。
您应该在特征的比例不相关或具有误导性时进行归一化,而不是在比例有意义时进行归一化。
K-means 认为欧几里得距离是有意义的。如果一个特征与另一个相比具有较大的规模,但第一个特征真正代表了更大的多样性,那么该维度上的聚类应该受到惩罚。
在回归中,只要您有偏差,是否归一化都没有关系,因为您正在发现仿射图,并且缩放变换和仿射图的组合仍然是仿射的。
当涉及学习率时,例如当您进行梯度下降时,输入比例有效地缩放梯度,这可能需要某种二阶方法来稳定每个参数的学习率。如果其他情况无关紧要,标准化输入可能更容易。
有几种归一化方法。
关于回归,如果您计划通过单个因素对特征进行归一化,那么就没有必要了。原因是像除以或乘以常数这样的单因素归一化已经在权重中进行了调整(即假设一个特征的权重是 3,但是如果我们通过除以 2 来归一化特征的所有值,那么新的重量为6,所以总体效果是一样的)。相反,如果您打算表示标准化,那么情况就不同了。当特征值(1 70 300 4)存在巨大差异时,均值归一化是好的。此外,如果单个特征可以同时产生正面和负面影响,那么均值归一化是很好的。这是因为当你的意思是标准化一组给定的正值时,低于平均值的值变为负值,而高于平均值的值变为正值。
对于 k 近邻,应始终执行归一化。这是因为在 KNN 中,点之间的距离会导致聚类发生。因此,如果您将 KNN 应用于具有 2 个特征的问题,其中第一个特征的范围为 1-10,另一个范围为 1-1000,那么所有集群都将基于第二个特征生成,因为 1 到 10 之间的差异为与 1-1000 相比较小,因此都可以聚集到一个组中
这是另一个化学计量学应用示例,其中特征缩放将是灾难性的:
有许多分类(定性分析)任务,其形式为“测试某些分析物(= 感兴趣的物质)含量是否低于(或高于)给定阈值(例如法定限度)”。在这种情况下,为分类器生成输入数据的传感器将被选择为具有
在这种情况下,特征缩放基本上会从原始数据中删除所有相关信息。
一般来说,一些有助于确定缩放是否是一个好主意的问题: