数据缩放与转换Data Scaling and Transformation

项目地址: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] [0,1]区间或 [ − 1 , 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} xx=xmaxxminxxmin=xmaxxminx21(xmax+xmin)

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

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

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

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

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} xnormxz=xmaxxminxxmin=xmaxxmin1xxmaxxminxmin=σxμ=σ1xσμ

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

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

而反观标准化,它的线性变换系数是由数据统计量 μ \mu μ σ \sigma σ决定的,不难看出当 σ > 1 \sigma>1 σ>1时标准化会缩小数据的分布,而当 s i g m a < 1 sigma<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=log2(x+1)x=log10(x+1)

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

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

Transformation

待补充

你可能感兴趣的:(机器学习笔记)