hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

为何要做特性归一化/标准化?

2019-11-18杂谈搜奇网38°c
A+ A-

目次

  • 写在前面
  • 常常运用feature scaling要领
  • 盘算体式格局上对照剖析
  • feature scaling 须要照样不须要
    • 什么时候须要feature scaling?
    • 什么时候不须要Feature Scaling?
  • 小结
  • 参考

博客:blog.shinelee.me | 博客园 | CSDN

写在前面

Feature scaling,罕见的提法有“特性归一化”、“标准化”,是数据预处置责罚中的主要手艺,偶然以至决议了算法能不能work以及work得好不好。谈到feature scaling的必要性,最常常运用的2个例子多是:

  • 特性间的单元(标准)能够差别,比方身高和体重,比方摄氏度和华氏度,比方衡宇面积和房间数,一个特性的变化局限多是\([1000, 10000]\),另一个特性的变化局限多是\([-0.1, 0.2]\),在举行间隔有关的盘算时,单元的差别会致使盘算结果的差别,标准大的特性会起决议性作用,而标准小的特性其作用能够会被疏忽,为了消弭特性间单元和标准差别的影响,以对每维特性一致对待,须要对特性举行归一化

  • 原始特性下,因标准差别,其丧失函数的等高线图多是椭圆形,梯度方向垂直于等高线,下落会走zigzag线路,而不是指向local minimum。经由历程对特性举行zero-mean and unit-variance变更后,其丧失函数的等高线图更靠近圆形,梯度下落的方向震动更小,收敛更快,以下图所示,图片来自Andrew Ng。

关于feature scaling中最常运用的Standardization,好像“无脑上”就好了,本文想多探讨一些为何,

  • 常常运用的feature scaling要领都有哪些?
  • 什么状况下该运用什么feature scaling要领?有无一些指导思想?
  • 一切的机械进修算法都须要feature scaling吗?有无破例?
  • 丧失函数的等高线图都是椭圆或同心圆吗?能用椭圆和圆来简朴诠释feature scaling的作用吗?
  • 假如丧失函数的等高线图很庞杂,feature scaling尚有其他直观诠释吗?

依据查阅到的材料,本文将尝试回覆上面的题目。但笔者才有限,空有疑心,能讲到哪算哪吧(笑容)。

常常运用feature scaling要领

在问为何前,先看是什么。

给定数据集,令特性向量为\(x\),维数为\(D\),样本数目为\(R\),可组成\(D \times R\)的矩阵,一列为一个样本,一行动一维特性,以下图所示,图片来自Hung-yi Lee pdf-Gradient Descent:

feature scaling的要领能够分红2类,逐行举行和逐列举行。逐行是对每一维特性操纵,逐列是对每一个样本操纵,上图为逐行操纵中特性标准化的示例。

详细地,常常运用feature scaling要领以下,来自wiki,

  • Rescaling (min-max normalization、range scaling)
    \[ x^{\prime}=a+\frac{(x-\min (x))(b-a)}{\max (x)-\min (x)} \]
    将每一维特性线性映照到目标局限\([a, b]\),行将最小值映照为\(a\),最大值映照为\(b\),常常运用目标局限为\([0, 1]\)\([-1, 1]\),特别地,映照到\([0, 1]\)盘算体式格局为:
    \[ x^{\prime}=\frac{x-\min (x)}{\max (x)-\min (x)} \]

  • Mean normalization
    \[ x^{\prime}=\frac{x-\bar{x}}{\max (x)-\min (x)} \]
    均值映照为0,同时用最大值最小值的差对特性举行归一化,一种更罕见的做法是用标准差举行归一化,以下。

  • Standardization (Z-score Normalization)
    \[ x^{\prime}=\frac{x-\bar{x}}{\sigma} \]
    每维特性0均值1方差(zero-mean and unit-variance)

  • Scaling to unit length
    \[ x^{\prime}=\frac{x}{\|x\|} \]
    将每一个样本的特性向量除以其长度,即对样本特性向量的长度举行归一化,长度的器量常运用的是L2 norm(欧氏间隔),偶然也会采纳L1 norm,差别器量体式格局的一种对照能够拜见论文“CVPR2005-Histograms of Oriented Gradients for Human Detection”。

上述4种feature scaling体式格局,前3种为逐行操纵,末了1种为逐列操纵。

轻易让人疑心的一点是指代殽杂,Standardization指代比较清楚,然则单说Normalization偶然会指代min-max normalization,偶然会指代Standardization,偶然会指代Scaling to unit length

盘算体式格局上对照剖析

