中心化、标准化、归一化
图.左边是原始数据的分布情况、中间是经过中心化的分布情况、右边是经过标准化后的情况。图片来自知乎
1. 中心化
Zero-centered或者Mean-subtraction
- 说明
中心化,就是把数据整体移动到以0为中心点的位置
把数据当做整体,将数据的中心点移动到以0的位置
^ ^
| |
| * * |
| * |
| * * * | *
-------+-------> => -------*-------
| * | *
| |
| |
- 具体计算
将数据减去这个数据集的平均值。
- 示例
例如有一系列的数值
1,3,5,7,9
计算平均值为(1 + 3 + 5 + 7 + 9 )/ 5 = 5
1-5 = -4
3-5 = 2
5-5 = 0
7-5 = 2
9-5 = 4
数据变为
-4,2,0,2,4
2. 标准化
Standardization
- 说明
把整体的数据的中心移动到0,数据再除以一个数。
- 具体计算
在数据中心化之后,数据再除以数据集的标准差(即数据集中的各项数据减去数据集的均值再除以数据集的标准差)
再拿上面的数值举例
原始数据为
1,3,5,7,9
经过计算得到数据的标准差约为σ = 2.8
(1 - 5)/2.8 = -1.42
(3 - 5)/2.8 = -0.71
(5 - 5)/2.8 = 0
(7 - 5)/2.8 = 0.71
(9 - 5)/2.8 = 1.42
标准化之后的结果为
-1.42,-0.71,0,0.71,1.42
3. 归一化
Normalization
- 说明
把数据的最小值移动到0,在除以数据集的最大值。
- 具体计算
官方版
首先找到这个数据集的最大值max
以及最小值min
,然后将max
-min
,得到两个的差值R
,也就是叫做极差
,然后对这个数据集的每一个数减去min
,然后除以R
。
x' = (x - X_min) / (X_max - X_min)
民间版
这里你要是不记得中心化的话,先看一下中心化。然后开始,首先我们把数据仍然当做整体,然后把最小的点移动到0这个位置,然后回过头看计算公式是不是变了。由于min
变成了0
,那么计算的公式就是x / max'
,这里的max'
是经过移动之后的数值。
把数据当做整体,然后把最小的点移动到0这个位置
^ ^
| |
| * * |
| * * *
| * * | *
-------+-------> => -------*---*---
| |
| |
| |
- 示例
还是拿上面的例子举例
首先用官方版的方式计算一下
原始数据
1,3,5,7,9
最大值9
,最小值1
,极差9-1 = 8
接下来计算归一化后的数值
(1 - 1) / 8 = 0
(3 - 1) / 8 = 0.25
(5 - 1) / 8 = 0.5
(7 - 1) / 8 = 0.75
(9 - 1) / 8 = 1
然后用民间版的方式计算一下
原始数据
1,3,5,7,9
按照整体把最小值移动到0,得到
0,2,4,6,8
然后除以最大值
0 / 8 = 0
2 / 8 = 0.25
4 / 8 = 0.5
6 / 8 = 0.75
8 / 8 = 1
可以看到,其实这个归一化还是那种计算小的占最大的比例。那么问题来了,那为什么不这样算呢?就是说不移动整体,直接把每一个数占据最大数的比例求出来不就行了吗?
也就是这样:
1 / 9 = 0.11
3 / 9 = 0.33
5 / 9 = 0.55
7 / 9 = 0.77
9 / 9 = 1
额,说实话,这里我觉得没什么不妥当,同样也是将数据收缩在0~1
的范围内,但是我换了个数据好像就...
再拿一个数据
5,6,7,8,9
按照上面的计算,这里暂时简称为“简单除法法”
5 / 9 = 0.55
6 / 9 = 0.66
7 / 9 = 0.77
8 / 9 = 0.88
9 / 9 = 1
而使用归一化进行计算是这样的:
(5 - 5) / 4 = 0
(6 - 5) / 4 = 0.25
(7 - 5) / 4 = 0.5
(8 - 5) / 4 = 0.75
(9 - 5) / 4 = 1
可以看到使用“简单除法法”进行计算得到的位于0~1
范围内的数值没有经过归一化后的数据“拉得开”,好像腻乎在一块一样;同样是相对于某一数值的比例,使用归一化就不仅能将数据在收缩在0~1
范围内,而且还让数据在这个范围内展开。这里不是太好想象为什么是这样?这样,我们打开photoshop
,你没有看错,打开它
然后文件
->新建
->确定
->新建一个图层
,好,新建了一个,然后我们画一个方块,矩形工具
->按住shift拖动
->得到一个方块,然后按住alt
对着方块拖动鼠标,直到拖出三个,然后按照下图所示的方式排列。
之后按住ctrl
加选图层,把这三个方块的对应的图层都选中,右键
->合并形状
。然后把三个方块拖到画布的右上角
按ctrl + t
,可一看到在中心有一个点,这个点是变形时候的参考点,我们把点移动到最下面这个方块的左下角。然后把鼠标移动到缩放框的右上角按住shift+alt
进行拖动,感受一下拖动的感觉;然后这个时候把大小还原,将那个中心点移动到这个画布的左下角,然后再次把鼠标移动到缩放框的右上角按住shift+alt
进行拖动,感受一下拖动的感觉 。
中心化、归一化、标准化有什么作用呢?
中心化上面的过程我们看到了,相当于把数据位移
了一下。在说这个之前,我们来玩一下找不同
,百度搜一下找不同
,我随便找了一张,我还记得这是朵拉,哈哈,你能快速找到不同吗?好像是有3处不同。这里有没有骚一点的操作呢?
还记得上面的家伙吧你应该还没有关吧,进入photoshop
。然后用photoshop
把连在一起的两张图裁剪开,分别放到两个图层中。得到下面的图。
然后,现在你手上有ps
,你怎么快速找不同呢?
我会将两张图片叠在一起,就像这样,然后来回调整最上面一个图层的不透明度,可以看到明显变化的位置就是不同啦!你可以试一下啊!
归一化、标准化可以说都是线性的,在知乎 - 微调
的回答中,他通过公式的转变最后认为归一化、标准化很相似,都是x + b / c
这样一种形式,具体的可以看参考中的知乎链接,你可以把那三个方块的中心点放到中心然后拖动缩放框就是标准化啦。在说归一化、标准化的作用之前,首先来看一句话
一滴水里观沧海,一粒沙里看世界
看这句话有人应该想起了我们和宇宙的这种关系,一个极大一个极小,这里我们不说这句诗什么的什么苟且远方,我们来看看原子
和太阳系
,原子
的半径为10^(-10) m
,太阳系的半径为6*10^(12)m
,说到这里有人可能会联想原子
和太阳系
的关系了,其实之前就有人提出过一个观念,叫做分形宇宙(Fractal Universe)
分形宇宙论,是物理宇宙学中的一个小众理论,算是一种非主流学说。这一理论认为,宇宙中的物质分布和宇宙结构本身在各个尺度上具有分形结构。在17世纪,著名的哲学家、数学家莱布尼茨就提出了单子论思想, 认为一种宇宙由无数个单构成,每一个单子里面有一个完整的宇宙。 这个思想就有分形宇宙论的萌芽。
随着科学的发展,人们发现,宇宙在不同的尺度上,确实有着惊人的重复性结构。比如,把原子放大到10的17次方倍,它表现出来的性质就和一颗白矮星差不多。如果放大到10的30次方倍,它的各种力学和结构常数就非常接近于我们观测的银河系。
这个是混沌动力学里面研究的一个饶有兴趣的课题,它给我们展现了复杂的结构如何在不同层面上一再重复。所谓的
分形宇宙
也只是一家之言罢了。
读到这里,你的脑海中是不是已经出现了一个“小宇宙”、“大原子”呢?你的脑子里面是不是进行了一次归一化或者说标准化的过程呢?
参考
- R语言_scale()函数用法
- 数据的归一化(Normalization)、标准化(Standardization)
- 归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)
- 大数据的中心化、标准化处理的重要性及处理方法
- 特征工程中的「归一化」有什么作用?
- 有趣的小众宇宙物理学:分形宇宙论
- 《上帝掷骰子吗?》
中间如果有错误,望能告知。
如需转载,希望告诉我一下。
网友评论