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)
————————————————
參考: