【机器学习】一文搞懂标准化,归一化,正则化

这篇具有很好参考价值的文章主要介绍了【机器学习】一文搞懂标准化,归一化,正则化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

对于机器学习中的标准化,归一化和正则化的理解,一直都比较模糊,而且在许多技术书籍中,对于它们的使用基本都是一笔带过,不理解概念的话,就不知具体对数据做了哪些操作。因此,在这里专门对这几个概念做学习与总结。

学习之前,先抛出几个问题:

  • 这几个概念对数据的具体处理的操作是啥?
  • 这些数据的处理适用于哪些场景, 有什么优缺点?

标准化和归一化:

归一化定义:

  • 归一化(Normalization): 将一列数据变化到某个固定区间(范围)中, 通常, 这个区间是[0,1],广义的讲, 可以是各种区间, 比如映射到[0,1] 也可以映射到其他范围,在图像中可能会映射到[0, 255], 其他情况也有可能映射到[-1,1];
  • 最大值最小值的归一化,范围[0,1]

X i − X m i n X m a x − X m i n \frac{X_i -X_{min}}{X_{max} - X_{min}} XmaxXminXiXmin

  • 均值归一化(Mean normalization), 范围[-1,1]

X i − X ‾ X m a x − X m i n \frac{X_i -\overline{X}}{X_{max} - X_{min}} XmaxXminXiX

标准化定义:

  • 标准化(Standardization): 将数据变换为均值为0,标准差为1的分布。

标准化 = X i − μ σ 标准化 = \frac{X_i - \mu}{\sigma} 标准化=σXiμ

这里需要研究一下公式中的两个数据 μ \mu μ σ \sigma σ 的含义

μ \mu μ : 表示所有样本数据的均值
σ \sigma σ : 表示所有样本数据的标准差

总体标准差:

σ = ∑ i = 1 n ( x i − μ ) 2 n \sigma = \sqrt{ \frac{\sum_{i=1}^n(x_i - \mu)^2}{n} } σ=ni=1n(xiμ)2

样本标准差:

S = ∑ i = 1 n ( x i − x ‾ ) 2 n − 1 S = \sqrt{ \frac{\sum_{i=1}^n(x_i - \overline{x})^2}{n-1} } S=n1i=1n(xix)2

  • 什么是批标准化(Batch Normalization):
    个人理解:批标准化和标准化的不同在于, 计算过程中,批标准化只会选取一小批数据先缩放与平移然后训练参数, 而标准化则会选取所有的数据进行计算。

思考:
一. 标准化之前的数据和标准化之后的数据分别是啥样子的, 通过几个图片来说明?

  • 散点图的标准化
    【机器学习】一文搞懂标准化,归一化,正则化

  • 下面是知乎中找到的对比图片,把数据从扁拍圆了。

【机器学习】一文搞懂标准化,归一化,正则化

归一化or正则化之后:
【机器学习】一文搞懂标准化,归一化,正则化

  • 下图源于 Andrew Ng 的课程讲义:

【机器学习】一文搞懂标准化,归一化,正则化

标准化之后, 可以更容易的得出最优参数 w w w b b b以及计算出 J ( w , b ) J(w,b) J(w,b)的最小值,从而达到加速收敛的效果。

  • 下图是知乎上的两个对比图片, 图中包含体重数据和身高数据:
    【机器学习】一文搞懂标准化,归一化,正则化

标准化之后:
【机器学习】一文搞懂标准化,归一化,正则化

  • 如何数据中有异常点,标准化和归一化之后的数据区别会是什么样子的呢?
    参考:
    https://www.zhihu.com/question/361290840/answer/939504181

标准化更好保持了样本间距。当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。

  1. 标准化之后,为什么可以做到数据的标准差为1?

标准化之后,数据的均值为0 ,这个可以很明显的看出来,相加一下就得出来了。但是如何证明数据的标准差为1 呢?

标准化公式: a i = x i − μ σ a_i = \frac{x_i - \mu}{\sigma} ai=σxiμ

