首页 > 其他分享 >14.归一化——关键的数据预处理方法

14.归一化——关键的数据预处理方法

时间:2024-10-19 19:18:23浏览次数:9  
标签:14 梯度 我们 最小值 归一化 维度 数据 预处理

引言

在人工智能(AI)和机器学习中,归一化(Normalization)是一个重要的预处理步骤。它的主要目的是将数据转换到某个特定的范围。归一化可以帮助模型更高效地学习和提高预测的准确性。归一化在数据预处理方法中占据核心地位,是确保数据质量和模型性能的关键步骤。

通过阅读本篇博客,你可以:

1.知晓归一化的概念

2.掌握常见的归一化方法

一、归一化的概念

1.归一化(Normalization)的目的

要讲归一化,我们不可避免的要提到梯度下降。如果维度过多(超平面),我们很难将其以不同参数的关系表达出来。所以我们使用两个维度作为例子来阐述归一化前与归一化后的区别。如果拿多元线性回归距离,因为多元线性回归的损失函数MSE是凸函数,所以我们把损失函数看成一个碗,损失最小的地方就是碗底的地方(如上图所示)。

上图左是做了归一化的俯瞰图,上图右是没有做归一化的俯瞰图。

"为什么没有做归一化的俯瞰图会显示为椭圆形呢?"。为了回答这个问题,我们不妨设置一些变量用于证明。假设维度 x_{1} 中的每一条数据都远小于维度 x_{2} 中的每一条数据 ,即 x_{1} << x_{2} 。我们将表达式的截距项设为0。那么整个表达式即为 y = \theta_{1}x_{1} + \theta_{2}x_{2} 。因为我们不知道两个维度权重的大小,所以我们可以想象两部分对 y 的贡献是一样的,即 \theta_{1}x_{1} = \theta_{2}x_{2} ,又由于 x_{1} << x_{2} ,最终能得出 \theta_{1}' >> \theta_{2}' 。所以说上右图中 \theta_{1} 的轴要比 \theta_{2} 的轴长,且俯瞰图呈椭圆形。再次思考一下,我们在梯度下降的第一步中,所有的 \theta 都是服从标准正态分布分布的,也就是初始的 \theta_{1} 和 \theta_{2} 是差不多的。所以我们可以得出结论: \theta_{1} 从 初始值到目标位置 \theta_{1}' 的距离要远大于 \theta_{2} 从初始值到目标位置 \theta_{2}' ,也就是调整幅度 D_{1} >> D_{2}。 

从公式的角度去推导,从梯度计算公式 gradient_{j} = (h_{\theta}x - y) \cdot x_{j} 中我们可以知道,梯度与样本 x_{j} 呈正比,所以 x_{1} << x_{2} 可以推导出 g_{1} << g_{2} 。又由于梯度下降公式W_{j}^{t+1} = W_{j}^{t} - \eta \cdot gradient_{j} ,所以我们能得出结论:每次 \theta_{1} 的调整幅度要远小于 \theta_{2} 的调整幅度

根据上述的两个结论,我们可以发现, \theta_{2} 的路程更短,但是步幅更长,意味着相比较 \theta_{1}\theta_{2} 只需要用更少的迭代次数就可以收敛。而我们为了求得最优解,就必须每个维度的 \theta 都收敛才可以,所以就会出现 \theta_{2} 等待 \theta_{1} 的情况。这就是右上图中 \theta 先往下走再往右走的原因。

我们使用归一化的目的就是使得梯度下降的时候可以让不同维度的 \theta 参数都在较为接近的调整幅度上。这就好比社会主义,先使一小部分的人富起来,使损失整体下降,最后等另一部分人富起来。但是更好的情况其实是实现共同富裕,每个人都不落下,让优化的步伐是一致的(如左上图所示)。

2.归一化(Normalization)的本质

归一化的本质是将数据转换到统一的尺度上,使得不同特征或数据点之间具有可比性,简化了数据处理的复杂性,并提高了算法的效率和稳定性。

