归一化(normalization)

news/2024/7/7 20:50:02 标签: 机器学习, 算法

归一化是指对数据进行标准化处理,使其均值为0,方差为1,从而消除不同特征量纲的影响,使得不同特征之间可以进行比较和计算。对于时间序列数据,归一化的目的是减弱非平稳性,使得模型能够更好地学习数据的规律。

归一化过程详解

1. 计算均值和方差

首先,对输入序列 x \mathbf{x} x进行均值和方差的计算:

  • x = [ x 1 , x 2 , … , x S ] T \mathbf{x} = [x_1, x_2, \ldots, x_S]^T x=[x1,x2,,xS]T,其中 S S S是序列长度。

  • 计算均值 μ x \mu_x μx
    μ x = 1 S ∑ i = 1 S x i \mu_x = \frac{1}{S} \sum_{i=1}^{S} x_i μx=S1i=1Sxi
    这里的 μ x \mu_x μx是一个向量,表示每个特征(或变量)的均值。

  • 计算标准差 σ x \sigma_x σx
    σ x = 1 S ∑ i = 1 S ( x i − μ x ) 2 \sigma_x = \sqrt{\frac{1}{S} \sum_{i=1}^{S} (x_i - \mu_x)^2} σx=S1i=1S(xiμx)2
    这里的 σ x \sigma_x σx也是一个向量,表示每个特征(或变量)的标准差。

2. 归一化操作

归一化操作的目的是将每个输入值 x i \mathbf{x}_i xi转换为均值为0,方差为1的标准正态分布。

  • 平移操作:减去均值 μ x \mu_x μx
  • 缩放操作:除以标准差 σ x \sigma_x σx

具体公式如下:
x ′ = x − 1 μ x ⊤ σ x \mathbf{x}' = \frac{\mathbf{x} - 1\mu_x^\top}{\sigma_x} x=σxx1μx

其中:

  • x \mathbf{x} x:原始输入序列。
  • 1 ∈ R S × 1 1 \in \mathbb{R}^{S \times 1} 1RS×1:全1向量,用于在时间维度上进行广播。
  • μ x ∈ R 1 × C \mu_x \in \mathbb{R}^{1 \times C} μxR1×C:均值向量。
  • σ x ∈ R 1 × C \sigma_x \in \mathbb{R}^{1 \times C} σxR1×C:标准差向量。
  • x ′ ∈ R S × C \mathbf{x}' \in \mathbb{R}^{S \times C} xRS×C:归一化后的序列。
3. 广播机制解释

在公式 ( x − 1 μ x ⊤ ) / σ x (\mathbf{x} - 1\mu_x^\top)/\sigma_x (x1μx)/σx中:
- 1 μ x ⊤ ∈ R S × C 1\mu_x^\top \in \mathbb{R}^{S \times C} 1μxRS×C:每一列都是均值向量 μ x \mu_x μx,通过与 1 1 1相乘得到。
- x − 1 μ x ⊤ ∈ R S × C \mathbf{x} - 1\mu_x^\top \in \mathbb{R}^{S \times C} x1μxRS×C:每个元素减去相应特征的均值。

  • 最后每个元素除以相应特征的标准差 σ x \sigma_x σx,得到归一化后的序列 x ′ \mathbf{x}' x
4. 公式推导

归一化公式推导过程如下:
x i ′ = x i − μ x σ x x'_i = \frac{x_i - \mu_x}{\sigma_x} xi=σxxiμx
对于序列中的每个值 x i x_i xi,进行平移和缩放,使得归一化后的序列 x ′ \mathbf{x}' x满足标准正态分布的特性,即均值为0,方差为1。

总结

通过以上归一化过程,每个输入序列被转换为均值为0,方差为1的标准正态分布,这使得模型在处理不同序列时能够更好地学习数据规律,减弱非平稳性对模型的影响。归一化后的公式 ( x − 1 μ x ⊤ ) / σ x (\mathbf{x} - 1\mu_x^\top)/\sigma_x (x1μx)/σx充分考虑了时间序列数据的特性,通过平移和缩放操作,使得数据的分布更加稳定,有利于模型训练和预测的准确性。


http://www.niftyadmin.cn/n/5535193.html

相关文章

FreeRTOS的任务间通信

文章目录 4 FreeRTOS任务间通信4.1 队列4.1.1 队列的使用4.1.2 队列的创建,删除,复位4.1.3 队列的发送,接收,查询 4.2 邮箱(mailbox)4.2.1 任务中读写邮箱4.2.2 中断中读写邮箱 4.3 队列集4.3.1 队列集的创…

【VUE3】uniapp + vite中 uni.scss 使用 /deep/ 不生效(踩坑记录三)

vite 中使用 /deep/ 进行样式穿透报错 原因:vite 中不支持,换成 ::v-deep 或:deep即可

第二周:计算机网络概述(下)

一、计算机网络性能指标(速率、带宽、延迟) 1、速率 2、带宽 3、延迟/时延 前面讲分组交换的时候介绍了,有一种延迟叫“传输延迟”,即发送一个报文,从第一个分组的发送,到最后一个分组的发送完成的这段时…

中实新材料:领航绿色建材新纪元,北京创新力量再攀高峰!

近期,北京中实新材料有限责任公司(以下简称“中实新材料”)以一系列耀眼的成果,彰显了其在绿色建材领域的卓越领导地位,不仅在生产效能、技术创新、市场拓展上取得了显著突破,更在社会责任与荣誉表彰上赢得了广泛赞誉。作为中关村科技发展(控股)股份有限公司旗下的璀璨明珠,中实…

如何利用小程序容器技术搭建小程序生态?

小程序,作为现代移动互联网生态中的重要基础设施,正以其独特的创新性和便捷性展现出勃勃生机。截至2021年,全网小程序的数量已经突破了700万,其中微信小程序的开发者达到了300万之多。这一数字不仅代表了小程序在技术层面的成熟度…

JS面试题6——深拷贝和浅拷贝

它们都是用来复制的 1. 浅拷贝(只复制引用,而未复制真正的值) /* 简单赋值 */ var arr1 [a, b, c, d]; var arr2 arr1; /* Object.assign实现的也是浅拷贝 */ var obj1 {a:1, b:2} var obj2 Object.assign(obj1); 2. 深拷贝(是…

深入浅出:npm常用命令详解与实战

theme: smartblue npm是什么 npm(Node Package Manager)是Node.js平台的默认包管理器,它让JavaScript开发者能够轻松地共享、管理和使用彼此编写的代码模块。npm不仅仅是一个安装工具,它还是一个全面的生态系统,用于发…

k8s_如何配置 containerd 使用镜像加速拉取docker.io上的镜像

在 Kubernetes 使用 containerd 作为容器运行时,可以通过配置 containerd 来使用镜像网站(镜像仓库)拉取镜像。这可以通过修改 containerd 的配置文件来实现。以下是详细步骤: 步骤 1:安装 containerd (如果已安装,这一步略过) 如果尚未安装 containerd,可以使用以下命…