其中标准差 σ \sigma σ的公式为:

σ = ∑ i = 1 n ( x i − μ ) 2 n \sigma = \sqrt{ \frac{\sum_{i=1}^n(x_i - \mu)^2}{n} } σ=ni=1n(xiμ)2

推理如下:
假设新数据为 a i a_i ai, 新数据的均值为0,则新数据的标准差可以简化如下:

新标准差 = ∑ i = 1 n ( a i ) 2 n 新标准差 = \sqrt{ \frac{\sum_{i=1}^n(a_i )^2}{n} } 新标准差=ni=1n(ai)2

下面只需要证明:

∑ i = 1 n ( a i ) 2 = n \sum_{i=1}^n(a_i )^2 = n i=1n(ai)2=n

其中:

( a i ) 2 = ( x i − μ ) 2 / ( ∑ i = 1 n ( x i − μ ) 2 n ) (a_i)^2 = (x_i - \mu)^2 / (\frac{\sum_{i=1}^n(x_i - \mu)^2}{n}) (ai)2=(xiμ)2/(ni=1n(xiμ)2)

这种情况下,把 ( a i ) 2 (a_i)^2 (ai)2累加起来, 分母和分子不就抵消了吗,可以得出:

∑ i = 1 n ( a i ) 2 = n \sum_{i=1}^n(a_i )^2 = n i=1n(ai)2=n

因此,成功证明,数据在标准化之后,计算出的标准差为1

中心化

  • 中心化: 也叫做零均值处理, 就是将每个原始数据减去这些数据的均值,本文就不详述了。

标准化和归一化的区别与联系,使用场景

联系

首先说说标准化和归一化的联系:
标准化和归一化其实本质上都是对数据的线性变换,(也就是说,变换前后,数据的形状是一样的,数据的排列顺序没有改变)

我们以标准化为例,说明一下数据是如何平移变换的:

X i − μ σ = X i σ − μ σ \frac{X_i - \mu}{\sigma} = \frac{X_i }{\sigma} - \frac{\mu}{\sigma} σXiμ=σXiσμ

当数据给定后,可以认为 μ \mu μ σ \sigma σ都是常数, 因此数据就是先缩放 σ \sigma σ,再平移 μ σ \frac{\mu}{\sigma} σμ, 这就是一个线性变换。

区别

  1. 归一化的数据,会严格限定变换后的范围区间; 而标准化的数据,在变换之后就没有固定的数据范围, 只是均值为0, 标准差为1。
  2. 归一化的数据缩放比例可能只和极值有关, 而标准化的数据的缩放比例会受到每个数据的影响。

适用场景:

标准化,归一化的用途:

  • 机器学习中有一些算法需要使用到距离的计算, 例如PCA, KNN, kmeans等,这种情况下距离的计算容易受到较大的值的影响,因此适合使用标准化,归一化。
  • 参数估计的时候会使用梯度下降算法, 在使用梯度下降算法求解最优化问题的时候,使用标准化,归一化的方法可以加快梯度下降的求解速度, 提升模型的收敛速度。
  • 如果使用算法不涉及距离相关的, 比如决策树模型,则不需要使用归一化,标准化。

什么时候使用归一化,什么时候使用的正则化:

  • 如果对处理后的数据范围有严格要求,使用归一化。

  • 如果数据不稳定,存在极端的最大最小值,建议使用标准化。

  • 使用距离度量相似性或者使用PCA技术进行降维的时候,建议使用标准化。

  • 问题: 均值为0 方差为1 的分布一定是正态分布吗?(自查)

正则化

  • 为什么要使用正则化?
    正则化是为了防止过拟合,进而增强泛化能力。 之前介绍的标准化,归一化,是作用与训练数据,方便模型训练,提升模型收敛速度的。而正则化是作用于目标函数,减缓参数出现过拟合的现象。

在训练模型的过程中,有许多参数需要通过对损失函数求极小值来确定, 求参数的过程中,希望梯度下降到最小值点, 最终找到合适的w确定模型。

一个原始的,不带正则的线性损失函数如下:

