歸一化、標(biāo)準(zhǔn)化和正則化都是對(duì)數(shù)據(jù)進(jìn)行處理的,那么這三種有什么區(qū)別呢?
歸一化(normalization)
歸一化有兩個(gè)作用:
- 把數(shù)據(jù)映射到(0,1)之間方便處理
- 把有量綱表達(dá)式變換為無量綱表達(dá)式,成為純量。經(jīng)過歸一化處理的數(shù)據(jù),處于同一數(shù)量級(jí),可以消除指標(biāo)之間的量綱和量綱單位的影響,提高不同數(shù)據(jù)指標(biāo)之間的可比性。
歸一化的主要方法
1.線性轉(zhuǎn)換,即min-max歸一化:
2.對(duì)數(shù)函數(shù)轉(zhuǎn)換:
3.反余切函數(shù)轉(zhuǎn)換:
y=atan(x)*2/PI
可實(shí)現(xiàn)代碼
'''MinMaxScaler方法'''
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler(feature_range=(0,1), copy=True)
scaler.fit_transform(data)
分別對(duì)每一列做做最小最大化歸一化,特征范圍默認(rèn)為(0,1)之間,原理比較簡(jiǎn)單,不再累述,詳見官方文檔
標(biāo)準(zhǔn)化(Standardization)
數(shù)據(jù)的標(biāo)準(zhǔn)化是將數(shù)據(jù)按比例縮放讓數(shù)據(jù)落入某一特定區(qū)間內(nèi),使均值為0。公式為:
與歸一化相比,標(biāo)準(zhǔn)化更為常見,原因如下:
- 標(biāo)準(zhǔn)化更好的保持了樣本間的距離,當(dāng)樣本中存在異常點(diǎn)時(shí),歸一化有可能將正常值擠到一起,而標(biāo)準(zhǔn)化則不會(huì),例如[1, 2, 10000],假設(shè)10000是異常值,那么歸一化之后就會(huì)變成[0, 0.0001, 1],正常值1和2就被擠到了一塊。如果不幸的是,1和2不是同一標(biāo)簽,那么我們?cè)谟锰荻认陆底瞿P陀?xùn)練時(shí),模型會(huì)花更長的時(shí)間收斂,但標(biāo)準(zhǔn)化的結(jié)果是[-0.70721286,0.7070007,1.41421356],不會(huì)將樣本“擠到”一起去;
- 標(biāo)準(zhǔn)化更符合統(tǒng)計(jì)學(xué)假設(shè)。對(duì)于一個(gè)數(shù)值特征來說,很大可能它是服從正太分布的,而標(biāo)準(zhǔn)化是基于這個(gè)假設(shè),將正態(tài)分布調(diào)整為標(biāo)準(zhǔn)正態(tài)分布。
主要方法:
標(biāo)準(zhǔn)化最常用的方法是Z-Score方法,
'''StandardScaler方法'''
from sklearn import preprocessing
scaler = preprocessing.StandardScaler(copy=True, with_mean=True,with_std=True)
scaler.fit_transform(data)
計(jì)算公式為:
u為每列訓(xùn)練樣本均值,s為每列標(biāo)準(zhǔn)差,詳見官方文檔
正則化(Regularization)
'''normalize方法'''
from sklearn import preprocessing
scaler = preprocessing.normalize(data,norm='l2',axis=1,return_norm=False)
norm='l1','l2'或'max',默認(rèn)為‘l2’
官方文檔
參考博客:
數(shù)據(jù)歸一化、標(biāo)準(zhǔn)化和正則化
歸一化,標(biāo)準(zhǔn)化,正則化的概念和區(qū)別
sklearn.preprocessing官方文檔