V1.0
特征归一化的重要性
特征归一化的问题产生于,我们在使用特征向量中不同的特征数据时,特征数据尺度(或者说数量级不同)而造成的问题。
例如,KNN算法中不同的计算距离时,不同特征的量纲不同,比如说特征1的数量级大概在
100
100
100左右附近,特征2的数量大概在
1
1
1左右附近,在使用特征1和特征2计算距离时,特征1就会对最终的距离结果产生很大的影响,而特征2的影响就变得相对小很多,这会导致结果的较大偏差。因此要进行特征归一化,将不同特征变换到同一尺度。
d
i
s
t
a
n
c
e
=
(
120
−
90
)
2
+
(
1.2
−
1.0
)
2
distance=\sqrt{(120-90)^2+(1.2-1.0)^2}
distance=(120−90)2+(1.2−1.0)2
特征归一化的方式
特征归一化主要包括两种方式
- 最大最小值归一化
- 零均值归一化
最大最小值归一化
x
n
o
r
m
=
x
−
x
m
i
n
x
m
a
x
−
x
m
i
n
x_{norm}=\frac{x-x_{min}}{x_{max}-x_{min}}
xnorm=xmax−xminx−xmin
其中
x
m
i
n
{x_{min}}
xmin是数据的最小值,
x
m
a
x
{x_{max}}
xmax是数据的最大值。
适用于数据有限范围的情况,因为其需要使用最大值
和最小值
。
最大最小值归一化的局限性
极端数据会对最大最小值归一化的结果产生较大影响。
假设我们有一组一维数据,其中有一个很极端的数据,比如说5000。其他数据大概分布在0-1000左右,这会导致这组数据的最大最小值归一化的结果,一般的数据会分布在0.2左右。
零均值归一化
x
n
o
r
m
=
x
−
μ
σ
x_{norm}=\frac{x-\mu}{\sigma}
xnorm=σx−μ
其中
μ
\mu
μ 是数据的均值,
σ
\sigma
σ 是数据的标准差。
零均值归一化,适合于绝大多数的情况。
测试集的归一化
假设我们使用零均值归一化,得出了训练集的数据,即训练集的均值和标准差。那么我们在测试集上使用什么均值和标准差呢?
正确的方法是使用训练集的数据,这是因为测试集的数据往往较难获得。在测试样本较少的情况下,不能很好表示的平均的样本的分布情况。