歸一化和標(biāo)準(zhǔn)化大全

本人對這兩個理解不是很深入,看了下面這些大佬的回答,還是模模糊糊,略懂一二。

一、知乎高贊回答

1、特征工程中的「歸一化」有什么作用?

微調(diào)大佬的回答:


from sklearn import preprocessing
from scipy.stats import rankdata
x = [[1], [3], [34], [21], [10], [12]]
std_x = preprocessing.StandardScaler().fit_transform(x)
norm_x = preprocessing.MinMaxScaler().fit_transform(x)
print('原始順序  :', rankdata(x))
print('標(biāo)準(zhǔn)化順序:', rankdata(std_x))
print('歸一化順序:', rankdata(norm_x))

憶臻博士的回答:



王赟 Maigo大佬回答:

在進行數(shù)據(jù)分析的時候,什么情況下需要對數(shù)據(jù)進行標(biāo)準(zhǔn)化處理?


對數(shù)據(jù)做PCA,之前考慮歸一化,突然想到應(yīng)該是對每一維特征做歸一化然后合起來還是直接對整個特征矩陣歸一化?



二、其他一些觀點

標(biāo)準(zhǔn)化:
是將數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間。由于信用指標(biāo)體系的各個指標(biāo)度量單位是不同的,為了能夠?qū)⒅笜?biāo)參與評價計算,需要對指標(biāo)進行規(guī)范化處理,通過函數(shù)變換將其數(shù)值映射到某個數(shù)值區(qū)間。

歸一化:
(1)把數(shù)據(jù)變成(0,1)或者(1,1)之間的小數(shù)。主要是為了數(shù)據(jù)處理方便提出來的,把數(shù)據(jù)映射到0~1范圍之內(nèi)處理,更加便捷快速。
(2)把有量綱表達式變成無量綱表達式,便于不同單位或量級的指標(biāo)能夠進行比較和加權(quán)。歸一化是一種簡化計算的方式,即將有量綱的表達式,經(jīng)過變換,化為無量綱的表達式,成為純量。歸一化的依據(jù)非常簡單,不同變量往往量綱不同,歸一化可以消除量綱對最終結(jié)果的影響,使不同變量具有可比性。比如兩個人體重差10KG,身高差0.02M,在衡量兩個人的差別時體重的差距會把身高的差距完全掩蓋,歸一化之后就不會有這樣的問題。

如果把所有維度的變量一視同仁,在最后計算距離中發(fā)揮相同的作用應(yīng)該選擇標(biāo)準(zhǔn)化,如果想保留原始數(shù)據(jù)中由標(biāo)準(zhǔn)差所反映的潛在權(quán)重關(guān)系應(yīng)該選擇歸一化。另外,標(biāo)準(zhǔn)化更適合現(xiàn)代嘈雜大數(shù)據(jù)場景。

歸一化的好處

  1. 提升模型的收斂速度
    如下圖,x1的取值為0-2000,而x2的取值為1-5,假如只有這兩個特征,對其進行優(yōu)化時,會得到一個窄長的橢圓形,導(dǎo)致在梯度下降時,梯度的方向為垂直等高線的方向而走之字形路線,這樣會使迭代很慢,相比之下,右圖的迭代就會很快


2.提升模型的精度
歸一化的另一好處是提高精度,這在涉及到一些距離計算的算法時效果顯著,比如算法要計算歐氏距離,上圖中x2的取值范圍比較小,涉及到距離計算時其對結(jié)果的影響遠比x1帶來的小,所以這就會造成精度的損失。所以歸一化很有必要,他可以讓各個特征對結(jié)果做出的貢獻相同。

概率模型(樹形模型)不需要歸一化,因為它們不關(guān)心變量的值,而是關(guān)心變量的分布和變量之間的條件概率,如決策樹、RF。因為決策樹中的切分依據(jù),信息增益、信息增益比、Gini指數(shù)都是基于概率得到的,和值的大小沒有關(guān)系。另外同屬概率模型的樸素貝葉斯,隱馬爾科夫也不需要標(biāo)準(zhǔn)化。而像Adaboost、SVM、LR、Knn、KMeans之類的最優(yōu)化問題就需要歸一化。

三、邏輯回歸必須要進行標(biāo)準(zhǔn)化嗎?

如果你不用正則,那么,標(biāo)準(zhǔn)化并不是必須的,如果你用正則,那么標(biāo)準(zhǔn)化是必須的。
為什么呢?
因為不用正則時,我們的損失函數(shù)只是僅僅在度量預(yù)測與真實的差距,加上正則后,我們的損失函數(shù)除了要度量上面的差距外,還要度量參數(shù)值是否足夠小。而參數(shù)值的大小程度或者說大小的級別是與特征的數(shù)值范圍相關(guān)的。舉例來說,我們用體重預(yù)測身高,體重用kg衡量時,訓(xùn)練出的模型是:
身高 = 體重*x
x就是我們訓(xùn)練出來的參數(shù)。
當(dāng)我們的體重用噸來衡量時,x的值就會擴大為原來的1000倍。
在上面兩種情況下,都用L1正則的話,顯然對模型的訓(xùn)練影響是不同的。
假如不同的特征的數(shù)值范圍不一樣,有的是0到0.1,有的是100到10000,那么,每個特征對應(yīng)的參數(shù)大小級別也會不一樣,在L1正則時,我們是簡單將參數(shù)的絕對值相加,因為它們的大小級別不一樣,就會導(dǎo)致L1最后只會對那些級別比較大的參數(shù)有作用,那些小的參數(shù)都被忽略了。

四、補充

數(shù)據(jù)預(yù)處理的歸一化手段應(yīng)該如何應(yīng)用到訓(xùn)練集,測試集和驗證集中?
兩個問題,第一個假如先把數(shù)據(jù)劃分成訓(xùn)練集和測試集,我在訓(xùn)練集上對所有變量歸一化后,比如用均值方差歸一化,那我在測試集上歸一化的時候用的均值方差都是訓(xùn)練集中的還是在測試集上用自身的均值方差。第二個問題是歸一化手段有很多,均值方差歸一化,最大最小歸一化,那我怎么去區(qū)分這些歸一化手段的不同,就是什么時候用均值方差歸一化什么時候用最大最小歸一化,這些不同的歸一化手段會對我的結(jié)果產(chǎn)生影響嗎?如果有影響我又該如何去針對數(shù)據(jù)選擇合適的歸一化手段?
回答一:




回答二:

感覺看完是不是似懂又非懂的感覺?

轉(zhuǎn)載:http://www.itdecent.cn/p/95a8f035c86c
https://www.zhihu.com/question/20455227
http://www.itdecent.cn/p/4c3081d40ca6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容