數據預處理:標準化,歸一化,正則化 - 知乎

1. 歸一化(Normalization)html


歸一化 (Resaling) 通常是將數據映射到指定的範圍,用於去除不一樣維度放入量綱以及量綱單位。常見的映射範圍有 [ 0, -1 ] 和 [ -1, 1],最多見的歸一化方法就是 Min-Max 歸一化:python

涉及距離度量、協方差計算時不能應用這種方法,由於這種線性等比例縮放沒法消除量綱對方差、協方差的影響。網絡

min_max_scaler = preprocessing.MinMaxScaler()
data_T_minmax = min_max_scaler.fit_transform(data.T)
data_minmax = data_T_minmax.T


2. 標準化(Standardization)dom

最多見的標準化方法:Z-Score 標準化。機器學習

其中μ是樣本均值,σ是樣本數據的標準差。函數

上圖則是一個散點序列的標準化過程:原圖 -> 減去均值 -> 除以標準差。學習

顯而易見,變成了一個均值爲 0 ,方差爲 1 的分佈,下圖經過 Cost 函數讓咱們更好的理解標準化的做用。優化

機器學習的目標無非就是不斷優化損失函數,使其值最小。在上圖中,J (w, b) 就是咱們要優化的目標函數。spa


咱們不難看出,標準化後能夠更加容易地得出最優參數 w 和 b 以及計算出 J (w, b) 的最小值,從而達到加速收斂的效果。3d

注:上圖來源於 Andrew Ng 的課程講義

from sklearn import preprocessing
import pandas as pd
import numpy as np
mean=[4,3]
cov=[[2.0,5.],[1.,1.]]
x=np.random.multivariate_normal(mean,cov,7)
data=pd.DataFrame(x)

scaler = preprocessing.StandardScaler().fit(data.T) #對行作標準化處理
data_T_scale = scaler.transform(data.T)
data_scale = data_T_scale.transpose()

3. 正則化(Regularization)

正則化主要用於避免過擬合的產生和減小網絡偏差。

正則化通常具備以下形式:

其中,第1項是經驗風險,第2項是正則項,λ>=0 爲調整二者之間關係的係數。

第1項是經驗風險較小的模型可能較複雜(有多個非零參數),這時,第2項的模型度會較好。

常見的正則項有L1正則和L2正則,其中L2正則的控制過擬合的效果比L1正則的好。

正則化的做用是選擇經驗風險與模型複雜度同時較小的模型。

Lp​範數:LpLp​正則的L是指LpLp​範數,其定義是:

在機器學習中,若使用了∣∣w∣∣p∣∣w∣∣p​做爲正則項,咱們則說該機器學習引入了Lp​正則項。


L1 正則 Lasso regularizer

凸函數,不是到處可微

獲得的是稀疏解(最優解常出如今頂點上,且頂點上的w只有不多的元素是非零的)


L2 正則 Ridge Regularizer / Weight Decay

凸函數,到處可微;易於優化。


normalizer = preprocessing.Normalizer(copy=True, norm='l2').fit(data.T)
data_T_normalize=normalizer.transform(data.T)

————————————————

參考:

Dave:ML 入門:歸一化、標準化和正則化

利用sklearn對數據預處理:標準化,歸一化,正則化 - 熊貓blue - 博客園

相關文章
相關標籤/搜索