数据处理中的归一化、标准化(Standardization)、中心化和正则化(Normalization)区别详解

利用数据集对机器学习或深度学习模型进行训练前要对数据进行预处理,除了数据清洗(如处理数据缺失、数据异常等问题),还有一类数据预处理的方法经常用到,即数据的归一化、标准化和正则化等。作者在浏览了大量网上资料发现,很多人对这些概念不是很清楚,甚至有些机器学习和人工智能领域的培训老师也对这几个概念有些模糊。本文将详细介绍标题中所举的几个概念的意思,希望对大家的学习有所帮助!

(1)归一化

归一化是数据scaling(缩放)中的一种,是把数据缩放到[0,1]或[-1,1]之间。常用的数据归一化方法是线性函数归一化,公式为:
x’ = (x - X_min) / (X_max - X_min)
利用sklearn库实现方法为:(以鸢尾花数据集为例,下同)

from sklearn.preprocessing import MinMaxScaler
MinMaxScaler().fit_transform(iris.data)

这种方法可将数据scaling到[0,1]之间,此外还有平均归一化和非线性归一化等,其中平均归一化公式如下:
x’ = (x - μ) / (MaxValue - MinValue)
非线性归一化如下:
对数函数scaling:y = log10(x)
反余切函数scaling:y = atan(x) * 2 / π

(2)标准化(Standardization)

标准化又叫Z-score规范化,标准化需要计算数据(例如特征矩阵中某特征对应的数据)的均值和标准差,公式如下所示:
x’ = (x - μ)/σ
标准化的作用是将原始数据映射到均值为 0,标准差为 1 的分布上。
*** 注意:标准化并不能使数据处于[0,1]之间,很多博客把标准化和归一化混淆了。
利用sklearn库实现方法为:

from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(iris.data)

(3)中心化

中心化的处理公式为:
x’ = x - μ
即各元素与平均数之差,往往先进行中心化在进行标准化;中心化又称零均值化。

(4)正则化(Normalization)

标准化是依照特征矩阵的列处理数据,将样本的特征值转换到同一量纲下。正则化是依照特征矩阵的行处理数据,其目的是使样本向量在点乘运算或其它核函数计算相似性时拥有统一的标准,也就是都转化为单位向量。
正则化主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。
p-范数的计算公式:
利用sklearn库实现方法为:

from sklearn.preprocessing import Normalizer
Normalizer().fit_transform(iris.data)

*** 注意正则化的英文才是Normalization,有很多人将正则化的英文名Normalization安到归一化上。

你可能感兴趣的:(机器学习,TensorFlow,计算机视觉)