天天看點

機器學習(一)- feature scaling

feature scaling

feature scaling(特征縮放) 的思想就是将所選特征的value都縮放到一個大緻相似的範圍。這樣做的目的是為了加快收斂,減少采用梯度下降算法疊代的次數。那麼為什麼feature scaling能做到這點呢。

下面我們将利用stanford的Andrew Ng教授的PPT來說明。

機器學習(一)- feature scaling

首先,“将所選特征的value都縮放到一個大緻相似的範圍”這句話在代價函數 $J(\theta) $ 的contour map的呈現就是contour大緻是個圓形(當然這是針對我們隻有兩個feature的時候,多feature可以推廣)。

接下來我們要證明contour map越圓,收斂就越快。如果這一點說明了,那麼feature scaling也就能達到加快收斂的目的。

上圖中左邊的例子,feature x 1 x_1 x1​ 的範圍0-2000,feature x 2 x_2 x2​ 的範圍1-5,範圍相差很大,導緻contour map呈現出一個比較誇張的橢圓形,我們知道我們是要運用梯度下降去求解 θ 1 \theta_1 θ1​ 和 θ 2 \theta_2 θ2​ 使得 J ( θ ) J(\theta) J(θ) 達到最小值(梯度下降沿着負梯度對參數 θ \theta θ 進行調整)。可以想象,如果contour map特别橢,除非我們的起始點剛好很靠近橢圓的軸(幾率很小,起始點一般都是随機取的),才有可能使我們的負梯度方向是基本指向最小值的方向的,否則的話,我們的負梯度方向就會向左邊例子裡一樣完全不是指向橢圓圓心并且會趨向于與短軸平行,這就非常可怕會造成圖中左邊例子這樣的zig-zag在長軸上反複橫跳,緩慢的向最小值逼近。

那麼接下來我要說什麼,我感覺你應該已經猜到了,對。讓我們反觀右邊例子,如果contour很圓,那麼無論我們從哪裡開始,我們的負梯度方向都是基本指向圓心(最小值)的,這樣的話,每一步我們都最大的靠近了最小值(在learning rate定了情況下),當然我們的疊代次數就少了,也就加快收斂了。

Andrew Ng還指出一般我們選擇将feature的value落在 [ − 1 , 1 ] [-1, 1] [−1,1], 但是我們不需要嚴苛的要求一定滿足 [ − 1 , 1 ] [-1, 1] [−1,1],其實左邊界在 [ − 3 , − 1 3 ] [-3, -\frac{1}{3} ] [−3,−31​],右邊界在 [ 1 3 , 3 ] [\frac{1}{3}, 3 ] [31​,3] 就可以了,也就是不能太大也不能太小。那麼如何一步到位呢。就需要用到mean normalization(均值歸一化)。這個就很簡單了:

x : = x − μ s x := \frac{x-\mu}{s} x:=sx−μ​

μ \mu μ 就是training set的該feature的value的均值, $s $ 可以是value的range(最大值-最小值),也可以是value的标準差。

繼續閱讀