機器學習系列 5:特徵縮放

  • 2019 年 10 月 7 日
  • 筆記

首先我們應該了解一下多元線性回歸。相比於單變數線性回歸,該函數擁有多個變數值,那麼他所擁有的參數就不僅僅是一個或者兩個,而是多個。例如下面這個函數:

如果把該函數的參數 θ 和變數 x 全部寫成向量的形式,就可以簡化成下面這個函數:

如果你想預測房價,現在有兩個變數 x1 和 x2 來控制房子的價格。 x1 為房子的大小,範圍在 0 到 2000,x2 為房子中卧室的數目,範圍在 0 到 5,那麼畫出這個代價函數的輪廓圖就是這個樣子,一個扁扁的橢圓形。

對這個函數進行梯度下降,就是紅線的過程,你會發現,這個路程很長很曲折,這樣我們進行梯度下降所花費的時間就會很長。那麼我們應該怎樣來縮短這個時間呢?先從這個圖來下手。你看這個圖,麻麻賴賴的,一點都不圓潤,怎麼辦?盤它!(手動狗頭)

給它變成這個樣子不就好辦了嗎。怎麼盤?肯定不能用手盤呀,這裡就要用到特徵縮放(Feature Scaling)。將變數 x1 和 x2 都縮放到一個範圍中,我們將他們都縮放到 -1 到 1 這個範圍內。最簡單的方法就是將 x1 除以 2000(因為他的範圍就是 0-2000), x2 除以 5。現在變數 x1 和 x2 的範圍全部都在 -1 到 1 這個區間了,但是又出現一個問題,你發沒發現,現在經過處理之後的數據全是正值,不分散,那麼我們就要用稍微複雜一點的方法進行特徵縮放。用均值歸一化(Mean normalization)的方法處理數據:

其中 μn 為平均值,Sn 為標準差,也可以用這個變數最大值與最小值的差。現在你就會發現,數據既有正值也有負值,分散在-1 到 1 這個區間,進行梯度下降就很快啦。

Tags: