Data Scaling and Transformation

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31823267/article/details/89225714

项目地址:https://github.com/Daya-Jin/ML_for_learner
原博客:https://daya-jin.github.io/2019/03/20/Data_Scaling/

Scaling

数据缩放的实质就是对数据进行无量纲化处理或弱化量纲,下面介绍几种常用的缩放方式。

Linear Scale

归一化(Normalization)通常指把数据缩放到 [ 0 , 1 ] [0,1] 区间或 [ 1 , 1 ] [-1,1] 区间,其转换公式分别为:

x = x x m i n x m a x x m i n x = x 1 2 ( x m a x + x m i n ) x m a x x m i n \begin{aligned} x&=\frac{x-x_{min}}{x_{max}-x_{min}} \\ x&=\frac{x-\frac{1}{2}(x_{max}+x_{min})}{x_max-x_min} \\ \end{aligned}

标准化(Standardization)的实质就是计算Z-分数(Z-score):

x = x μ σ x=\frac{x-\mu}{\sigma}

标准化后的数据服从标准正态分布。

分别对归一化与标准化的式子做一下变形:

x n o r m = x x m i n x m a x x m i n = 1 x m a x x m i n x x m i n x m a x x m i n x z = x μ σ = 1 σ x μ σ \begin{aligned} x_{norm}&=\frac{x-x_{min}}{x_{max}-x_{min}} \\ &=\frac{1}{x_{max}-x_{min}}x-\frac{x_{min}}{x_{max}-x_{min}} \\ x_{z}&=\frac{x-\mu}{\sigma} \\ &=\frac{1}{\sigma}x-\frac{\mu}{\sigma} \\ \end{aligned}

可以看出归一化与标准化实质上都相当于对数据的一个线性变换,只不过是线性变换的系数不同。由此可以探究两者之间的区别。

首先不难看出归一化的缩放系数只由数据中的两个值决定: x m i n x_{min} x m a x x_{max} ,这一特性就决定了归一化变换是不稳定的,它容易被异常值或离群值影响。并且归一化的输出范围固定为 [ 0 , 1 ] [0,1] 或者 [ 1 , 1 ] [-1,1]

而反观标准化,它的线性变换系数是由数据统计量 μ \mu σ \sigma 决定的,不难看出当 σ > 1 \sigma>1 时标准化会缩小数据的分布,而当 s i g m a < 1 sigma<1 的时候会放大数据的分布,总而言之标准化就会使得变换后的数据呈一个固定的分布状态。标准化并没有对变换后的数据范围作规定,它只保证数据整体的分布。

Non-Linear Scale

当数据的取值跨度非常大时,考虑使用对数变换来缩小数据在量级上的差距。常用的对数变换有:

x = log 2 ( x + 1 ) x = log 10 ( x + 1 ) \begin{aligned} x=\log_{2}(x+1) \\ x=\log_{10}(x+1) \\ \end{aligned}

除了对数变换外,还可以使用开方变换:

x = x p x=\sqrt[p]{x}

Transformation

待补充

猜你喜欢

转载自blog.csdn.net/qq_31823267/article/details/89225714