歸一化和標準化
引言
我查閱了網上的一些資料發現他們對這個標準化和歸一化的區分並不是特別一致,有的是將歸一化方法歸結到標準化方法裏,有的是將歸一化方法和標準化方法並行描述的。知乎上有個回答者給出維基的解釋是這樣的:
特徵縮放(Featrue Scaling)分爲:
截圖鏈接https://www.zhihu.com/question/20467170/answer/633379185
總體而言,對於常見的歸一化方法是指下述公式(1),對於常見的標準化方法是指下述公式(2)。
歸一化公式
(1)
標準化公式
(2)
我這裏即按上述公式(1)和(2)進行區分歸一化和標準化。
什麼是歸一化和標準化?
歸一化
通過對原始數據進行線性變換把數據映射到[0,1]之間。
其中max是樣本數據最大值,min是樣本數據最小值。
該方法也叫min-max法,離差標準化法等。
標準化
通過處理將數據的均值變爲0,標準差變爲1。
其中 是樣本均值,是樣本標準差。
適用於屬性A的最大值和最小值未知的情況,或有超出取值範圍的離羣數據的情況。
該方法也叫Z-Score標準化方法。
證明經該標準化後樣本數據的均值變爲0,標準差變爲1。
證:原樣本數據的均值爲,標準差爲
所以有:
$ E(X)=\mu$
則有
爲什麼要引入歸一化和標準化?
例如:對於某一對象A,它有三種特徵,X1=1000,X2=1,X3=0.5,在衡量對象A時,顯然特徵X1對A的影響很可能會掩蓋掉特徵X3對A的影響,這就會造成精度的損失,且X1,X2,X3是不同量綱的,那麼就更不能比較了,而且也不能忽略其他特徵的影響。這時候就需要引入標準化/歸一化。數據的標準化/歸一化就是將原始各指標數據按比例縮放,去除數據單位的限制,轉化爲無量綱的數值,使得不同特徵對參數的影響程度是一樣的,便於不同單位和量級的指標能夠比較和加權。
簡而言之:對數據標準化的目的是消除特徵之間的差異性,便於特徵專心學習權重。
標準化/歸一化的作用:
1.消除量綱,使不同變量具有可比性
2.提高收斂速度
3.提高精度
歸一化和標準化有什麼區別?
歸一化
歸一化,依據特徵矩陣的行處理數據,目的在於樣本向量點乘運算或其他核函數計算相似性時,擁有統一的標準,也就是說轉化爲單位向量。
對輸出結果範圍有要求;數據較爲穩定,不存在極端的最大值最小值。
標準化
標準化是依照特徵矩陣的列處理數據,其通過求z-score的方法,將樣本的特徵值轉換到同一量綱下。
標準化在於提高迭代速度,降低不同維度之間影響權重不一致的問題。
數據存在異常值和較多噪音,可以間接通過中心化避免異常值和極端值的影響。
(我這裏並不理解是啥意思)
什麼時候要用到歸一化和標準化?
SVM,邏輯迴歸,訓練神經網絡,KNN,線性迴歸,聚類問題,分類問題,主成分分析問題
對於需要歸一化的模型,主要是因爲特徵值相差很大時,運用梯度下降,損失等高線是橢圓形時,需要經過多次迭代才能達到最優點,如果進行歸一化了,那麼等高線就是圓形的,促使SGD往原點迭代,從而導致需要迭代次數較少。
什麼時候不需要用到歸一化和標準化?
概率模型不需要歸一化
樹形結構,如隨機森林,決策樹等
因爲樹形結構不關心變量的值,而是關心變量分佈和變量之間的條件概率。對於樹形結構,它的數值縮放不影響分裂點的位置,對樹模型的結構不造成影響,樹模型的構造是通過尋找最優分裂點構成的,而且樹模型不能進行梯度下降,因爲樹模型是階躍的,階躍是不可導的,並且求導無意義,也不需要歸一化。