1 概念
??歸一化:1)把數(shù)據(jù)變成(0,1)或者(1,1)之間的小數(shù)萧落。主要是為了數(shù)據(jù)處理方便提出來的践美,把數(shù)據(jù)映射到0~1范圍之內(nèi)處理,更加便捷快速找岖。2)把有量綱表達式變成無量綱表達式拨脉,便于不同單位或量級的指標能夠進行比較和加權(quán)。歸一化是一種簡化計算的方式宣增,即將有量綱的表達式,經(jīng)過變換矛缨,化為無量綱的表達式爹脾,成為純量。
??標準化:在機器學習中箕昭,我們可能要處理不同種類的資料灵妨,例如,音訊和圖片上的像素值落竹,這些資料可能是高維度的泌霍,資料標準化后會使每個特征中的數(shù)值平均變?yōu)?(將每個特征的值都減掉原始資料中該特征的平均)、標準差變?yōu)?,這個方法被廣泛的使用在許多機器學習算法中(例如:支持向量機朱转、邏輯回歸和類神經(jīng)網(wǎng)絡)蟹地。
??中心化:平均值為0,對標準差無要求
??歸一化和標準化的區(qū)別:歸一化是將樣本的特征值轉(zhuǎn)換到同一量綱下把數(shù)據(jù)映射到[0,1]或者[-1, 1]區(qū)間內(nèi)藤为,僅由變量的極值決定怪与,因區(qū)間放縮法是歸一化的一種。標準化是依照特征矩陣的列處理數(shù)據(jù)缅疟,其通過求z-score的方法分别,轉(zhuǎn)換為標準正態(tài)分布,和整體樣本分布相關存淫,每個樣本點都能對標準化產(chǎn)生影響耘斩。它們的相同點在于都能取消由于量綱不同引起的誤差;都是一種線性變換桅咆,都是對向量X按照比例壓縮再進行平移括授。
??標準化和中心化的區(qū)別:標準化是原始分數(shù)減去平均數(shù)然后除以標準差,中心化是原始分數(shù)減去平均數(shù)轧邪。 所以一般流程為先中心化再標準化刽脖。
??無量綱:我的理解就是通過某種方法能去掉實際過程中的單位,從而簡化計算忌愚。
2 為什么要歸一化/標準化曲管?
??如前文所說,歸一化/標準化實質(zhì)是一種線性變換,線性變換有很多良好的性質(zhì)浆竭,這些性質(zhì)決定了對數(shù)據(jù)改變后不會造成“失效”归敬,反而能提高數(shù)據(jù)的表現(xiàn),這些性質(zhì)是歸一化/標準化的前提檬某。比如有一個很重要的性質(zhì):線性變換不會改變原始數(shù)據(jù)的數(shù)值排序。
(1)某些模型求解需要
??1)在使用梯度下降的方法求解最優(yōu)化問題時螟蝙, 歸一化/標準化后可以加快梯度下降的求解速度恢恼,即提升模型的收斂速度。如左圖所示胰默,未歸一化/標準化時形成的等高線偏橢圓场斑,迭代時很有可能走“之”字型路線(垂直長軸),從而導致迭代很多次才能收斂牵署。而如右圖對兩個特征進行了歸一化漏隐,對應的等高線就會變圓,在梯度下降進行求解時能較快的收斂奴迅。
??2)一些分類器需要計算樣本之間的距離(如歐氏距離)青责,例如KNN。如果一個特征值域范圍非常大,那么距離計算就主要取決于這個特征脖隶,從而與實際情況相悖(比如這時實際情況是值域范圍小的特征更重要)扁耐。
(2)無量綱化
??例如房子數(shù)量和收入,因為從業(yè)務層知道浩村,這兩者的重要性一樣做葵,所以把它們?nèi)繗w一化。 這是從業(yè)務層面上作的處理心墅。
(3)避免數(shù)值問題
??太大的數(shù)會引發(fā)數(shù)值問題酿矢。
3 數(shù)據(jù)預處理時
3.1 歸一化
(1)Min-Max Normalization
?? x' = (x - X_min) / (X_max - X_min)
(2)平均歸一化
?? x' = (x - μ) / (MaxValue - MinValue)
??(1)和(2)有一個缺陷就是當有新數(shù)據(jù)加入時,可能導致max和min的變化怎燥,需要重新定義瘫筐。
(3)非線性歸一化
??1)對數(shù)函數(shù)轉(zhuǎn)換:y = log10(x)
??2)反余切函數(shù)轉(zhuǎn)換:y = atan(x) * 2 / π
??(3)經(jīng)常用在數(shù)據(jù)分化比較大的場景,有些數(shù)值很大铐姚,有些很小策肝。通過一些數(shù)學函數(shù),將原始值進行映射隐绵。該方法包括 log之众、指數(shù),正切等依许。需要根據(jù)數(shù)據(jù)分布的情況棺禾,決定非線性函數(shù)的曲線,比如log(V, 2)還是log(V, 10)等峭跳。
3.2 標準化
(1)Z-score規(guī)范化(標準差標準化 / 零均值標準化)
??x' = (x - μ)/σ
3.3 中心化
??x' = x - μ
4 什么時候用歸一化膘婶?什么時候用標準化?
??(1)如果對輸出結(jié)果范圍有要求蛀醉,用歸一化悬襟。
??(2)如果數(shù)據(jù)較為穩(wěn)定,不存在極端的最大最小值拯刁,用歸一化脊岳。
??(3)如果數(shù)據(jù)存在異常值和較多噪音,用標準化垛玻,可以間接通過中心化避免異常值和極端值的影響割捅。
??某知乎答主的回答提到了他個人經(jīng)驗:一般來說,我個人建議優(yōu)先使用標準哈夭谤。對于輸出有要求時再嘗試別的方法,如歸一化或者更加復雜的方法巫糙。很多方法都可以將輸出范圍調(diào)整到[0, 1]朗儒,如果我們對于數(shù)據(jù)的分布有假設的話,更加有效的方法是使用相對應的概率密度函數(shù)來轉(zhuǎn)換。讓我們以高斯分布為例醉锄,我們可以首先計算高斯誤差函數(shù)(Gaussian Error Function)乏悄,此處定為er fc(·),那么可以用下式進行轉(zhuǎn)化:
??這篇博客提到他的經(jīng)驗:1) 在分類恳不、聚類算法中檩小,需要使用距離來度量相似性的時候、或者使用PCA技術(shù)進行降維的時候烟勋,第二種方法(Z-score standardization)表現(xiàn)更好规求。2) 在不涉及距離度量、協(xié)方差計算卵惦、數(shù)據(jù)不符合正太分布的時候阻肿,可以使用第一種方法或其他歸一化方法。比如圖像處理中沮尿,將RGB圖像轉(zhuǎn)換為灰度圖像后將其值限定在[0 255]的范圍丛塌。
5 哪些模型必須歸一化/標準化?
(1)SVM
??不同的模型對特征的分布假設是不一樣的畜疾。比如SVM 用高斯核的時候赴邻,所有維度共用一個方差,這不就假設特征分布是圓的么啡捶,輸入橢圓的就坑了人家姥敛,所以簡單的歸一化都還不夠好,來杯白化才有勁届慈。比如用樹的時候就是各個維度各算各的切分點徒溪,沒所謂。
(2)KNN
??需要度量距離的模型金顿,一般在特征值差距較大時臊泌,都會進行歸一化/標準化。不然會出現(xiàn)“大數(shù)吃小數(shù)”揍拆。
(3)神經(jīng)網(wǎng)絡
??1)數(shù)值問題
??歸一化/標準化可以避免一些不必要的數(shù)值問題渠概。輸入變量的數(shù)量級未致于會引起數(shù)值問題吧,但其實要引起也并不是那么困難嫂拴。因為tansig(tanh)的非線性區(qū)間大約在[-1.7播揪,1.7]。意味著要使神經(jīng)元有效筒狠,tansig( w1x1 + w2x2 +b) 里的 w1x1 +w2x2 +b 數(shù)量級應該在 1 (1.7所在的數(shù)量級)左右猪狈。這時輸入較大,就意味著權(quán)值必須較小辩恼,一個較大雇庙,一個較小谓形,兩者相乘,就引起數(shù)值問題了疆前。
??假如你的輸入是421寒跳,你也許認為,這并不是一個太大的數(shù)竹椒,但因為有效權(quán)值大概會在1/421左右童太,例如0.00243,那么胸完,在matlab里輸入 421·0.00243 == 0.421·2.43书释,會發(fā)現(xiàn)不相等,這就是一個數(shù)值問題舶吗。
??2)求解需要
??a. 初始化:在初始化時我們希望每個神經(jīng)元初始化成有效的狀態(tài)征冷,tansig函數(shù)在[-1.7, 1.7]范圍內(nèi)有較好的非線性,所以我們希望函數(shù)的輸入和神經(jīng)元的初始化都能在合理的范圍內(nèi)使得每個神經(jīng)元在初始時是有效的誓琼。(如果權(quán)值初始化在[-1,1]且輸入沒有歸一化且過大检激,會使得神經(jīng)元飽和)
??b. 梯度:以輸入-隱層-輸出這樣的三層BP為例,我們知道對于輸入-隱層權(quán)值的梯度有2ew(1-a^2)*x的形式(e是誤差腹侣,w是隱層到輸出層的權(quán)重叔收,a是隱層神經(jīng)元的值,x是輸入)傲隶,若果輸出層的數(shù)量級很大饺律,會引起e的數(shù)量級很大,同理跺株,w為了將隱層(數(shù)量級為1)映身到輸出層复濒,w也會很大,再加上x也很大的話乒省,從梯度公式可以看出巧颈,三者相乘,梯度就非常大了袖扛。這時會給梯度的更新帶來數(shù)值問題砸泛。
??c. 學習率:由(2)中,知道梯度非常大蛆封,學習率就必須非常小唇礁,因此,學習率(學習率初始值)的選擇需要參考輸入的范圍惨篱,不如直接將數(shù)據(jù)歸一化盏筐,這樣學習率就不必再根據(jù)數(shù)據(jù)范圍作調(diào)整。 隱層到輸出層的權(quán)值梯度可以寫成 2ea砸讳,而輸入層到隱層的權(quán)值梯度為 2ew(1-a^2)x 琢融,受 x 和 w 的影響楷拳,各個梯度的數(shù)量級不相同,因此吏奸,它們需要的學習率數(shù)量級也就不相同。對w1適合的學習率陶耍,可能相對于w2來說會太小奋蔚,若果使用適合w1的學習率,會導致在w2方向上步進非常慢烈钞,會消耗非常多的時間泊碑,而使用適合w2的學習率,對w1來說又太大毯欣,搜索不到適合w1的解馒过。如果使用固定學習率,而數(shù)據(jù)沒歸一化酗钞,則后果可想而知腹忽。
??d.搜索軌跡:已解釋
??
(4)PCA
參考:
標準化和歸一化什么區(qū)別? - 知乎:https://www.zhihu.com/question/20467170
R--數(shù)據(jù)標準化砚作、歸一化窘奏、中心化處理:https://zhuanlan.zhihu.com/p/33727799
特征工程中的[歸一化]有什么作用? - 知乎:https://www.zhihu.com/question/20455227
神經(jīng)網(wǎng)絡為什么要歸一化:http://nnetinfo.com/nninfo/showText.jsp?id=37