中心化(又叫零均值化)和标准化(又叫归一化)

2023-10-30

一、中心化(又叫零均值化)和标准化(又叫归一化)概念及目的?

1、在回归问题和一些机器学习算法中,以及训练神经网络的过程中,通常需要对原始数据进行中心化(Zero-centered或者Mean-subtraction(subtraction表示减去))处理和标准化(Standardization或Normalization)处理

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。

意义:数据中心化和标准化在回归分析中是取消由于量纲不同、自身变异或者数值相差较大所引起的误差。
原理:数据标准化:是指数值减去均值,再除以标准差;
数据中心化:是指变量减去它的均值。
目的:通过中心化和标准化处理,得到均值为0,标准差为1的服从标准正态分布的数据。
 
 

2、(1)中心化(零均值化)后的数据均值为零

(2)z-score 标准化后的数据均值为0,标准差为1(方差也为1)

 

 

三、下面解释一下为什么需要使用这些数据预处理步骤。

在一些实际问题中,我们得到的样本数据都是多个维度的,即一个样本是用多个特征来表征的。比如在预测房价的问题中,影响房价的因素有房子面积、卧室数量等,我们得到的样本数据就是这样一些样本点,这里的、又被称为特征。很显然,这些特征的量纲和数值得量级都是不一样的,在预测房价时,如果直接使用原始的数据值,那么他们对房价的影响程度将是不一样的,而通过标准化处理,可以使得不同的特征具有相同的尺度(Scale)。简言之,当原始数据不同维度上的特征的尺度(单位)不一致时,需要标准化步骤对数据进行预处理。

下图中以二维数据为例:左图表示的是原始数据;中间的是中心化后的数据,数据被移动大原点周围;右图将中心化后的数据除以标准差,得到为标准化的数据,可以看出每个维度上的尺度是一致的(红色线段的长度表示尺度)。
其实,在不同的问题中,中心化和标准化有着不同的意义,

 

 比如在训练神经网络的过程中,通过将数据标准化,能够加速权重参数的收敛。

·       对数据进行中心化预处理,这样做的目的是要增加基向量的正交性。

 

 

 

四、归一化

两个优点:

1)归一化后加快了梯度下降求最优解的速度;

2)归一化有可能提高精度。

1、 归一化为什么能提高梯度下降法求解最优解的速度?

如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是 [1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

 

2、归一化有可能提高精度

一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

3、以下是两种常用的归一化方法:

1)min-max标准化(Min-MaxNormalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:

 

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

2)Z-score标准化(0-1标准化)方法

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。

转化函数为:

其中为所有样本数据的均值,为所有样本数据的标准差。

 

五、中心化(以PCA为例)
下面两幅图是数据做中心化(centering)前后的对比,可以看到其实就是一个平移的过程,平移后所有数据的中心是(0,0).

在做PCA的时候,我们需要找出矩阵的特征向量,也就是主成分(PC)。比如说找到的第一个特征向量是a = [1, 2],a在坐标平面上就是从原点出发到点 (1,2)的一个向量。

如果没有对数据做中心化,那算出来的第一主成分的方向可能就不是一个可以“描述”(或者说“概括”)数据的方向了。还是看图比较清楚。

