趋近智
正如本章引言中提到的,你输入机器学习 (machine learning)算法的数据常常需要一些调整。设想一个包含房屋信息的数据集:一个特征可能是卧室数量(通常范围为1到5间),而另一个可能是房屋价格(范围从1,000,000或更高)。这些特征在尺度上差异很大。
许多机器学习 (machine learning)算法,特别是那些依赖计算数据点之间距离的算法(例如K近邻算法)或使用梯度下降 (gradient descent)进行优化的算法(例如线性回归、逻辑回归和神经网络 (neural network)),在数值输入特征处于相似尺度时,表现会好得多,或者收敛更快。
设想使用上述原始特征来计算两套房屋之间的距离。2间卧室的差异对总距离计算的贡献,与$100,000的价格差异相比,显得微不足道。价格特征,仅仅因为其数值更大,就会在距离计算中占据主导地位。这可能导致算法错误地认为价格比卧室数量重要得多,仅仅因为尺度不同。
特征缩放是将数值特征转换到共同尺度的过程,同时不过分改变数据的基本分布或内部关联。它确保所有特征对学习过程的贡献更为均衡。
特征缩放有两种非常普遍的方法:归一化 (normalization)和标准化。
归一化将特征的值重新调整到固定范围,通常在0到1之间。其计算方式是,从每个数据点中减去该特征的最小值,然后除以范围(最大值减去最小值)。
公式如下:
这里:
归一化后,特征的最小值变为0,最大值变为1。所有其他值按比例落在这个范围内。
例子: 考虑一个值为 [20, 25, 40, 60] 的“年龄”特征。
应用公式:
优点: 确保特征值将在 [0, 1] 范围内。这对于某些算法很有用,特别是在图像处理或神经网络 (neural network)中,它们需要此范围内的输入。
缺点: 归一化对异常值相当敏感。如果存在单个非常高或非常低的值,它可能会将大多数其他数据点压缩到 [0, 1] 范围的非常小的一部分,可能因此丢失它们相对差异的一些信息。
标准化重新调整特征,使其平均值 () 为 0,标准差 () 为 1。它从每个数据点中减去特征的平均值,然后除以标准差。
公式如下:
这里:
生成的标准化值(常被称为Z分数)表示原始值与平均值相差多少个标准差。与归一化 (normalization)不同,标准化不将值限制在特定范围(例如 [0, 1]),不过,如果原始数据大致遵循正态分布,则远离0的值将不那么常见。
例子: 使用相同的“年龄”特征 [20, 25, 40, 60]。
应用公式:
优点: 标准化受异常值的影响远小于归一化。如果存在异常值,标准化通常表现更好,因为与最小值和最大值相比,平均值和标准差受极端值的影响较小。假设数据以零为中心的算法也偏好使用标准化。
缺点: 结果值不限于特定范围,这可能是某些特定算法的要求(尽管这种情况较少见)。
该图对比了原始的“年龄”值,以及它们如何通过归一化(映射到 [0, 1])和标准化(以0为中心,单位标准差)进行转换。
没有唯一的最佳答案,选择通常取决于你计划使用的算法和数据的性质:
在实际应用中,除非你有特定理由使用归一化,否则标准化通常是默认的选择。还值得注意的是,一些算法,特别是基于树的方法,如决策树和随机森林,本身对特征的尺度不敏感,因此不严格要求进行缩放,不过应用缩放通常也不会损害性能。
当你开始使用机器学习 (machine learning)库(如Python中的Scikit-learn)构建模型时,你会找到便捷的工具,可以轻松地将这些缩放方法应用于你的数据集。请记住,仅在训练数据上拟合缩放器(计算最小值/最大值或平均值/标准差),然后使用这个拟合好的缩放器来转换你的训练和测试数据,以避免数据泄露(在预处理阶段从测试集学习信息)。
特征缩放是准备数据中一个简单而重要的步骤,它能帮助许多算法更有效地学习,并防止值较大的特征过度影响结果。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•