特征缩放是机器学习中的一个预处理步骤,用于将数据集的数值特征调整到一致的尺度。这确保了不会因为某个特征值的大小差异过大而主导模型的学习过程。例如,考虑一个包含“年龄”(范围从 0 到 100)和“年收入”(范围从 $30,000 到 $200,000)的数据集。如果不进行缩放,收入值由于其较大的量级可能会不成比例地影响依赖于距离计算的算法,例如 k 近邻 (KNN) 或支持向量机 (SVM)。归一化(将值缩放到 0-1 范围)或标准化(将值移至均值为 0、标准差为 1)等缩放方法有助于平衡每个特征的影响。
缩放是必要的,因为许多机器学习算法对输入特征的尺度很敏感。使用梯度下降进行优化的算法,如线性回归或神经网络,在特征处于相似尺度时收敛得更快。例如,如果某个特征的范围大得多,梯度下降过程可能会在各个维度上不均匀地“跳动”,从而减慢训练速度。类似地,基于距离的算法,如 KNN 或 SVM,会计算数据点之间的距离,而未经缩放的特征可能会扭曲这些距离。想象一下计算两点之间的欧几里德距离:收入差异 10(例如 $10,000)将盖过年龄差异 30,即使年龄与问题更相关。缩放可以防止这种不平衡。
然而,并非所有算法都需要缩放。基于树的模型,如决策树或随机森林,根据特征阈值分割数据,因此缩放不会影响它们的性能。另一方面,使用系数来衡量特征权重的算法,如逻辑回归,则受益于缩放,以确保特征之间的公平比较。例如,如果您正在预测房价,像“房屋面积”(值以千为单位)这样的特征如果不进行缩放,可能会盖过“卧室数量”(值 1-5)这样的特征。通过对这两个特征进行标准化,模型可以学习到它们真正的权重。实际上,缩放是一个付出很少但潜在收益很高的步骤,因此除非算法或上下文明确避免使用,否则它是一种常见的最佳实践。