歸一化/标準化 定義
- 歸一化:就是将訓練集中數值特征的值縮放到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集的資訊引入到訓練集中,這是一個非常容易犯的錯誤!