我們在訓練模型之前,有一個可以加快訓練速度的方法,那就是對訓練數據集進行標準化處理。
爲什麼需要標準化
z-score標準化
假設數據集的每一個訓練樣本只有兩個特徵x1、x2,那麼訓練集:
X=[x1(1)x2(1)x1(2)x2(2)......x1(m)x2(m)]
繪製出的圖形如圖所示,要對其進行標準化分爲兩步:
1、對訓練集進行零均值化處理,顧名思義,也就是處理後的數據集的均值爲零。
2、歸一化方差。即使方差變爲1。
#####分步講解:
1、怎樣來使均值變爲0呢?首先我們需要算出數據集的平均值:
μ=i=1∑m(Xi)
求得的均值是一個向量,這裏的x1是所有訓練樣本x1的均值。x2同理:
μ=[x1x2]
然後用數據集的每一項減去這個均值就可以使整個數據集的均值爲0了。
X=X−μ
所得X如下所示:
X=[x1(1)−x1x2(1)−x2x1(2)−x1x2(2)−x2......x1(m)−x1x2(m)−x2]
2、要使方差爲1,方差也就是數據偏離均值的程度,觀察圖(1)第二張圖,這是經過零均值化處理後的數據集,現在x1和x2的均值都爲0,我們看x1偏離原點(即均值)的程度是不是要大於x2。我們要對其處理以使x1、x2方差都爲1。我們首先算出數據集的方差。然後用數據集除以方差即可。
σ2=m1i=1∑m(Xi)2
X=σ2X
####總結:
對數據集進行標準化處理,就是讓數據集的均值爲0,方差爲1。把數據集映射到(-1,1)之間。
####總公式:X=σ2X−μ
除了z-score標準化還有另外的標準化、歸一化形式,待更…
爲什麼標準化可以加快訓練
reference:
1、吳恩達深度學習課程