标准化(Standardization) 和 **归一化(Normalization)**是数据预处理中常用的两种技术,目的是调整数据的尺度,使得不同特征的数据可以在同一水平上进行比较或处理。这两种方法在形式和用途上有所不同,下面分别进行介绍并举例说明。
1. 标准化(Standardization)
定义:
标准化是通过对原始数据进行变换,将其转换为均值为0、标准差为1的分布。这样处理后的数据符合标准正态分布,即所谓的“零均值、单位方差”分布。
公式:
对于数据集中的每个数据点
x
x
x,标准化后的值
z
z
z 计算如下:
z
=
x
−
μ
σ
z = \frac{x - \mu}{\sigma}
z=σx−μ
其中:
- μ \mu μ 是数据的均值(平均值)。
- σ \sigma σ 是数据的标准差。
作用:
- 消除量纲差异: 将不同尺度的特征转换到相同的尺度,便于比较。
- 提高算法性能: 对于假设数据服从正态分布的算法(如线性回归、逻辑回归、支持向量机等),标准化可以提高模型的收敛速度和准确性。
举例说明:
假设有一个数据集:
- 原始数据 x = [ 50 , 60 , 70 , 80 , 90 ] x = [50, 60, 70, 80, 90] x=[50,60,70,80,90]
计算均值和标准差:
-
均值 μ \mu μ:
μ = 50 + 60 + 70 + 80 + 90 5 = 70 \mu = \frac{50 + 60 + 70 + 80 + 90}{5} = 70 μ=550+60+70+80+90=70 -
标准差 σ \sigma σ:
σ = ( 50 − 70 ) 2 + ( 60 − 70 ) 2 + ( 70 − 70 ) 2 + ( 80 − 70 ) 2 + ( 90 − 70 ) 2 5 ≈ 14.14 \sigma = \sqrt{\frac{(50 - 70)^2 + (60 - 70)^2 + (70 - 70)^2 + (80 - 70)^2 + (90 - 70)^2}{5}} \approx 14.14 σ=5(50−70)2+(60−70)2+(70−70)2+(80−70)2+(90−70)2 ≈14.14
对数据进行标准化:
z
1
=
50
−
70
14.14
≈
−
1.41
z
2
=
60
−
70
14.14
≈
−
0.71
z
3
=
70
−
70
14.14
=
0
z
4
=
80
−
70
14.14
≈
0.71
z
5
=
90
−
70
14.14
≈
1.41
\begin{align*} z_1 & = \frac{50 - 70}{14.14} \approx -1.41 \\ z_2 & = \frac{60 - 70}{14.14} \approx -0.71 \\ z_3 & = \frac{70 - 70}{14.14} = 0 \\ z_4 & = \frac{80 - 70}{14.14} \approx 0.71 \\ z_5 & = \frac{90 - 70}{14.14} \approx 1.41 \end{align*}
z1z2z3z4z5=14.1450−70≈−1.41=14.1460−70≈−0.71=14.1470−70=0=14.1480−70≈0.71=14.1490−70≈1.41
标准化后的数据:
- z = [ − 1.41 , − 0.71 , 0 , 0.71 , 1.41 ] z = [-1.41, -0.71, 0, 0.71, 1.41] z=[−1.41,−0.71,0,0.71,1.41]
此时,标准化数据的均值为0,标准差为1。
2. 归一化(Normalization)
定义:
归一化是通过对原始数据进行缩放,将其值转换到特定的范围,通常是[0, 1]或[-1, 1]区间。这有助于消除不同特征之间的量纲差异,使得各特征对模型的贡献均等。
公式:
对于每个数据点
x
x
x,归一化后的值
x
′
x'
x′ 计算如下(以 [0, 1] 区间为例):
x
′
=
x
−
x
min
x
max
−
x
min
x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}}
x′=xmax−xminx−xmin
其中:
- x min x_{\min} xmin 是数据集中的最小值。
- x max x_{\max} xmax 是数据集中的最大值。
作用:
- 统一特征尺度: 将不同范围的数据缩放到相同的区间,避免某些特征因为数值较大而主导模型。
- 加快算法收敛: 对于基于距离计算的算法(如K近邻、神经网络等),归一化可以提高模型的训练速度和性能。
举例说明:
使用同样的数据集:
- 原始数据 x = [ 50 , 60 , 70 , 80 , 90 ] x = [50, 60, 70, 80, 90] x=[50,60,70,80,90]
计算最小值和最大值:
- 最小值 x min = 50 x_{\min} = 50 xmin=50
- 最大值 x max = 90 x_{\max} = 90 xmax=90
对数据进行归一化:
x
1
′
=
50
−
50
90
−
50
=
0
x
2
′
=
60
−
50
90
−
50
=
10
40
=
0.25
x
3
′
=
70
−
50
90
−
50
=
20
40
=
0.5
x
4
′
=
80
−
50
90
−
50
=
30
40
=
0.75
x
5
′
=
90
−
50
90
−
50
=
1
\begin{align*} x_1' & = \frac{50 - 50}{90 - 50} = 0 \\ x_2' & = \frac{60 - 50}{90 - 50} = \frac{10}{40} = 0.25 \\ x_3' & = \frac{70 - 50}{90 - 50} = \frac{20}{40} = 0.5 \\ x_4' & = \frac{80 - 50}{90 - 50} = \frac{30}{40} = 0.75 \\ x_5' & = \frac{90 - 50}{90 - 50} = 1 \end{align*}
x1′x2′x3′x4′x5′=90−5050−50=0=90−5060−50=4010=0.25=90−5070−50=4020=0.5=90−5080−50=4030=0.75=90−5090−50=1
归一化后的数据:
- x ′ = [ 0 , 0.25 , 0.5 , 0.75 , 1 ] x' = [0, 0.25, 0.5, 0.75, 1] x′=[0,0.25,0.5,0.75,1]
此时,所有数据均位于 [0, 1] 区间内。
3. 标准化与归一化的区别
-
目的不同:
- 标准化旨在使数据符合标准正态分布(均值为0,标准差为1),适用于对数据分布有假设的算法。
- 归一化旨在将数据缩放到固定区间,适用于基于距离或相似度的算法。
-
适用场景不同:
- 标准化适用于:线性回归、逻辑回归、支持向量机、主成分分析等。
- 归一化适用于:神经网络、K近邻算法、K均值聚类等。
-
对异常值的影响:
- 标准化:受异常值影响较小,因为均值和标准差对极端值有一定的缓冲。
- 归一化:对异常值敏感,极端值会压缩其他数据的取值范围。
4. 实际应用中的选择
- 当算法对数据分布有要求,且对异常值不敏感时,选择标准化。
- 当需要将数据缩放到固定区间,且算法对数据的相对大小敏感时,选择归一化。
总结:
-
标准化(Standardization):通过减去均值并除以标准差,将数据转换为标准正态分布。适用于对数据分布有假设的模型,提高模型的稳定性和收敛速度。
-
归一化(Normalization):通过缩放,将数据映射到固定的区间内,通常是 [0, 1]。适用于基于距离度量的模型,确保特征对模型的影响均等。
希望以上解释和举例能帮助你清楚地理解标准化和归一化的概念、区别以及应用场景。
标签:frac,示例,归一化,标准化,50,70,90,80 From: https://blog.csdn.net/u013172930/article/details/142551360