數(shù)據(jù)標準化、歸一化、正則化概念厘定

網(wǎng)上較為混亂,書上看過又忘了,查找不便,特地總結(jié)于此。

首先吐槽一點,我記不住,當然有個人記性不好的原因,但更重要的是,本身概念就是混亂的,如身邊的同事、網(wǎng)上各類業(yè)余的文章(很多文章是有誤導性的),甚至某些論文里的定義都不太一樣。

進行數(shù)據(jù)尺度變化的目的,在于更好的訓練模型,詳見參考資料3。在聚類算法中,不進行尺度變化,會導致錯誤的結(jié)果(量綱不同,取值較小的特征會被取值較大的特征淹沒),至于決策樹類的算法倒是無此問題(計算信息增益比,是否尺度變化并不影響)。

1、標準化,standardization

scaling,是將數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間。

零均值標準化(z-score standardization),x = \frac{x-\mu }{\sigma } ,分布轉(zhuǎn)換為正態(tài)分布,均值為0,方差為1,取值[-1,1]。該方法對異常值、噪聲不敏感,應用最為廣泛,一般在涉及距離度量計算相似性(如KNN、Kmeans聚類)或PCA(核心是計算方差、協(xié)方差)時使用。

線性歸一化(min-max normalization),該方法在sklearn中被稱為另一種形式的standardization。通過對原始數(shù)據(jù)的線性變換x= \frac{x-min}{max-min} ,使結(jié)果落到[0,1]區(qū)間。該方法對原始數(shù)據(jù)進行線性變化,可保持原始數(shù)據(jù)之間的聯(lián)系,缺陷是當有新數(shù)據(jù)加入時,最大最小值可能改變,需重新計算轉(zhuǎn)換函數(shù)。

有朋友可能會問,那在PCA時使用最大最小標準化代替零均值標準化可以么?參考資料3中給出了清晰的證明,有興趣的朋友可以閱讀,大意就是,最大最小標準化使得協(xié)方差產(chǎn)生了倍數(shù)值縮放,無法消除量綱的影響。

因此,如果需要每個特征值都對整體歸一化產(chǎn)生一定影響的話(和分布相關的話),選擇零均值標準化。

2、歸一化,normalization

在sklearn中定義為,?縮放單個樣本使其具有單位范數(shù)的過程,計算方式是計算每個樣本的p范數(shù),然后對該樣本中的每個元素除以該范數(shù),使得處理后樣本的p范數(shù)等于1,把數(shù)變?yōu)椋?-1)之間的小數(shù),消除量綱。

l1范數(shù),||x||_{1}  = |x_{1} |  + |x_{2} |  +…… +|x_{n} |

l2范數(shù),||x||_{2}  = \sqrt[2]{|x_{1} |^2   +|x_{2} |^2  +…… +|x_{n} |^2  }

\propto 范數(shù),||x||_{1}  = max(|x_{1} |, |x_{2} |,…… ,|x_{n} | )

該方法主要應用于文本分類和聚類,例如對于TF-IDF向量的l2-norm點積,即得到這兩個向量的余弦相似度。

3、正則化,regularization

機器學習中對損失函數(shù)的操作,非數(shù)據(jù)特征集進行的尺度變化。

4、其他

映射到其他分布,如指定區(qū)間、均勻分布、高斯分布、np.log1p等,特別是對于較多異常值的數(shù)據(jù)集時,采用robust_scale、RobustScaler是更好的選擇。

閱讀sklearn文檔是學習機器學習最好的方式。

附,參考資料:

1、sklearn文檔,4.3. 預處理數(shù)據(jù),https://www.studyai.cn/modules/preprocessing.html

2、幾種數(shù)據(jù)預處理方法綜述,https://www.pythonf.cn/read/152530

3、特征歸一化特性及其數(shù)學原理推導,http://www.bewindoweb.com/216.html

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

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

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