黑色线就是第一主成分的方向。只有中心化数据之后,计算得到的方向才2能比较好的“概括”原来的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中心化(又叫零均值化)和标准化(又叫归一化) 的相关文章

  • 第二十三篇:UE Ceisum开发之如何加载本地地形及经纬度、空间坐标相互转化

    本篇是基于Cesium for Unreal这个插件 基本入门我这里就不多说了 不会的人可以先跟着这个教程学习一下 Cesium for Unreal快速入门 本篇重点讲述一下如何加载本地地形 1 准备工作 安装最新的Cesiumlab软件
  • JavaScript中的事件循环(event loop)机制

    聚沙成塔 每天进步一点点 专栏简介 调用栈 Call Stack 消息队列 Message Queue 事件循环 Event Loop 宏任务和微任务 示例 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 记得点击上方或者右侧链
  • C#报错:线程间操作无效: 从不是创建控件“XXXX”的线程访问它

    看到一篇很好的博文 如果只是测试用的 不需要上位机多稳定 直接用第一种方法 非常nice 在zhihu上看到的一篇文章 C 线程间操作无效 从不是创建控件 dataGridView 的线程访问它 知乎 https zhuanlan zhih
  • Nginx启动时提示nginx: [emerg] still could not bind()

    今天跟着视频学习Nginx时 启动Nginx报这个nginx emerg still could not bind 于是在网上找了解决方法在这里分享出来 报错界面 解决方法 1 根据Nginx配置文件查看配置的端口默认的是80端口 然后我们
  • PTA 浙大版《C语言程序设计(第3版)》题目集 练习5-2

    本题要求对两个整数a和b 输出其中较大的数 函数接口定义 int max int a int b 其中a和b是用户传入的参数 函数返回的是两者中较大的数 裁判测试程序样例 include
  • 小博客练习

    博客 简单的综合运用 一 了解博客需求 1 主要的分为前台和后台 后台 注册登录 登录 登录 分类管理 显示分类 编辑分类 添加分类 删除分类 文章管理 显示文章 编辑文章 添加文章 删除文章 用户管理 标签管理 等等功能 前台 首页面 列
  • linux常用命令总结

    linux常用命令总结 1 在根目录下查找xxx文件 2 列出程序启动时搜索库路径的过程 3 查看程序或so的依赖 1 查看Test程序依赖的so文件 2 也可以查看so依赖的文件 4 SSH相关 5 查看当前登录的用户 6 查看重启 登录
  • Java面试题整理-高并发篇

    1 synchronized的实现原理以及锁优化 synchronized原理分析 遇见更好的自己 的博客 CSDN博客Java 高并发专题之synchronized关键字1 synchronized作为jvm关键字有三个作用域synchr
  • rancher部署

    Rancher 管理 Kubernetes 集群 Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台 实现了 Kubernetes 集群在混合云 本地数据中心的集中部署与管理 以确保集群的安全性
  • 在脚本中 使用数组 获取列表中选中的复选框id + 获取选中的单选框的值

    var chk value 定义一个数组 input name communicateTeacher claIds checked each function 遍历每一个名字为interest的复选框 其中选中的执行函数 chk value
  • Pandas提取指定行列

    取列 1 通过列名称来提取指定列 推荐 列名 irline sentiment gold name negativereason gold retweet count text get data data airline sentiment
  • kafka基础学习(六):kafka 代码示例

    kafka 代码示例 生成者API在不同版本间无较大变动 消费者 Consumer 提供了两套API 低版本 8 0版本及其以前 API 高版本 8 0版本后 API 两种API的优缺点 高版本Consumer API 优点 高级API写起
  • Qt-UI 界面工具库简介

    一 关于Qt UI界面工具库 Qt UI界面工具库是武汉维仕杰科技有限公司基于Qt上进行扩展开发的控件包和界面工具 并且拥有完全自主的知识产权 得益于丰富的界面开发经验和强大的支持团队 使得Qt UI界面开发工具成为最专业 功能强大的Qt开
  • 他在 B 站有 178 万粉丝,今天免费带你玩转 Python

    近几年 编程越来越火 网上也是铺天盖地的免费教程 中小学生都开始投入到学习中 编程学习从娃娃抓起 甚至有些小学生都做起了 UP 主 教大家学编程 光从编程的难易度来说 Python 简单 易学 零基础 跨专业都很容易上手 想学全网超详细 P
  • Linux内核配置选项详解

    对于每一个配置选项 用户可以回答 y m 或 n 其中 y 表示将相应特性的支持或设备驱动程序编译进内核 m 表示将相应特性的支持或设备驱动程序编译成可加载模块 在需要时 可由系统或用户自行加入到内核中去 n 表示内核不提供相应特性或驱动程
  • Qt连接SQL server数据库

    Qt连接SQL server数据库 由于课程设计需要 需要用qt设计一个界面来操作数据库 在建立数据库连接时 期间遇到各种问题 Qt 连接SQL server数据大致可以概括为下图的三层模型 箭头代表他们之间的依赖关系 第一步 建立目标数据
  • FeignClient的参数传递给服务提供方的方式(简单数据类型、对象)

    1 简单数据类型的参数采用的restFull的方式 发送Get请求 服务提供方的controller 类名加了窄化请求 RequestMapping path house produces application json charset
  • 前端制作简单的“注册页面——阅读协议”页面及效果

    注 如对文中的scrollHeight scrollTop clientHeight属性有所一伙 请参考博文 JavaScript中元素client offset scroll相关属性的应用 链接 https blog csdn net m
  • 开源进展

    作为一个友好的 功能丰富的区块链中间件平台 WeBASE一直致力于降低区块链开发者的研发门槛 提高区块链开发效率 如今 WeBASE v1 5 4来了 此次更新新增区块链应用实训课程案例集 以及管理台操作指引与设计说明 助力社区开发者更快捷
  • 自定义指令 v-clickoutside 使用方法

    引入 import Clickoutside from element ui src utils clickoutside 声明 export default directives Clickoutside data function re