我们现在知道了归一化的目的是让每个维度的参数共同富裕。梯度下降优化时不能达到步调一致的根本原因其实还是 x_{1} 和 x_{2} 的数量级不同。而归一化可以把 x_{1} 和 x_{2} 的数量级给它统一,扩展一点说,如果有更多特征维度,就要把各个特征维度 x_{1} ,...,x_{n} 的数量级统一,来做到无量纲化。   

二、常见的归一化方法

接下来我们来介绍两种常见的归一化方法。

1.最大值最小值归一化

最大值最小值归一化(Min-Max Scaling)可以将数据映射到特定的区间,如[0,1]或[-1,1]。它的公式为:

x_{i,j}^{*} = \frac{x_{i,j} - x_{j}^{min}}{x_{j}^{max} - x_{j}^{min}}

在这个公式当中,x_{j}^{min} 对应着 X 矩阵中第 j 列特征值中的最小值。同样地,x_{j}^{max} 是对应 X 矩阵中第 j  列特征值中的最大值。x_{i,j} 是 X 矩阵中第 i 行第 j 列的数值,x_{i,j}^{*} 是归一化之后的 X 矩阵中第 i 行第 j 列的数值。

举个例子,比如第 j 列的数值是 [1,2,3,5,5] , x_{j}^{min}  就是 1,x_{j}^{max}  就是 5,那么归一化 之后是 [0,0.25,0.75,1,1] 。如果第 j 列的数值是 [1,2,3,5,50001] ,那么归一化之后是[0,0.00004,0.00006,0.0001,1] 。

从这个例子中我们可以很容易地发现,使用最大值最小值归一化的时候,优点是一定可以把数值归一化到 [0,1] ,缺点是如果有离散值,会使一个数值为1,其它数值几乎为0,所以受到离散值的影响比较大。

2.标准归一化

通常标准归一化中包含了均值归一化方差归一化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

x_{i,j}^{new} = \frac{x_{i,j} - x_{mean} }{Standard-Deviation}

我们也通常将其表示成:

x_{i,j}^{new} = \frac{x_{i,j} - \mu_{j} }{\sigma _{j}}

其中 \mu_{j} 为某列样本数据的均值,\sigma_{j} 为某列样本数据的标准差。

Mean(population) = \mu = \frac{\sum_{k}^{i = 1}f_{i}x_{i}}{n}

StandardDeviation(population) = \sigma =\sqrt{\sum_{k}^{i = 1}}\frac{f_{i}(x_{i}-\mu )^{2}}{n}

其中的 i 为行数,f_{i} 为不同行中 x_{i} 的权重,这里我们可以默认将其看作是 1 。

相对于最大值最小值归一化公式计算机时除以最大值减最小值来说,标准归一化除以的是标准差,而标准差的的计算会考虑到本列样本中的所有样本数据,这样受到离群值的影响就会小很多。这就是方差归一化的好处。

那么我们为什么要减去均值呢?我们可以通过下图来看出。 下左图是梯度下降法的公式,其中 \alpha 代表学习率,A 代表梯度计算中的 h_{\theta}x - y (详情请阅读博客12.梯度下降法的具体解析——举足轻重的模型优化算法-CSDN博客)。我们可以从中看出,当 x_{i} > 0 时,所有维度的梯度都是朝着一个方向前进的,因为每个维度的学习率 \alpha 和误差 A 都是相同的,这就导致了下右图的问题。当我们想将梯度从 W_{t} 变为 W_{t+1} 时,维度1中的 W_1 在下降,维度2中的 W_2 在增加,这就跟我们左图所说的方法相违背。所以我们只能整体的先全部增加,再整体的全部下降,呈现出右下图三角形的另外两边,不能实现图上蓝色所示的最优路径,这样就浪费了我们很多迭代次数和时间。归其根本,还是大多数数据集的数据均为正数,所以我们减去均值,就是给梯度下降法的方向增加更多可能性,减少更多的迭代次数,这就是均值归一化的好处。 

总结

本篇博客重点介绍了归一化这种数据预处理方法。希望可以对大家起到作用,谢谢。


