[Sklearn应用] Preprocessing data(一) 标准化(Standardization) 与 正则化/归一化(Normalization) :::info 标准化针对的是把整列(特征)作为处理对象,而正则化把行(样本)作为处理对象,而且他们处理的公式方法也不同。 :::

标准化

image.png

  • 标准化之后,每一列数据变成均值0,方差1的分布,但和并不一定为1。
  • 标准化的作用

    • 使不同量纲的特征处于同一数值量级,减少方差大的特征的影响,使模型更准确。
    • 加快学习算法的收敛速度。

      比如sklearn.preprocessing下面的几个方法,就是对每一列计算的。 标准化:缩放到均值为0,方差为1(Standardization——StandardScaler()) 标准化、正则化、归一化 - 图2 minmax归一化:缩放到0和1之间(Standardization——MinMaxScaler()) 标准化、正则化、归一化 - 图3 mean归一化: 标准化、正则化、归一化 - 图4

  • 附,对图像进行标准化:

    • 这里的均值和标准差是根据 imagenet 数据集计算的,可以作为通用的均值和标准差
      1. rgb_mean = np.array([[0.485, 0.456, 0.406])
      2. rgb_std = np.array([0.229, 0.224, 0.225])
      3. new_image = (image.astype('float32') / 256 - rgb_mean) / rgb_std

      正则化

      image.png

      上图中的x_i指的是样本的第i特征,即第一列

  • 正则化之后,比如pytorch中的F.normalize(x, p=2, dim=-1),对于二维的tensor,每一行的和都为1。 :::info 比如零样本学习中,预测时,计算映射到语义空间的图像嵌入和某个类别语义嵌入之间的相似度时,就可以用图像嵌入除以2范数,语义嵌入也除以2范数,然后将得到的两者做内积,即得到了两者的余弦距离。 :::

    1. img_fea = F.normalize(img_fea, p=2, dim=-1)
    2. att_fea = F.normalize(att_fea, p=2, dim=-1)