數據特徵 歸一化/標準化 方法

歸一化/標準化 定義

  • 歸一化:就是將訓練集中數值特徵的值縮放到0和1之間。公式如下
    在這裏插入圖片描述
  • 標準化:就是將訓練集中數值特徵的值縮放成均值爲0,方差爲1的狀態。公式如下
    需要先計算出均值和標準差,下面是標準差的計算公式
    在這裏插入圖片描述
    μ表示均值,x*表示標準化的表達式
    在這裏插入圖片描述

優點

  • 加快了梯度下降求最優解的速度。

例子如下,左圖代表沒處理過的數據,最優解的求值可能會比較緩慢,例子如下,左圖代表沒處理過的數據,最優解的求值可能會比較緩慢,而右圖是歸一化後的,明顯收斂速度更快。
在這裏插入圖片描述

  • 提升模型精度

例如,在KNN類算法中。我們需要計算每個點與分類點之間的距離,當我們沒有進行歸一化操作的時候,取值範圍大的特徵佔據主導因素,導致其他特徵的影響極小,這樣會影響到最後的結果。

什麼情況下必須進行標準化/歸一化?

  • 當你的損失函數,有L1或者L2懲罰項時,必須使用標準化/歸一化,因爲不用正則時,我們的損失函數只是僅僅在度量預測與真實的差距,加上正則後,我們的損失函數除了要度量上面的差距外,還要度量參數值是否足夠小。而參數值的大小程度或者說大小的級別是與特徵的數值範圍相關的。
  • Kmeans,KNN一些涉及到距離有關的算法,或者聚類的話,都是需要先做變量標準化的。
  • 調用SVM的RBF內核和PCA算法

怎麼進行標準化/歸一化?

這裏我們引用sklearn中自帶的數據,來進行操作
導入數據

from sklearn.datasets import load_iris
iris = load_iris()
iris.data

標準化

from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(iris.data)

歸一化

from sklearn.preprocessing import MinMaxScaler
MinMaxScaler().fit_transform(iris.data)

另外,我們要先拆分出test集,不要在整個數據集上做標準化,因爲那樣會將test集的信息引入到訓練集中,這是一個非常容易犯的錯誤!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章