前3种feature scaling的盘算体式格局为减一个统计量再除以一个统计量,末了1种为除以向量本身的长度

  • 减一个统计量能够算作选哪一个值作为原点,是最小值照样均值,并将全部数据集平移到这个新的原点位置。假如特性间偏置差别对后续历程有负面影响,则该操纵是有益的,能够算作是某种偏置无关操纵;假如原始特性值有特别意义,比方希罕性,该操纵能够会损坏其希罕性。
  • 除以一个统计量能够算作在坐标轴方向上对特性举行缩放,用于下降特性标准的影响,能够算作是某种标准无关操纵。缩放能够运用最大值最小值间的跨度,也能够运用标准差(到中心点的均匀间隔),前者对outliers敏感,outliers对后者影响与outliers数目和数据集大小有关,outliers越少数据集越大影响越小。
  • 除以长度相称于把长度归一化,把一切样本映照到单元球上,能够算作是某种长度无关操纵,比方,词频特性要移除文章长度的影响,图象处置责罚中某些特性要移除光照强度的影响,以及轻易盘算余弦间隔或内积类似度等。

希罕数据、outliers相干的更多数据预处置责罚内容能够拜见scikit learn-5.3. Preprocessing data。

从多少上视察上述要领的作用,图片来自CS231n-Neural Networks Part 2: Setting up the Data and the Loss,zero-mean将数据集平移到原点,unit-variance使每维特性上的跨度相称,图中能够显著看出两维特性间存在线性相干性,Standardization操纵并没有消弭这类相干性。

可经由历程PCA要领移除线性相干性(decorrelation),即引入扭转,找到新的坐标轴方向,在新坐标轴方向上用“标准差”举行缩放,以下图所示,图片来自链接,图中同时形貌了unit length的作用——将一切样本映照到单元球上。

当特性维数更多时,对照以下,图片来自youtube,

总的来说,归一化/标准化的目标是为了获得某种“无关性”——偏置无关、标准无关、长度无关……当归一化/标准化要领背地的物理意义和多少寄义与当前题目标须要相契应时,其对处理该题目就有正向作用,反之,就会起反作用。所以,“什么时候挑选何种要领”取决于待处理的题目,即problem-dependent。

feature scaling 须要照样不须要

下图来自data school-Comparing supervised learning algorithms,对照了几个监视进修算法,最右边两列为是不是须要feature scaling。

下面详细剖析一下。

