当前位置: 首页 > article >正文

机器学习07-归一化与标准化

归一化与标准化

一、基本概念

  1. 归一化(Normalization)
    • 定义:将数据缩放到一个固定的区间,通常是[0,1]或[-1,1],以消除不同特征之间的量纲影响和数值范围差异。
    • 公式:对于数据 ( x ),归一化后的值 ( x’ ) 为
      [
      x’=\frac{x-\min(x)}{\max(x)-\min(x)}
      ]
      其中,(\min(x)) 和 (\max(x)) 分别是该特征列的最小值和最大值。
    • 作用:使不同特征的数据处于同一量纲水平,便于模型处理和比较,避免某些特征因数值范围大而对模型产生主导作用。
  2. 标准化(Standardization)
    • 定义:将数据进行变换,使其均值为0,标准差为1,从而消除数据的分布差异。
    • 公式:对于数据 ( x ),标准化后的值 ( x’ ) 为
      [
      x’=\frac{x-\mu}{\sigma}
      ]
      其中,(\mu) 是该特征列的均值,(\sigma) 是该特征列的标准差。
    • 作用:使数据符合标准正态分布,适用于对数据分布有一定假设的模型,如线性回归、逻辑回归等,能够提高模型的收敛速度和性能。

二、使用场景

  1. 归一化
    • 适用场景
      • 当数据的量纲不同,且数值范围差异较大时,如身高(cm)和体重(kg)。
      • 对于基于距离的模型,如K近邻(KNN)、K均值聚类(K-Means)等,归一化可以避免距离计算时某些特征的主导作用。
      • 数据挖掘中,用于数据预处理,使数据更加易于处理和分析。
    • 不适用场景
      • 当数据中存在异常值时,归一化可能会受到异常值的影响,导致归一化后的数据范围不准确。
      • 对于一些对数据分布有特定要求的模型,如假设数据服从正态分布的模型,归一化可能不适用。
  2. 标准化
    • 适用场景
      • 当数据服从正态分布或近似正态分布时,标准化可以将数据转换为标准正态分布,便于模型处理。
      • 对于基于梯度下降的优化算法,如线性回归、逻辑回归等,标准化可以加快模型的收敛速度,提高模型的性能。
      • 在机器学习模型中,当需要对特征进行加权求和或线性组合时,标准化可以使不同特征的权重更加合理。
    • 不适用场景
      • 当数据的分布不符合正态分布,且模型对数据分布没有特定要求时,标准化可能没有明显的优势。
      • 对于一些非线性模型,如决策树、随机森林等,标准化对模型性能的提升可能不明显。

三、优缺点

  1. 归一化
    • 优点
      • 简单易实现,计算速度快。
      • 可以将数据缩放到指定的区间,便于模型处理和比较。
      • 对于基于距离的模型,可以有效避免数值范围差异对模型的影响。
    • 缺点
      • 对异常值敏感,异常值可能会导致归一化后的数据范围不准确。
      • 如果数据的最小值和最大值发生变化,需要重新计算归一化参数。
      • 归一化后的数据范围固定,可能会丢失数据的原始分布信息。
  2. 标准化
    • 优点
      • 可以将数据转换为标准正态分布,适用于对数据分布有特定要求的模型。
      • 对异常值的鲁棒性较好,不会受到异常值的较大影响。
      • 可以加快基于梯度下降的优化算法的收敛速度,提高模型的性能。
    • 缺点
      • 计算过程相对复杂,需要计算均值和标准差。
      • 对于非正态分布的数据,标准化后的数据可能仍然不符合标准正态分布。
      • 如果数据的均值和标准差发生变化,需要重新计算标准化参数。

四、代码实现

  1. 归一化(Python代码)
    import numpy as np
    from sklearn.preprocessing import MinMaxScaler# 示例数据
    data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用MinMaxScaler进行归一化
    scaler = MinMaxScaler()
    normalized_data = scaler.fit_transform(data)print("归一化后的数据:")
    print(normalized_data)
    
  2. 标准化(Python代码)
    import numpy as np
    from sklearn.preprocessing import StandardScaler# 示例数据
    data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用StandardScaler进行标准化
    scaler = StandardScaler()
    standardized_data = scaler.fit_transform(data)print("标准化后的数据:")
    print(standardized_data)
    

五、总结

  1. 选择依据
    • 如果数据的量纲不同,且数值范围差异较大,可以选择归一化。
    • 如果数据服从正态分布或近似正态分布,且模型对数据分布有特定要求,可以选择标准化。
    • 对于基于距离的模型,如KNN、K-Means等,归一化通常更合适;对于基于梯度下降的优化算法,如线性回归、逻辑回归等,标准化通常更有效。
  2. 注意事项
    • 在进行归一化或标准化时,需要保存归一化或标准化的参数(如最小值、最大值、均值、标准差等),以便在对新数据进行预处理时使用相同的参数。
    • 对于异常值较多的数据,可以考虑先对数据进行异常值处理,再进行归一化或标准化。
    • 在实际应用中,可以根据模型的性能和数据的特点,尝试不同的归一化和标准化方法,选择最适合的方法。
http://www.lryc.cn/news/2379344.html

相关文章:

  • AI agent与lang chain的学习笔记 (1)
  • 优化 Spring Boot 应用启动性能的实践指南
  • 谢赛宁团队提出 BLIP3-o:融合自回归与扩散模型的统一多模态架构,开创CLIP特征驱动的图像理解与生成新范式
  • 【idea】调试篇 idea调试技巧合集
  • 二叉树深搜:在算法森林中寻找路径
  • golang 安装gin包、创建路由基本总结
  • BMVC2023 | 多样化高层特征以提升对抗迁移性
  • 有哪些GIF图片转换的开源工具
  • C++—特殊类设计设计模式
  • Android 手写签名功能详解:从原理到实践
  • Level2.8蛇与海龟(游戏)
  • 【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块
  • 【Canvas与诗词】醉里挑灯看剑 梦回吹角连营
  • Hue面试内容整理-Hue 架构与前后端通信
  • Linux搜索
  • Git基础原理和使用
  • 实现视频分片上传 OSS
  • 网络I/O学习(一)
  • 4:OpenCV—保存图像
  • Selenium-Java版(css表达式)
  • 产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布
  • 深度学习让鱼与熊掌兼得
  • TDuckX 2.6 正式发布|API 能力开放,核心表单逻辑重构,多项实用功能上线。
  • LeetCode Hot100刷题——除自身以外数组的乘积
  • JAVA EE(进阶)_进阶的开端
  • PDF批量合并拆分+加水印转换 编辑 加密 OCR 识别
  • Go语言交替打印问题及多种实现方法
  • ArcGIS Pro调用多期历史影像
  • 10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析
  • 组态王|组态王中如何添加西门子1200设备