Loading...
墨滴

Tina姐

2021/06/21  阅读:75  主题:橙心

标准化

1 最小最大规范化 Min-Max

最小-最大规范化也称为离散标准化,是对原始数据的线性变换,将数据值映射到新的 [min, max] 之间.

假设集合A 值的范围为 [minA, maxA]。 通过最小-最大归一化将A的值映射到 [new_minA,new_max A] 范围内,要怎么做?

最小-最大归一化保留了原始数据值之间的关系。如果归一化的未来输入案例超出A的原始数据范围,它将遇到“越界”错误。

举例 生活中的例子

假设集合A 收入的最小值和最大值分别为 12,000 美元和 98,000 美元。我们想将收入映射到范围 [1, 100]。那么73,600 美元映射到多少?

举例 深度学习中的例子

假设集合A 是一张CT图像,最小值和最大值分别为 0 和 255。而神经网络希望输入的Tensor值范围为 [0,1]。我们该怎么进行映射?假设其中一个像素点的值为96,经过映射后为多少?

特别地,当我们新的集合范围为 [0, 1]时,我们可以简化公式

这就是我们见得最多的归一化公式。在深度学习中,pytorch 就是通过ToTensor()将图像的值从 0 ~ 255 映射到 0~1

举例 如何用Python写min-max归一化

import numpy as np
def min_max(x):
    # x: numpy array
    x = (x - np.min(x)) / (np.max(x) - np.min(x))
    return x

测试一下

np.set_printoptions(4)  # 保留4位小数
arr = np.array([0,23,45,89,234,255])
arr_norm = min_max(arr)
print(arr)
print(arr_norm)

[ 0 23 45 89 234 255]

[0. 0.0902 0.1765 0.349 0.9176 1. ]

2 z-score 标准分数

Z-Score 又叫 stand score, z-value, z-score, normal score, and standardized variable, 中文一般译作标准分数。

z-score 是对某一原始分值进行转换,变成的一个标准分值,该标准分值可使得原来无法比较的数值变得可比。

例如: 中国人小王身高 1.75 m,美国人 James 身高 1.85 m,日本人大郎身高1.75 m,排除国籍导致的差异,请问小王、James、大郎三个人谁更高?

直接从数值上比,当然是 James 最高。但是这里要求排除国籍导致的差异,什么意思?

就是说,日本人可能全国的人都相对矮一些(不严谨,仅做例子),那么日本的 1.7 m 可能相当于中国的 1.75 m 和美国的 1.85 m。

所以不能直接比数字,而是要比每个人在各自国家国民身高背景下的一个标准身高。

这里,就要用到 z-score 标准化了。

这里的 x 为原始分值,z 为经过转换后的 z-score,μ 为总体样本空间的分值均值,σ 则为总体样本空间的标准差。

我们再来看一个例子:

例如:小红英语考了 90 分,语文考了 60 分,请问小红英语和语文哪个考的好? 同样的情况,如果直接比分数,当然是英语好。

但是一种显然易见的可能情况是,两门课的难度不一样,也许语文更难,大家都不及格,只有小红及格了;

而英语很简单大家都是100分,只有小红90分。这样看来,好像小红的语文要考的更好一些。

那如何使用z分数进行比较呢?

假设语文全班平均成绩 40 分,标准差为 10,英语全班成绩 98 分,标准差为 5 。那么小红的语文成绩 “标准分值” 就是 (60 – 40)/10 = 2 ,而英语成绩“标准分值”就是 (90-98)/5 = -1.6。这样一比,英语成绩是远低于语文成绩的,可见小红的语文还是学的相当好的。

z-score参考链接[1]

如何用Python写z-score

def normalize(x, mean, std):
    x = (x-mean) / std
    return x

z-score在深度学习中的应用

只要你使用过ImageNet预训练的模型,你绝对使用过z-score。记得在哪儿用的吗🤭

mean = [0.4850.4560.406]
std = [0.2290.2240.225]

这个均值和方差是不是很熟悉。

没错,这就是ImageNet数据集的均值和方差,很多情况下,我们对数据集进行归一化都使用的是ImageNet数据集的均值和方差。

transforms.Normalize(mean=mean, std=std)

这里的Normalize,其实就是做的z-score标准化。

参考资料

[1]

z-score参考链接: http://thisis.yorven.site/blog/index.php/2019/05/07/lijie-z-score/

Tina姐

2021/06/21  阅读:75  主题:橙心

作者介绍

Tina姐