<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深入探討:為什么要做特征歸一化/標(biāo)準(zhǔn)化?

          共 7090字,需瀏覽 15分鐘

           ·

          2021-09-30 00:20

          點(diǎn)擊左上方藍(lán)字關(guān)注我們



          一個(gè)專注于目標(biāo)檢測(cè)與深度學(xué)習(xí)知識(shí)分享的公眾號(hào)

          編者薦語
          文章系統(tǒng)性的解讀了一項(xiàng)數(shù)據(jù)預(yù)處理中的重要技術(shù)——特征歸一化,提出并解答了5個(gè)相關(guān)問題,同時(shí)分析了相關(guān)方法和適用場(chǎng)景,希望讀完這篇文章后,大家對(duì)特征歸一化有一個(gè)清晰的認(rèn)識(shí)。
          轉(zhuǎn)載自 | 極市平臺(tái)

          寫在前面


          Feature scaling,常見的提法有“特征歸一化”、“標(biāo)準(zhǔn)化”,是數(shù)據(jù)預(yù)處理中的重要技術(shù),有時(shí)甚至決定了算法能不能work以及work得好不好。談到feature scaling的必要性,最常用的2個(gè)例子可能是:


          • 特征間的單位(尺度)可能不同,比如身高和體重,比如攝氏度和華氏度,比如房屋面積和房間數(shù),一個(gè)特征的變化范圍可能是[1000, 10000],另一個(gè)特征的變化范圍可能是[?0.1,0.2],在進(jìn)行距離有關(guān)的計(jì)算時(shí),單位的不同會(huì)導(dǎo)致計(jì)算結(jié)果的不同,尺度大的特征會(huì)起決定性作用,而尺度小的特征其作用可能會(huì)被忽略,為了消除特征間單位和尺度差異的影響,以對(duì)每維特征同等看待,需要對(duì)特征進(jìn)行歸一化。

          • 原始特征下,因尺度差異,其損失函數(shù)的等高線圖可能是橢圓形,梯度方向垂直于等高線,下降會(huì)走zigzag路線,而不是指向local minimum。通過對(duì)特征進(jìn)行zero-mean and unit-variance變換后,其損失函數(shù)的等高線圖更接近圓形,梯度下降的方向震蕩更小,收斂更快,如下圖所示,圖片來自Andrew Ng。


          Feature Scaling from Andrew Ng

          對(duì)于feature scaling中最常使用的Standardization,似乎“無腦上”就行了,本文想多探究一些為什么,


          • 常用的feature scaling方法都有哪些?
          • 什么情況下該使用什么feature scaling方法?有沒有一些指導(dǎo)思想?
          • 所有的機(jī)器學(xué)習(xí)算法都需要feature scaling嗎?有沒有例外?
          • 損失函數(shù)的等高線圖都是橢圓或同心圓嗎?能用橢圓和圓來簡(jiǎn)單解釋feature scaling的作用嗎?
          • 如果損失函數(shù)的等高線圖很復(fù)雜,feature scaling還有其他直觀解釋嗎?


          根據(jù)查閱到的資料,本文將嘗試回答上面的問題。但筆者能力有限,空有困惑,能講到哪算哪吧(微笑)。


          常用feature scaling方法


          在問為什么前,先看是什么。
          給定數(shù)據(jù)集,令特征向量為x,維數(shù)為D,樣本數(shù)量為R,可構(gòu)成D×R的矩陣,一列為一個(gè)樣本,一行為一維特征,如下圖所示,圖片來自Hung-yi Lee pdf-Gradient Descent:
          feature matrix
          feature scaling的方法可以分成2類,逐行進(jìn)行和逐列進(jìn)行。逐行是對(duì)每一維特征操作,逐列是對(duì)每個(gè)樣本操作,上圖為逐行操作中特征標(biāo)準(zhǔn)化的示例。
          具體地,常用feature scaling方法如下,來自wiki,


          • Rescaling (min-max normalization、range scaling)


          將每一維特征線性映射到目標(biāo)范圍[a,b],即將最小值映射為a,最大值映射為b,常用目標(biāo)范圍為[0,1]和[?1,1],特別地,映射到[0,1]計(jì)算方式為:


          • Mean normalization


          均值映射為0,同時(shí)用最大值最小值的差對(duì)特征進(jìn)行歸一化,一種更常見的做法是用標(biāo)準(zhǔn)差進(jìn)行歸一化,如下。


          • Standardization (Z-score Normalization)


          每維特征0均值1方差(zero-mean and unit-variance)


          • Scaling to unit length


          將每個(gè)樣本的特征向量除以其長(zhǎng)度,即對(duì)樣本特征向量的長(zhǎng)度進(jìn)行歸一化,長(zhǎng)度的度量常使用的是L2 norm(歐氏距離),有時(shí)也會(huì)采用L1 norm,不同度量方式的一種對(duì)比可以參見論文“CVPR2005-Histograms of Oriented Gradients for Human Detection”。
          上述4種feature scaling方式,前3種為逐行操作,最后1種為逐列操作。
          容易讓人困惑的一點(diǎn)是指代混淆,Standardization指代比較清晰,但是單說Normalization有時(shí)會(huì)指代min-max normalization,有時(shí)會(huì)指代Standardization,有時(shí)會(huì)指代Scaling to unit length。


          計(jì)算方式上對(duì)比分析


          前3種feature scaling的計(jì)算方式為減一個(gè)統(tǒng)計(jì)量再除以一個(gè)統(tǒng)計(jì)量,最后1種為除以向量自身的長(zhǎng)度。


          • 減一個(gè)統(tǒng)計(jì)量可以看成選哪個(gè)值作為原點(diǎn),是最小值還是均值,并將整個(gè)數(shù)據(jù)集平移到這個(gè)新的原點(diǎn)位置。如果特征間偏置不同對(duì)后續(xù)過程有負(fù)面影響,則該操作是有益的,可以看成是某種偏置無關(guān)操作;如果原始特征值有特殊意義,比如稀疏性,該操作可能會(huì)破壞其稀疏性。
          • 除以一個(gè)統(tǒng)計(jì)量可以看成在坐標(biāo)軸方向上對(duì)特征進(jìn)行縮放,用于降低特征尺度的影響,可以看成是某種尺度無關(guān)操作??s放可以使用最大值最小值間的跨度,也可以使用標(biāo)準(zhǔn)差(到中心點(diǎn)的平均距離),前者對(duì)outliers敏感,outliers對(duì)后者影響與outliers數(shù)量和數(shù)據(jù)集大小有關(guān),outliers越少數(shù)據(jù)集越大影響越小。
          • 除以長(zhǎng)度相當(dāng)于把長(zhǎng)度歸一化,把所有樣本映射到單位球上,可以看成是某種長(zhǎng)度無關(guān)操作,比如,詞頻特征要移除文章長(zhǎng)度的影響,圖像處理中某些特征要移除光照強(qiáng)度的影響,以及方便計(jì)算余弦距離或內(nèi)積相似度等。


          稀疏數(shù)據(jù)、outliers相關(guān)的更多數(shù)據(jù)預(yù)處理內(nèi)容可以參見scikit learn-5.3. Preprocessing data。
          從幾何上觀察上述方法的作用,圖片來自CS231n-Neural Networks Part 2: Setting up the Data and the Loss,zero-mean將數(shù)據(jù)集平移到原點(diǎn),unit-variance使每維特征上的跨度相當(dāng),圖中可以明顯看出兩維特征間存在線性相關(guān)性,Standardization操作并沒有消除這種相關(guān)性。
          Standardization
          可通過PCA方法移除線性相關(guān)性(decorrelation),即引入旋轉(zhuǎn),找到新的坐標(biāo)軸方向,在新坐標(biāo)軸方向上用“標(biāo)準(zhǔn)差”進(jìn)行縮放,如下圖所示,圖片來自鏈接,圖中同時(shí)描述了unit length的作用——將所有樣本映射到單位球上。
          Effect of the operations of standardization and length normalization
          當(dāng)特征維數(shù)更多時(shí),對(duì)比如下,圖片來自youtube,
          feature scaling comparison
          總的來說,歸一化/標(biāo)準(zhǔn)化的目的是為了獲得某種“無關(guān)性”——偏置無關(guān)、尺度無關(guān)、長(zhǎng)度無關(guān)……當(dāng)歸一化/標(biāo)準(zhǔn)化方法背后的物理意義和幾何含義與當(dāng)前問題的需要相契合時(shí),其對(duì)解決該問題就有正向作用,反之,就會(huì)起反作用。所以,“何時(shí)選擇何種方法”取決于待解決的問題,即problem-dependent。


          feature scaling 需要還是不需要


          下圖來自data school-Comparing supervised learning algorithms,對(duì)比了幾個(gè)監(jiān)督學(xué)習(xí)算法,最右側(cè)兩列為是否需要feature scaling。
          Comparing supervised learning algorithms
          下面具體分析一下。


          什么時(shí)候需要feature scaling?

          • 涉及或隱含距離計(jì)算的算法,比如K-means、KNN、PCA、SVM等,一般需要feature scaling,因?yàn)椋?/p>


          zero-mean一般可以增加樣本間余弦距離或者內(nèi)積結(jié)果的差異,區(qū)分力更強(qiáng),假設(shè)數(shù)據(jù)集集中分布在第一象限遙遠(yuǎn)的右上角,將其平移到原點(diǎn)處,可以想象樣本間余弦距離的差異被放大了。在模版匹配中,zero-mean可以明顯提高響應(yīng)結(jié)果的區(qū)分度。
          就歐式距離而言,增大某個(gè)特征的尺度,相當(dāng)于增加了其在距離計(jì)算中的權(quán)重,如果有明確的先驗(yàn)知識(shí)表明某個(gè)特征很重要,那么適當(dāng)增加其權(quán)重可能有正向效果,但如果沒有這樣的先驗(yàn),或者目的就是想知道哪些特征更重要,那么就需要先feature scaling,對(duì)各維特征等而視之
          增大尺度的同時(shí)也增大了該特征維度上的方差,PCA算法傾向于關(guān)注方差較大的特征所在的坐標(biāo)軸方向,其他特征可能會(huì)被忽視,因此,在PCA前做Standardization效果可能更好,如下圖所示,圖片來自scikit learn-Importance of Feature Scaling,


            PCA and Standardization
          • 損失函數(shù)中含有正則項(xiàng)時(shí),一般需要feature scaling:對(duì)于線性模型y=wx+b而言,x的任何線性變換(平移、放縮),都可以被w和b“吸收”掉,理論上,不會(huì)影響模型的擬合能力。但是,如果損失函數(shù)中含有正則項(xiàng),如λ∣∣w∣∣^2,λ為超參數(shù),其對(duì)w的每一個(gè)參數(shù)施加同樣的懲罰,但對(duì)于某一維特征xi而言,其scale越大,系數(shù)wi越小,其在正則項(xiàng)中的比重就會(huì)變小,相當(dāng)于對(duì)wi懲罰變小,即損失函數(shù)會(huì)相對(duì)忽視那些scale增大的特征,這并不合理,所以需要feature scaling,使損失函數(shù)平等看待每一維特征。

          • 梯度下降算法,需要feature scaling。梯度下降的參數(shù)更新公式如下,


          E(W)為損失函數(shù),收斂速度取決于:參數(shù)的初始位置到local minima的距離,以及學(xué)習(xí)率η的大小。一維情況下,在local minima附近,不同學(xué)習(xí)率對(duì)梯度下降的影響如下圖所示:
          Gradient descent for different learning rates
          多維情況下可以分解成多個(gè)上圖,每個(gè)維度上分別下降,參數(shù)W為向量,但學(xué)習(xí)率只有1個(gè),即所有參數(shù)維度共用同一個(gè)學(xué)習(xí)率(暫不考慮為每個(gè)維度都分配單獨(dú)學(xué)習(xí)率的算法)。收斂意味著在每個(gè)參數(shù)維度上都取得極小值,每個(gè)參數(shù)維度上的偏導(dǎo)數(shù)都為0,但是每個(gè)參數(shù)維度上的下降速度是不同的,為了每個(gè)維度上都能收斂,學(xué)習(xí)率應(yīng)取所有維度在當(dāng)前位置合適步長(zhǎng)中最小的那個(gè)。下面討論feature scaling對(duì)gradient descent的作用,


            • zero center與參數(shù)初始化相配合,縮短初始參數(shù)位置與local minimum間的距離,加快收斂。模型的最終參數(shù)是未知的,所以一般隨機(jī)初始化,比如從0均值的均勻分布或高斯分布中采樣得到,對(duì)線性模型而言,其分界面初始位置大致在原點(diǎn)附近,bias經(jīng)常初始化為0,則分界面直接通過原點(diǎn)。同時(shí),為了收斂,學(xué)習(xí)率不會(huì)很大。而每個(gè)數(shù)據(jù)集的特征分布是不一樣的,如果其分布集中且距離原點(diǎn)較遠(yuǎn),比如位于第一象限遙遠(yuǎn)的右上角,分界面可能需要花費(fèi)很多步驟才能“爬到”數(shù)據(jù)集所在的位置。所以,無論什么數(shù)據(jù)集,先平移到原點(diǎn),再配合參數(shù)初始化,可以保證分界面一定會(huì)穿過數(shù)據(jù)集。此外,outliers常分布在數(shù)據(jù)集的外圍,與分界面從外部向內(nèi)挪動(dòng)相比,從中心區(qū)域開始挪動(dòng)可能受outliers的影響更小。

            • 對(duì)于采用均方誤差損失LMS的線性模型,損失函數(shù)恰為二階,如下圖所示

            不同方向上的下降速度變化不同(二階導(dǎo)不同,曲率不同),恰由輸入的協(xié)方差矩陣決定,通過scaling改變了損失函數(shù)的形狀,減小不同方向上的曲率差異。將每個(gè)維度上的下降分解來看,給定一個(gè)下降步長(zhǎng),如果不夠小,有的維度下降的多,有的下降的少,有的還可能在上升,損失函數(shù)的整體表現(xiàn)可能是上升也可能是下降,就會(huì)不穩(wěn)定。scaling后不同方向上的曲率相對(duì)更接近,更容易選擇到合適的學(xué)習(xí)率,使下降過程相對(duì)更穩(wěn)定。

            • 另有從Hessian矩陣特征值以及condition number角度的理解,詳見Lecun paper-Efficient BackProp中的Convergence of Gradient Descent一節(jié),有清晰的數(shù)學(xué)描述,同時(shí)還介紹了白化的作用——解除特征間的線性相關(guān)性,使每個(gè)維度上的梯度下降可獨(dú)立看待。

            • 文章開篇的橢圓形和圓形等高線圖,僅在采用均方誤差的線性模型上適用,其他損失函數(shù)或更復(fù)雜的模型,如深度神經(jīng)網(wǎng)絡(luò),損失函數(shù)的error surface可能很復(fù)雜,并不能簡(jiǎn)單地用橢圓和圓來刻畫,所以用它來解釋feature scaling對(duì)所有損失函數(shù)的梯度下降的作用,似乎過于簡(jiǎn)化,見Hinton vedio-3.2 The error surface for a linear neuron。

            • 對(duì)于損失函數(shù)不是均方誤差的情況,只要權(quán)重w與輸入特征x間是相乘關(guān)系,損失函數(shù)對(duì)w的偏導(dǎo)必然含有因子x,w的梯度下降速度就會(huì)受到特征x尺度的影響。理論上為每個(gè)參數(shù)都設(shè)置上自適應(yīng)的學(xué)習(xí)率,可以吸收掉x尺度的影響,但在實(shí)踐中出于計(jì)算量的考慮,往往還是所有參數(shù)共用一個(gè)學(xué)習(xí)率,此時(shí)x尺度不同可能會(huì)導(dǎo)致不同方向上的下降速度懸殊較大,學(xué)習(xí)率不容易選擇,下降過程也可能不穩(wěn)定,通過scaling可對(duì)不同方向上的下降速度有所控制,使下降過程相對(duì)更穩(wěn)定。

          • 對(duì)于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),對(duì)輸入做feature scaling也很重要,因?yàn)椴捎胹igmoid等有飽和區(qū)的激活函數(shù),如果輸入分布范圍很廣,參數(shù)初始化時(shí)沒有適配好,很容易直接陷入飽和區(qū),導(dǎo)致梯度消失,所以,需要對(duì)輸入做Standardization或映射到[0,1]、[?1,1],配合精心設(shè)計(jì)的參數(shù)初始化方法,對(duì)值域進(jìn)行控制。但自從有了Batch Normalization,每次線性變換改變特征分布后,都會(huì)重新進(jìn)行Normalization,似乎可以不太需要對(duì)網(wǎng)絡(luò)的輸入進(jìn)行feature scaling了?但習(xí)慣上還是會(huì)做feature scaling。

          什么時(shí)候不需要Feature Scaling?


          與距離計(jì)算無關(guān)的概率模型,不需要feature scaling,比如Naive Bayes;
          與距離計(jì)算無關(guān)的基于樹的模型,不需要feature scaling,比如決策樹、隨機(jī)森林等,樹中節(jié)點(diǎn)的選擇只關(guān)注當(dāng)前特征在哪里切分對(duì)分類更好,即只在意特征內(nèi)部的相對(duì)大小,而與特征間的相對(duì)大小無關(guān)。


          小結(jié)


          這篇文章寫得十分艱難,一開始以為蠻簡(jiǎn)單直接,但隨著探索的深入,冒出的問號(hào)越來越多,打破了很多原來的“理所當(dāng)然”,所以,在寫的過程中不停地做加法,很多地方想解釋得盡量直觀,又不想照搬太多公式,但自己的理解又不夠深刻,導(dǎo)致現(xiàn)在敘述這么冗長(zhǎng),希望以后在寫文時(shí)能更專注更精煉。

          參考文獻(xiàn)


          1.wiki-Feature scaling
          2.wiki-Backpropagation
          3.[Hung-yi Lee pdf-Gradient Descent](<http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/Gradient Descent (v2).pdf>)
          4.quora-Why does mean normalization help in gradient descent?
          5.scikit learn-Importance of Feature Scaling
          6.scikit learn-5.3. Preprocessing data
          7.scikit learn-Compare the effect of different scalers on data with outliers
          8.data school-Comparing supervised learning algorithms
          9.Lecun paper-Efficient BackProp
          10.Hinton vedio-3.2 The error surface for a linear neuron
          11.CS231n-Neural Networks Part 2: Setting up the Data and the Loss
          12.ftp-Should I normalize/standardize/rescale the data?
          13.medium-Understand Data Normalization in Machine Learning
          14.Normalization and Standardization
          15.How and why do normalization and feature scaling work?
          16.Is it a good practice to always scale/normalize data for machine learning?
          17.When conducting multiple regression, when should you center your predictor variables & when should you standardize them?


          END



          雙一流大學(xué)研究生團(tuán)隊(duì)創(chuàng)建,專注于目標(biāo)檢測(cè)與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

          瀏覽 36
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  51ⅴ精品国产91久久久久久 | 中学生妹一级特黄毛片 | 五月花在线视频 | 欧美成人操B网站 | 色综合八区 |