随机推荐

  • CentOS 安装Vim 编辑器

    在CentOS环境下使用vim提示 vim command not found时 说明系统还没有安装vim 安装步骤 1 检查是否已安装 查看一下你本机已经存在的包 确认一下你的VIM是否已经安装 输入 rpm qa grep vim 如果
  • 【详解】Thymeleaf中的基本表达式:@{},#{},${},*{}

    1 thymeleaf中的超链接表达式 话说例子如下 a a a a 2 thymeleaf中的消息表达式 或者是资源表达式 一般和 th text一起使用多一点 取出来的值取代了标签中的值 key 对应的value 如果标签中间已经有值
  • STM32的I2C主从机通信

    最近一段时间在做I2C通信协议 需要在两块STM32之间做I2C通信 定的是主机用IO口模拟 从机用的是STM32的硬件I2C 我的项目要求是需要主从机之间能够进行一串数据收发而不出错 实验时在主机方面 利用IO口模拟主机 只需要理解时序就
  • Java IDEA辅助键和快捷键

    快速生成main方法 psvm 回车 快速生成输出语句 sout 回车 内容辅助键 Ctrl Alt space 内容提示 代码补全等 格式化 Ctrl Alt L
  • java nio 编程

    转自 http yangguangfu iteye com blog 774194 Java代码 晚上学习了下Java 的 NIO Socket编程 写了下面这个小程序 包括服务器端与客户端 实现的功能为客户端向服务器端发送随即数目的消息
  • Java Executors(线程池)

    Sun在Java5中 对Java线程的类库做了大量的扩展 其中线程池就是Java5的新特征之一 除了线程池之外 还有很多多线程相关的内容 为多线程的编程带来了极大便利 为了编写高效稳定可靠的多线程程序 线程部分的新增内容显得尤为重要 有关J
  • PHP学习记录--基础篇

    目录 一 变量定义 二 循环结构 三 函数 四 文件加载原理 五 错误处理 六 字符串 七 数组 一 变量定义
  • C进阶之实现数据库(mysql 5.0)版本通讯录

    前言 断断续续历时两天百度的知识探索 继静态 动态 文件版本的通讯录之后 倔强的我开启了数据库版本通讯录 在动态版本通讯录的基础上将通讯人信息数据插入数据库中 初始化通讯录完成后 再从数据库中查询通讯人信息数据 的痛苦长路 想说脏话但是稍微
  • 在九天毕昇平台运行paddle出现fatal error: ‘Segmentation fault‘ is detected by the operating system

    我在九天毕昇平台使用paddlepaddle框架训练实例时 调用GPU出现下文错误 C Traceback most recent call last No stack trace in paddle may be caused by ex
  • SQL查询结果去重

    SQL查询结果去重 使用distinct关键字 去除重复的记录行 SELECT loc FROM dept SELECT DISTINCT loc FROM dept 案例 描述 题目 现在运营需要查看用户来自于哪些学校 请从用户信息表中取
  • opengl 光线追踪_基于CUDA的GPU光线追踪

    先放最终效果 实时光线追踪https www zhihu com video 1073144630408941568 十天前我打算用我之前的CPU渲染器渲染一张博客封面 大概是这张 我之前的渲染器是使用C 写的 已经进行过多线程优化 但是为
  • H5页面怎么跳转到公众号主页?看过来

    前言 做公众号开发的小伙伴 可能会遇到这种需求 在一个H5页面点击一个关注公众号按钮跳转到公众号主页 听到这个需求的一瞬间 疑惑了 这不可能 摸了摸高亮的额头 没办法 做还是要做的 开始上解决方案 方案一 自己做一个关注公众号的引导页面 让
  • 【Node.js项目】大事件项目:后台架构图(含具体技术栈)、典型代码

    项目学习自 https www bilibili com video BV1a34y167AZ 文章目录 1 项目后台架构图 含具体技术栈 2 项目目录结构 3 项目典型代码 config config js app js schema u
  • docker进阶笔记(高级版)

    1 mysql主从复制 mysql master 新建mysql master容器 docker run d p 3307 3306 privileged true v Users yaoqiang app data mysql maste
  • Unity:Quaternion类(四元数)

    Unity Quaternion 四元数 一 四元数理解 四元数左乘向量 表示将该向量按照四元数表示的角度旋转 例如 Vector3 point new Vector3 0 0 10 Vector3 newPoint Quaternion
  • 微信小程序中图片占满整个屏幕实现方法

    将body和html设置为100 这样我们就可以在他们的子元素中使用height 100 来使的我们的容器元素占满屏幕的高度啦 但是在微信小程序中 是没有dom对象的 根节点是page 使用page height 100 果然 是可行的 高
  • C/C++实现快速排序(两种方式)

    介绍 快速排序是对冒泡排序算法的一种改进 快速排序算法通过多次比较和交换来实现排序 流程如下 图片来自百度 实现 以下有两种实现方式 说是两种 其实就是在交换元素时具体细节上有点不同罢了 方式一 int Partition int A in
  • Spring的RestTemplate是什么东西?它有什么作用?

    RestTemplate是Spring提供的一个服务之间请求的工具 并且可以自动实现json的序列化和反序列化
  • pycharm导包不成功,如何清缓存,设置源目录

    pycharm导入本地包不成功 解决方法 1 清缓存 2 pycharm设置源目录
  • 中心化(又叫零均值化)和标准化(又叫归一化)

    一 中心化 又叫零均值化 和标准化 又叫归一化 概念及目的 1 在回归问题和一些机器学习算法中 以及训练神经网络的过程中 通常需要对原始数据进行中心化 Zero centered或者Mean subtraction subtraction表