归一化与标准化
来源:互联网 发布:音轨合成软件 编辑:程序博客网 时间:2024/05/17 08:10
在机器学习和数据挖掘中,经常会听到两个名词:归一化(Normalization)与标准化(Standardization)。它们具体是什么?带来什么益处?具体怎么用?本文来具体讨论这些问题。
一、是什么
1. 归一化
常用的方法是通过对原始数据进行线性变换把数据映射到[0,1]之间,变换函数为:
其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。
2. 标准化
常用的方法是z-score标准化,经过处理后的数据均值为0,标准差为1,处理方法是:
其中,其中μ是样本的均值, σ是样本的标准差,。该种归一化方式要求原始数据的分布可以近似为高斯分布,否标准化的效果会变得很糟糕。它们可以通过现有样本进行估计。在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
二、带来什么
归一化的依据非常简单,不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。比如两个人体重差10KG,身高差0.02M,在衡量两个人的差别时体重的差距会把身高的差距完全掩盖,归一化之后就不会有这样的问题。
标准化的原理比较复杂,它表示的是原始值与均值之间差多少个标准差,是一个相对值,所以也有去除量纲的功效。同时,它还带来两个附加的好处:均值为0,标准差为1。
均值为0有什么好处呢?它可以使数据以0为中心左右分布(这不是废话嘛),而数据以0为中心左右分布会带来很多便利。比如在去中心化的数据上做SVD分解等价于在原始数据上做PCA;机器学习中很多函数如Sigmoid、Tanh、Softmax等都以0为中心左右分布(不一定对称)。
三、怎么用
在涉及到计算点与点之间的距离时,使用归一化或标准化都会对最后的结果有所提升,甚至会有质的区别。那在归一化与标准化之间应该如何选择呢?,如果把所有维度的变量一视同仁,在最后计算距离中发挥相同的作用应该选择标准化,如果想保留原始数据中由标准差所反映的潜在权重关系应该选择归一化。另外,标准化更适合现代嘈杂大数据场景。
实现:
使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化。
from sklearn import preprocessing
x=np.array([[1., -1., 2.]
[2., 0., 0.]
[0., 1., -1.]])
- 统计数据归一化与标准化
- 统计数据归一化与标准化
- 统计数据归一化与标准化
- 标准化与归一化
- 归一化与标准化处理
- 归一化与标准化详解
- 归一化与标准化
- 统计数据归一化与标准化
- 标准化与归一化
- 理解:回归与拟合、归一化与标准化
- 理解:回归与拟合、归一化与标准化
- 数据规范中的归一化与标准化:
- 数据预处理-归一化与z-score标准化
- 数据归一化与z-score标准化
- 归一化(Normalization)与标准化(Standardization)
- Matlab中的数据预处理-归一化(mapminmax)与标准化(mapstd)
- 数据规范中的归一化(Normalization)与标准化(Standardization)
- 数据标准化/归一化方法
- C++作业6
- 安卓android银联支付Unionpay
- android5.1 增加ethernet设置(DHCP与Static ip)
- noise噪声库
- Java 自定义注解实现ORM对象关系映射
- 归一化与标准化
- 历届试题网络寻路(dfs)
- Python pandas
- [XJOI]黑白树
- Android 动态代理浅叙
- jquery中用width还是width(val)获取当前窗口的宽度
- JAVA中子父类的调用
- Codeforces Round #319 (Div. 2)B. Modulo Sum(数学,DP)
- Java注解初体验(简单ORM映射框架)