E ( w ) = 1 2 ∑ n = 1 N { t n − w T ϕ ( x n ) } 2 (1) E(\mathbf w) =\frac{1}{2} \sum_{n=1}^{N}\{t_n-\mathbf w^T \phi (\mathbf x_n)\}^2 \tag{1} E(w)=21n=1N{tnwTϕ(xn)}2(1)

E ( w ) E(\mathbf w) E(w) 是损失函数
t n t_n tn 是测试集合的真实输出,可以看作是训练时候的标签
w \mathbf w w是权重,需要训练得到
ϕ ( ) \phi () ϕ() 是基函数
n 表示测试样本的个数
这个损失函数可以看作是一个平方差的和, 增加的常数因子是为了方便计算

加上正则化的的损失函数如下:
1 2 ∑ n = 1 N { t n − w T ϕ ( x n ) } 2 + λ 2 w T w (2) \frac{1}{2} \sum_{n=1}^{N}\{t_n-\mathbf w^T \phi (\mathbf x_n)\}^2 + \frac{\lambda}{2} \mathbf w^T \mathbf w \tag{2} 21n=1N{tnwTϕ(xn)}2+2λwTw(2)

从公式中我们可以看出, 我们可以将 λ \lambda λ(也被称之为正则化系数)设置大一些,使得对参数的限制增强。我们加入的正则项,会在训练过程中自动限制参数过大的现象,从而减少过拟合。

1 2 ∑ n = 1 N { t n = w T ϕ ( x n ) } 2 + λ 2 w T w \frac{1}{2}\sum_{n=1}^N\{t_n = \pmb{w}^T \phi(\pmb{x}_n)\}^2 + \frac{\lambda}{2}\pmb{w}^T\pmb{w} 21n=1N{tn=wTϕ(xn)}2+2λwTw

再来介绍一下什么是一次正则,二次正则。
1 2 ∑ n = 1 N { t n − w T ϕ ( x n ) } 2 + λ 2 ∑ j = 1 M ∣ w j ∣ q (3) \frac{1}{2} \sum_{n=1}^{N}\{t_n-\mathbf w^T \phi (\mathbf x_n)\}^2 + \frac{\lambda}{2} \sum_{j=1}^{M} {\vert w_j \vert}^q \tag{3} 21n=1N{tnwTϕ(xn)}2+2λj=1Mwjq(3)

公式里的q就表示模型的阶次,我们可以取 q=1,q=2等等。其中二次正则是比较常用的。这里介绍一下一次正则项的优势: 可以降低维度, 比二次正则更稀疏, 但是, 一次正则有拐点,不是处处可微的,这就给计算带来了难度。

总结:

终于搞懂了标准化,归一化和正则化的区别了。标准化和归一化是作用于训练数据,而正则化是作用与训练参数防止过拟合的。 一般来讲,只要模型涉及距离计算的,都需要使用标准化或者正则化,具体使用哪个方法,可以视模型的实际情况来确定。

参考文档:
https://blog.csdn.net/kdongyi/article/details/83932945
https://zhuanlan.zhihu.com/p/29957294
https://www.zhihu.com/question/20467170/answer/839255695
https://blog.csdn.net/weixin_36604953/article/details/102652160
公式参考:
https://www.cnblogs.com/daizongqi/p/11525397.html文章来源地址https://www.toymoban.com/news/detail-437384.html

