数据标准化是机器学习、数据挖掘中经常使用的一种方法。包括我本身在作深度学习方面的研究时,数据标准化是最基本的一个步骤。数据标准化主要是应对特征向量中数据很分散的状况,防止小数据被大数据(绝对值)吞并的状况。另外,数据标准化也有加速训练,防止梯度爆炸的做用。下面是从李宏毅教授视频中截下来的两张图。html
左图表示未通过数据标准化处理的loss更新函数,右图表示通过数据标准化后的loss更新图。可见通过标准化后的数据更容易迭代到最优势,并且收敛更快。python
[0, 1] 标准化是最基本的一种数据标准化方法,指的是将数据压缩到0~1之间。标准化公式以下,
代码实现,web
def MaxMinNormalization(x, min, max): """[0,1] normaliaztion""" x = (x - min) / (max - min) return x
或者,app
def MaxMinNormalization(x): """[0,1] normaliaztion""" x = (x - np.min(x)) / (np.max(x) - np.min(x)) return x
Z-score标准化是基于数据均值和方差的标准化化方法。标准化后的数据是均值为0,方差为1的正态分布。这种方法要求原始数据的分布能够近似为高斯分布,不然效果会不好。标准化公式以下,
下面,咱们看看为何通过这种标准化方法处理后的数据为是均值为0,方差为1,机器学习
代码实现,svg
def ZscoreNormalization(x, mean_, std_): """Z-score normaliaztion""" x = (x - mean_) / std_ return x
或者,函数
def ZscoreNormalization(x): """Z-score normaliaztion""" x = (x - np.mean(x)) / np.std(x) return x