[斯坦福大學2014機器學習教程筆記]第四章-多元梯度降低法演練Ⅰ:特徵縮放

    在本節和下一節中,咱們將介紹一下梯度降低運中的實用技巧。本節主要介紹一個稱爲特徵縮放的方法。機器學習

    這個方法以下:若是你有一個機器學習問題,這個問題有多個特徵。若是你能確保這些特徵都處在一個類似的範圍(即不一樣特徵的取值在相近的範圍內),那麼這樣梯度降低法就能更快地收斂。具體來講,假如如今有一個具備兩個特徵的問題,其中x1是房屋大小,取值爲0-2000,x2是臥室的數量,取值爲1-5。若是咱們畫出代價函數J(θ)的等值線大概以下圖所示。函數

    (J(θ)實際上是關於θ0,θ1,θ2的函數,可是咱們在這裏暫時不考慮θ0,假設這個函數的變量只有θ1,θ2)咱們會發現,x1的取值範圍要遠大於x2的取值範圍,那麼它會呈現出一種很是歪斜並且橢圓的形狀。實際上,2000:5的比例會讓這個橢圓更加細長。學習

    若是咱們在這種代價函數上運行梯度降低的話,可能須要花很長的一段時間,而且可能會來回波動,最終纔會收斂到全局最小值spa

    對於這種狀況,咱們有一種有效的方法是進行特徵縮放。具體來講,咱們將x1定義爲房屋大小/2000,x2定義爲臥室的數量/5。那麼代價函數J(θ)的等值線就不會像以前同樣偏移得十分嚴重了。並且,在這種代價函數上運行梯度降低的話,咱們會找到一條更直接的路徑3d

    所以,經過這些特徵縮放,兩個變量的取值範圍變得十分相近。在上面的例子中x1和x2的取值都在0到1之間。這樣咱們的梯度降低法就能更快地收斂。blog

    更通常地,咱們在執行特徵縮放的時候,一般狀況下咱們的目的都是將特徵的取值約束在-1到1的範圍內。根據上一節所設的x0=1,顯然它已經在這個範圍內了,但對於其餘的特徵,咱們可能須要經過除以不一樣的數來讓它們處於同一個範圍內。其實-1到1這個範圍並非嚴格去規定的,如0≤x1≤3,-2≤x2≤0.5這些也是能夠的。可是,若是-100≤x3≤100,這個範圍就有點大得太多了,因此這個多是一個範圍不太合適的特徵。一樣的,若是-0.0001≤x4≤0.0001,這個範圍就有點小得太多了,因此這個多是一個範圍不太合適的特徵。(能夠接受的氛圍:-1/3到1/3,-3到3)。變量

    除了將特徵值除以最大值以外,在特徵縮放中,有時咱們也會進行一個稱爲歸一化的工做。若是咱們能夠用xii來替換特徵xi讓特徵值的平均值爲0。可是,咱們並不須要將這一步應用到x0中,由於它老是等於1的。技巧

    在上面講到的例子中,咱們進行歸一化操做後,咱們會獲得方法

    根據這個,咱們能夠獲得一個新的x1和x2的取值範圍。im

  •     更通常的規律就是:咱們能夠將xi替換爲(xii)/si。其中μi是訓練集中特徵xi的平均值,si是該特徵值的範圍(最大值減去最小值),或者把si設爲變量的標準差。

    根據這個,其實上面的x2中的s2應該爲4,但其實並無太大的區別。特徵縮放並不須要太精確,咱們只是爲了讓梯度降低運行地更快一點。

相關文章
相關標籤/搜索