到了这里,关于【机器学习】一文搞懂标准化,归一化,正则化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 标准化归一化方法

    分别是0-1标准化(Max-Min Normalization)和Z-Score标准化。 1.1 0-1标准化方法 每一列中的 元素减去当前列的最小值 , 再除以该列的极差 。 不过在深度学习领域,我们更希望输入模型的数据是Zero-Centered Data,此时 Z-Score标准化会更加合适。 1.2 Z-Score标准化 Z-Score标准化并不会将数据

    2023年04月12日
    浏览(44)
  • 数据标准化与归一化 及其区别

      数据一般都是有单位的,比如身高的单位有米、厘米等。需要对此类数值型特征进行 无量纲化处理 ,即是使不同规格的 数据转换到同一规格 。常见的无量纲化方法有 标准化 和 归一化 。 主要参考:机器学习算法:特征工程 某些算法要求样本具有0均值和1方差,即 需要

    2024年02月09日
    浏览(43)
  • matlab中矩阵的归一化和标准化处理

    1、归一化:将数据映射到0-1的区间中。 matlab中矩阵的归一化处理: X=(value-value_min) / (value_max-value_min) 函数:mapminmax(A,M),A—需要处理的矩阵,M—需要映射到的范围,M通默认为[-1,1],也可设置为常用的0和1之间。 结果: 2、标准化:将数据映射到方差为1,均值为0的数据。

    2024年04月13日
    浏览(37)
  • 什么是归一化,它与标准化的区别是什么?

    本文主要讲述的是标准化与归一化之间的区别、相同点和联系,以及各自的应用场景 归一化:主要应用与没有距离计算的地方(丢失分布与距离,保留权值信息)— 奇异数据,小数据场景 标准化:主要应用于不关乎权重的地方(保留分布与距离,丢失权值信息)—-需要距离

    2024年02月04日
    浏览(49)
  • 归一化 (Normalization)、标准化 (Standardization)和中心/零均值化 (Zero-centered)

    目录 一、概念 1、归一化(Normalization):  2、标准化(Standardization): 3、中心化/零均值化(zero-centered): 二、联系和差异: 三、标准化和归一化的多种方式 三、为什么要归一化/标准化? 3.1、数据的量纲不同;数量级差别很大 3.2、避免数值问题:太大的数会引发数值问

    2024年02月04日
    浏览(35)
  • 一文详解 DolphinDB SQL 标准化

    在脚本层面,自 1.30.22 / 2.00.10 版本起,DolphinDB SQL 开始支持: 全大写或全小写的书写方式 脚本的换行不影响语法解析,但存在两种特殊情况: 组合不允许拆分,如 order by, group by, context by, pivot by, union all, inner join, nulls first 等。 不使用 as 指定字段别名时,别名

    2024年02月13日
    浏览(38)
  • 【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

    卷积神经网络(convolutional neural network, CNN)在提出之初被成功应用于手写字符图像识别,2012年的AlexNet网络在图像分类任务中取得成功,此后,卷积神经网络发展迅速,现在已经被广泛应用于图形、图像、语音识别等领域。 图片的像素数往往非常大,如果用多层全连接网络来

    2024年02月08日
    浏览(43)
  • MATLAB学习记录:标准化制图/图标/字号/字体/label

    1、使用matlab绘图指令 plot为绘图指令,其中第一个变量为x轴,第二个变量为y轴,若要在一张图上绘制多个图案,则需要使用hold on命令,然后执行下一个画图命令。 2、打开help文件查看指令的命令 以上即为查看plot指令的用法 3、标准化绘图

    2024年02月16日
    浏览(35)
  • MLOPS:大数据/服务器下的大规模机器学习技术—流水线处理技术的简介(标准化/自动化/可复用化)、常用框架(Pipeline/TFX、Airflow/Beam/Kubeflow/MLflow、Fli

    MLOPS:大数据/服务器下的大规模机器学习技术—流水线处理技术的简介(标准化/自动化/可复用化)、常用框架(Pipeline/TFX、Airflow/Beam/Kubeflow/MLflow、Flink/Kafka)之详细攻略 目录 流水线处理技术的简介 1、流水线处理技术的概述(标准化/自动化/可复用化)

    2024年02月08日
    浏览(58)
  • JAVA学习-网络编程.Java11标准化的HTTP Client

            Java 11引入了标准化的HTTP Client,它提供了一种现代化、灵活且易于使用的方式来进行HTTP通信。下面是关于Java 11标准化的HTTP Client的概述以及与其他比较和高级应用的说明:         Java 11标准化的HTTP Client是一种替代HttpURLConnection的新的HTTP客户端库。它提供了更

    2024年04月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包