数据预处理|关于标准化和归一化的一切
數據預處理是最令數據科學家頭禿的工作
之前在知乎看過一個問題你為什么離開數據科學行業?一位知友est答曰:數據清洗10小時,擬合2分鐘,如此重復996。
這條回答下面的評論更是精彩,居然真的會眼瞎。。。
之前推送過一篇數據處理方面的文章,整理一份詳細的數據預處理方法
里面有一個問題沒有說清楚,而且網上很多博客和公眾號推文也都寫的有點亂,這就是歸一化(Normalization)和標準化(Standardization)的事。
本文重點說以下三點
歸一化和標準化之前的關系
為什么要歸一化和標準化
哪些機器學習模型需要做歸一化
如何做歸一化和標準化
歸一化和標準化之前的關系
這是目前最混亂的。
在統計學里并沒有Standardization,只有Normalization,不管是把數據變為均值為0,方差為1的正態分布,還是把數據映射到[0,1],都叫Normalization,其包括如下幾種公式:
但是在機器學習領域,Normalization分為兩個,一個是min-max normalization,,一個是Mean normalization:,機器學習里的Standardization特指把數據分布變為正態分布,
從sklearn的preprocessing里,不管是把數據分布變為均值為0,方差為1的正態分布還是把數據縮放到[0,1]都叫Standardization,當然把數據縮放為[-1,1]也叫Standardization,preprocessing里的Normalization里只包括正則化,即把x除以L1-范數或L2范數。
綜上,把數據變為正態分布是標準化,把數據的范圍縮放到[0,1]是歸一化。
歸一化/標準化的意義
1)歸一化后加快了梯度下降求最優解的速度
這個圖來自吳恩達的機器學習課程,被引用無數次了。藍色的圈圈圖代表的是兩個特征的等高線,左圖兩個特征X1和X2的區間相差非常大,X1區間是[0,2000],X2區間是[1,5],其所形成的等高線非常尖。當使用梯度下降法尋求最優解時,很有可能走“之字型”路線(垂直等高線走),從而導致需要迭代很多次才能收斂;而右圖對兩個原始特征進行了歸一化,其對應的等高線顯得很圓,在梯度下降進行求解時能較快的收斂。因此如果機器學習模型使用梯度下降法求最優解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。
2)歸一化有可能提高精度
一些分類器需要計算樣本之間的距離(如歐氏距離),例如KNN。如果一個特征值域范圍非常大,那么距離計算就主要取決于這個特征,從而與實際情況相悖(比如這時實際情況是值域范圍小的特征更重要)。
哪些機器學習算法需要歸一化
1)需要使用梯度下降和計算距離的模型要做歸一化,因為不做歸一化會使收斂的路徑程z字型下降,導致收斂路徑太慢,而且不容易找到最優解,歸一化之后加快了梯度下降求最優解的速度,并有可能提高精度。比如說線性回歸、邏輯回歸、adaboost、xgboost、GBDT、SVM、NeuralNetwork等。需要計算距離的模型需要做歸一化,比如說KNN、KMeans等。
2)概率模型、樹形結構模型不需要歸一化,因為它們不關心變量的值,而是關心變量的分布和變量之間的條件概率,如決策樹、隨機森林。
歸一化/標準化如何實現?
這一部分實在沒辦法詳解,最好的辦法就是閱讀文檔,動手練習!
sklearn.preprocess模塊官方文檔
https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing
apachecn小組已將sklearn漢化,請移步
https://sklearn.apachecn.org/#/docs/40?id=_53-預處理數據
參考
https://www.jianshu.com/p/45430e476a7b
https://www.zhihu.com/question/20467170
https://zhuanlan.zhihu.com/p/30358160
https://www.cnblogs.com/LBSer/p/4440590.html
https://blog.csdn.net/u014535528/article/details/82977653?
https://www.zhihu.com/question/20455227/answer/197897298
關于本站
“機器學習初學者”公眾號由是黃海廣博士創建,黃博個人知乎粉絲22000+,github排名全球前110名(32000+)。本公眾號致力于人工智能方向的科普性文章,為初學者提供學習路線和基礎資料。原創作品有:吳恩達機器學習個人筆記、吳恩達深度學習筆記等。
往期精彩回顧
那些年做的學術公益-你不是一個人在戰斗
適合初學者入門人工智能的路線及資料下載
吳恩達機器學習課程筆記及資源(github標星12000+,提供百度云鏡像)
吳恩達深度學習筆記及視頻等資源(github標星8500+,提供百度云鏡像)
《統計學習方法》的python代碼實現(github標星7200+)
精心整理和翻譯的機器學習的相關數學資料
首發:深度學習入門寶典-《python深度學習》原文代碼中文注釋版及電子書
備注:加入本站微信群或者qq群,請回復“加群”
加入知識星球(4300+用戶,ID:92416895),請回復“知識星球”
總結
以上是生活随笔為你收集整理的数据预处理|关于标准化和归一化的一切的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带你少走弯路:强烈推荐的Keras快速入
- 下一篇: 方程组的几何解释 [MIT线代第一课pd