什么时候须要feature scaling?

  • 触及或隐含间隔盘算的算法,比方K-means、KNN、PCA、SVM等,平常须要feature scaling,由于

    • zero-mean平常能够增添样本间余弦间隔或许内积结果的差别,区分力更强,假定数据集集合散布在第一象限悠远的右上角,将其平移到原点处,能够设想样本间余弦间隔的差别被放大了。在模版婚配中,zero-mean能够显著提高相应结果的区分度。

    • 就欧式间隔而言,增大某个特性的标准,相称于增添了其在间隔盘算中的权重,假如有明白的先验学问表明某个特性很主要,那末恰当增添其权重能够有正向结果,但假如没有如许的先验,或许目标就是想知道哪些特性更主要,那末就须要先feature scaling,对各维特性等而视之

    • 增大标准的同时也增大了该特性维度上的方差,PCA算法倾向于关注方差较大的特性地点的坐标轴方向,其他特性能够会被无视,因而,在PCA前做Standardization结果能够更好,以下图所示,图片来自scikit learn-Importance of Feature Scaling,

  • 丧失函数中含有正则项时,平常须要feature scaling:关于线性模子\(y=wx+b\)而言,\(x\)的任何线性变更(平移、放缩),都能够被\(w\)\(b\)“吸取”掉,理论上,不会影响模子的拟合才。然则,假如丧失函数中含有正则项,如\(\lambda ||w||^2\)\(\lambda\)为超参数,其对\(w\)的每一个参数施加一样的责罚,但关于某一维特性\(x_i\)而言,其scale越大,系数\(w_i\)越小,其在正则项中的比重就会变小,相称于对\(w_i\)责罚变小,即丧失函数会相对无视那些scale增大的特性,这并不合理,所以须要feature scaling,使丧失函数同等对待每一维特性。

  • 梯度下落算法,须要feature scaling。梯度下落的参数更新公式以下,
    \[ W(t+1)=W(t)-\eta \frac{d E(W)}{d W} \]
    \(E(W)\)为丧失函数,收敛速率取决于:参数的初始位置到local minima的间隔,以及进修率\(\eta\)的大小。一维状况下,在local minima四周,差别进修率对梯度下落的影响以下图所示,

    多维状况下能够剖析成多个上图,每一个维度上离别下落,参数\(W\)为向量,但进修率只需1个,即一切参数维度共用同一个进修率(暂不斟酌为每一个维度都分派零丁进修率的算法)。收敛意味着在每一个参数维度上都获得极小值,每一个参数维度上的偏导数都为0,然则每一个参数维度上的下落速率是差别的,为了每一个维度上都能收敛,进修率应取一切维度在当前位置适宜步长中最小的谁人。下面议论feature scaling对gradient descent的作用,

    • zero center与参数初始化相合营,收缩初始参数位置与local minimum间的间隔,加速收敛。模子的终究参数是未知的,所以平常随机初始化,比方从0均值的均匀散布或高斯散布中采样获得,对线性模子而言,其分界面初始位置大抵在原点四周,bias常常初始化为0,则分界面直接经由历程原点。同时,为了收敛,进修率不会很大。而每一个数据集的特性散布是不一样的,假如其散布集合且间隔原点较远,比方位于第一象限悠远的右上角,分界面能够须要消费许多步骤才“爬到”数据集地点的位置。所以,无论什么数据集,先平移到原点,再合营参数初始化,能够保证分界面一定会穿过数据集。另外,outliers常散布在数据集的外围,与分界面从外部向内搬动比拟,从中心地区最先搬动能够受outliers的影响更小。

    • 关于采纳均方偏差丧失LMS的线性模子,丧失函数恰为二阶,以下图所示
      \[ E(W)=\frac{1}{2 P} \sum_{p=1}^{P}\left|d^{p}-\sum_{i} w_{i} x_{i}^{p}\right|^{2} \]
      差别方向上的下落速率变化差别(二阶导差别,曲率差别),恰由输入的协方差矩阵决议,feature scaling转变了丧失函数的外形,减小差别方向上的曲率差别。将每一个维度上的下落剖析来看,给定一个下落步长,假如不够小,有的维度下落的多,有的下落的少,有的还能够在上升,丧失函数的团体表现多是上升也多是下落,就会不稳固。scaling后差别方向上的曲率相对更靠近,更轻易挑选到适宜的进修率,使下落历程相对更稳固。

    • 尚有从Hessian矩阵特性值以及condition number角度的明白,详见Lecun paper-Efficient BackProp中的Convergence of Gradient Descent一节,有清楚的数学形貌,同时还引见了白化的作用——消除特性间的线性相干性,使每一个维度上的梯度下落可自力对待。
    • 文章开篇的椭圆形和圆形等高线图,仅在采纳均方偏差的线性模子上实用,其他丧失函数或更庞杂的模子,如深度神经收集,丧失函数的error surface能够很庞杂,并不能简朴地用椭圆和圆来描写,所以用它来诠释feature scaling对一切丧失函数的梯度下落的作用,好像过于简化,见Hinton vedio-3.2 The error surface for a linear neuron。
    • 关于丧失函数不是均方偏差的状况,只需权重\(w\)与输入特性\(x\)间是相乘关联,丧失函数对\(w\)的偏导必定含有因子\(x\)\(w\)的梯度下落速率就会遭到特性\(x\)标准的影响。理论上为每一个参数都设置上自顺应的进修率,能够吸取掉\(x\)标准的影响,但在实践中出于盘算量的斟酌,每每照样一切参数共用一个进修率,此时\(x\)标准差别能够会致使差别方向上的下落速率差异较大,进修率不轻易挑选,下落历程也能够不稳固,经由历程scaling可对差别方向上的下落速率有所掌握,使下落历程相对更稳固。

  • 关于传统的神经收集,对输入做feature scaling也很主要,由于采纳sigmoid等有饱和区的激活函数,假如输入散布局限很广,参数初始化时没有适配好,很轻易直接堕入饱和区,致使梯度消逝,所以,须要对输入做Standardization或映照到\([0,1]\)\([-1,1]\),合营精心设计的参数初始化要领,对值域举行掌握。但自从有了Batch Normalization,每次线性变更转变特性散布后,都邑从新举行Normalization,好像能够不太须要对收集的输入举行feature scaling了?但习惯上照样会做feature scaling。

什么时候不须要Feature Scaling?

  • 与间隔盘算无关的几率模子,不须要feature scaling,比方Naive Bayes;
  • 与间隔盘算无关的基于树的模子,不须要feature scaling,比方决策树、随机丛林等,树中节点的挑选只关注当前特性在那里切分对分类更好,即只在乎特性内部的相对大小,而与特性间的相对大小无关。

小结

这篇文章写的非常困难,一最先认为蛮简朴直接,但随着探究的深切,冒出的问号越来越多,打破了许多本来的“天经地义”,所以,在写的历程当中不停地做加法,许多处所想诠释得只管直观,又不想照搬太多公式,但本身的明白又不够深入,致使如今叙说这么冗杂,愿望今后在写文时能更专注更精华精辟。

Sigh。。。

参考

  • wiki-Feature scaling

  • wiki-Backpropagation

  • Hung-yi Lee pdf-Gradient Descent

  • quora-Why does mean normalization help in gradient descent?

  • scikit learn-Importance of Feature Scaling

  • scikit learn-5.3. Preprocessing data

  • scikit learn-Compare the effect of different scalers on data with outliers

  • data school-Comparing supervised learning algorithms

  • Lecun paper-Efficient BackProp

  • Hinton vedio-3.2 The error surface for a linear neuron

  • CS231n-Neural Networks Part 2: Setting up the Data and the Loss

  • ftp-Should I normalize/standardize/rescale the data?

  • medium-Understand Data Normalization in Machine Learning

  • Normalization and Standardization

  • How and why do normalization and feature scaling work?

  • Is it a good practice to always scale/normalize data for machine learning?

  • When conducting multiple regression, when should you center your predictor variables & when should you standardize them?

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
为何要做特性归一化/标准化?

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282089.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>