標準化與歸一化 機器學習

2021-09-25 07:27:04 字數 1959 閱讀 8167

歸一化和標準化經常被搞混,程度還比較嚴重,非常干擾大家的理解。

為了方便後續的討論,必須先明確二者的定義。

如果要把輸入資料轉換到[0,1]的範圍,可以用如下公式進行計算:

按以上方式進行歸一化以後,輸入資料轉換到[0,1]的範圍。

有時候我們希望將輸入轉換到[-1,1]的範圍,可以使用以下的公式

以上兩種方式,都是針對原始資料做等比例的縮放。其中xnorm 是歸一化以後的資料,x是 原始資料大小,xmax xmin 分別是原始資料的最大值與最小值。公式簡單明瞭,很容易懂。

除了將資料縮放到[0,1]或[-1,1]的範圍,實際中還經常有其他縮放需求。

例如在進行影象處理的過程中,獲得的灰度影象的灰度值在[0,255]之間。常用的處理方式之一就是將畫素值除以255,就縮放到了[0,1]之間。而在rgb影象轉灰度影象的過程中,經常就將灰度值限定在[0,255]之間。

0均值歸一化將輸入的原始資料集歸一化為均值為0,方差為1的資料集。具體的歸一化公式如下:

其中,μ,σ是原始 資料集的均值與標準差。

進一步明確二者含義:

歸一化和標準化的相同點都是對某個特徵(column)進行縮放(scaling)而不是對某個樣本的特徵向量(row)進行縮放。對特徵向量進行縮放是毫無意義的(坑1),比如三列特徵:身高、體重、血壓。每一條樣本(row)就是三個這樣的值,對這個row無論是進行標準化還是歸一化都是好笑的,因為你不能將身高、體重和血壓混到一起去!

首先明確,在機器學習中,標準化是更常用的手段,歸一化的應用場景是有限的。我總結原因有兩點:

真正的答案是,這取決於我們的邏輯回歸是不是用正則。

如果你不用正則,那麼,標準化並不是必須的,如果你用正則,那麼標準化是必須的。(坑3)

為什麼呢?

因為不用正則時,我們的損失函式只是僅僅在度量**與真實的差距,加上正則後,我們的損失函式除了要度量上面的差距外,還要度量引數值是否足夠小。而引數值的大小程度或者說大小的級別是與特徵的數值範圍相關的。

舉例來說,我們用體重**身高,體重用kg衡量時,訓練出的模型是:

身高 = 體重*x

x就是我們訓練出來的引數。

當我們的體重用噸來衡量時,x的值就會擴大為原來的1000倍。

在上面兩種情況下,都用l1正則的話,顯然對模型的訓練影響是不同的。

假如不同的特徵的數值範圍不一樣,有的是0到0.1,有的是100到10000,那麼,每個特徵對應的引數大小級別也會不一樣,在l1正則時,我們是簡單將引數的絕對值相加,因為它們的大小級別不一樣,就會導致l1最後只會對那些級別比較大的引數有作用,那些小的引數都被忽略了。

如果不用正則,那麼標準化對邏輯回歸有什麼好處嗎?

答案是有好處,進行標準化後,我們得出的引數值的大小可以反應出不同特徵對樣本label的貢獻度,方便我們進行特徵篩選。如果不做標準化,是不能這樣來篩選特徵的。

做標準化有什麼注意事項嗎?

最大的注意事項就是先拆分出test集,不要在整個資料集上做標準化,因為那樣會將test集的資訊引入到訓練集中,這是乙個非常容易犯的錯誤!

答不需要!標準化。因為決策樹中的切分依據,資訊增益、資訊增益比、gini指數都是基於概率得到的,和值的大小沒有關係。另外同屬概率模型的樸素貝葉斯,隱馬爾科夫也不需要標準化。

可以看看這篇文章:

歸一化與標準化

特點 對不同特徵維度的伸縮錶換的目的是使各個特徵維度對目標函式的影響權重是一致的,即使得那些扁平分布的資料伸縮變換成類圓形。這也就改變了原始資料的乙個分布。好處 1 提高迭代求解的收斂速度 2 提高迭代求解的精度 方法 1 min max標準化 也成為離差標準化,對原始資料的的線性變換,結果值對映到...

歸一化與標準化

1 提公升訓練的速度 2 提公升模型的精度 3 深度模型中能夠防止梯度 min max 歸一化 x x x min x max x min 將x 對映到 0,1 之間的乙個數 z score 標準化 均值為0 標準差為1 當有新的樣本加入時,min max 計算量小,z score 需要重新計算均值...

機器學習筆記 一 歸一化與標準化與正則化

優秀文章 一 歸一化 歸一化目的是將資料對映到同乙個範圍,增加可比性。二 標準化 標準化目地是加速收斂,更快找到最優解,計算上與正態分佈標準化類似,變換在空間中的位置。三 正則化 正則化目的是避免過擬合,減少誤差。計算上在一般loss函式上加上正則項,有l1正則,l2正則,可以看做是損失函式的懲罰項...