关注我,内容持续更新(后续内容在作者专栏《从零基础到AI算法工程师》)!!!

标签:14,梯度,我们,最小值,归一化,维度,数据,预处理
From: https://blog.csdn.net/dxyl632956/article/details/142917085

相关文章

  • NOIP 计划 R14
    洛谷NOIP计划142024年10月17日Status:CLOSEDAuthor:云浅知处\(\def\EZ{\textcolor{#51af44}{\text{EZ}}}\EZ\)表示简单,10分钟内就能想到。\(\def\HD{\textcolor{#3173b3}{\text{HD}}}\HD\)表示中等,能独立想出\(\def\IN{\textcolor{#be2d23}{\text{IN}}}\IN\)......
  • P3571 [POI2014] SUP-Supercomputer 题解
    P3571「POI2014」SUP-Supercomputer题解一道“较”水的黑题(可一开始苦思冥想还是不会)。本蒟蒻的第一篇黑题题解,求赞。题意简化给定一棵$n$个节点、根节点为$1$的有根树。$q$次询问中每次给定一个$k$,输出需要最少用几次操作次数删除完整棵树。每次操作可以选择删......
  • Android14———Launcher去除抽屉模式的实现,将所有app显示在桌面上
    1、首先需要增加一个标志flag,通过true或者false进行是否去除抽屉模式的表达。FeatureFlags.javapublicstaticfinalbooleanREMOVE_DRAWER=true;2、将allApp显示到桌面Workspace上LoaderTask.java先导包:importandroid.util.Pair;importjava.util.function.......
  • 2024-2025-1 20241407《计算机基础与程序设计》第四周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第四周作业这个作业的目标学习门电路,组合电路,逻辑电路,冯诺依曼结构,CPU,内存,IO管理,嵌入式系统,并行结构,物理安全作业正文https://www.cnblogs.com/wangyih......
  • XC6SLX25T-2CSG324C,XC6SLX45T-2FGG484I,XC7K70T-3FBG484E4914, XILINX/赛灵思 嵌入式
    Xilinx是一家总部位于美国的半导体公司,成立于1984年。他们的主要产品是可编程逻辑器件(FPGA和SoC)和相关的开发工具。Xilinx的FPGA产品被广泛应用于各种领域,包括通信、数据中心、工业控制、汽车、物联网等。他们的产品具有灵活性高、性能强大和可定制性强等特点。2018年,Xilinx宣......
  • P1435 [IOI2000] 回文字串
    尝试了几次发现添加的字符数等于n-正着的和反着的最长公共子序列的长度,即为答案。正序与倒序“公共”的部分就是我们回文的部分,如果把正序与倒序公共的部分减去你就会惊奇的发现剩余的字符就是你所要添加的字符,也就是所求的正解。点击查看代码#include<iostream>#include<st......
  • P1439 【模板】最长公共子序列
    首先考虑动态规划,a[i]==b[j],f[i][j]=f[i-1][j-1]+1,否则f[i][j]=max(f[i-1][j],f[i][j-1]);然后看了一眼数据范围,被卡的实施的,然后考虑优化,看到题目是一个排列于是不要考虑重复的问题,于是只在b里看,如果b[i]在a中的位置,小于我们维护的最长的就不行,否则的话直接加入我们维护的最长......
  • Java 初学 day14
    day141、List集合练习1、获取10个1-20之间的随机数,要求不能重复publicclassListTest1{publicstaticvoidmain(String[]args){Randomrandom=newRandom();//intnumber=random.nextInt(20)+1;//System.out.println(number);......
  • 2024-2025 20241413 《计算机基础与程序设计》第四周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html作业目标门电路组合电路,逻辑电路冯诺依曼结构CPU,内存,IO管理嵌入式系统,并行结构物理安全--------......
  • day14
    SetHashSet:Set集合的子类底层数据结构是哈希表,查找速度快,且元素唯一HashSet中的add方法实际上调用的是HashMap中的put方法底层和元素的hashCode方法值有关我们发现,底层判断待插入的元素是否已经存在哈希表中的方式是:将待插入的元素的哈希值与已经存储......